Kaggleとは?
レアジョブ機械学習エンジニアの間でブームになっていると噂の「Kaggle」ですが、そもそもKaggleって何なんですか?
データ分析を必要とする企業や政府と、データ分析に精通したデータサイエンティストとを繋ぐ一種のプラットフォームです。10万人近いデータサイエンティストが登録しているみたいです。
実際にコンペ形式でさまざまな課題投稿者からデータおよび課題が提出され、それに対して世界中の回答者が多様な手法を試しながら、最適なモデル構築を目指して競い合います。期限が訪れたタイミングで最も精度の高い分析モデルを提出できた回答者には、実際に課題投稿者から賞金が出るんです。
腕に覚えのある世界中のデータサイエンティストが集まる場所なんですね。皆さん、どういう目的で参加されているんですか?しょ、賞金目当てですか…?(笑)
いや、まさか。賞金を獲得するのは容易ではないです(笑) 私の場合は、Kaggleは腕試しとか自己研鑽のような位置付けですかね。家に帰って、夕飯を食べて、暇なタイミングでフラっと触るイメージです。
僕は大学にいた時から、Kaggleは時々覗いていたんですが、僕の場合自己研鑽というよりも純粋に趣味という感じですかね。元々、色んなデータを見たり、その使われ方を見るのが好きなんです。毎日ではないですが終業後に1~2時間、あと週末に長めに時間をとって触っています。
Kaggleは実務に生きるのか?
結構時間割いてるんですね。ところでKaggleって、普段の業務に生きてくるものなんですか?
間接的に生きてくることはありますね。Kaggleでは普段の業務で扱わないような色んなデータに触れることになりますが、その中で使った分析処理方法が、一般性の高いレベルで日常業務に転用できることがあります。
例えばどんな形で転用されるんですか?
Kaggleに、「Wi-Fiのセンサーデータを使って歩行者の位置を予測する」というものがあったんです。Wi-Fiの位置やスマホがキャッチしている電波を元に、そのスマホを持っている人がどこにいるのかを予測する、ということです。
おお、SF感ありますね。
そうですね(笑)それで、自然言語処理のアプローチの中にTransformerという有名なモデルがあるんです。これはGoogleが開発したモデルで、Attentionという手法をベースに作成されたものなのですが、文章の要素を抽出したり、文章を生成する、カテゴライズする、翻訳する等々の処理において非常に高い精度を発揮します。
このTransformerは、時系列データにも適用できることが知られていて、位置推定のために与えられたデータは、時系列データとして扱えるものでしたので、使えそうだなと思って実験をしていました。
理論や使用される場面などは知っていたのですが、Transformerを僕自身実際に触ってみたことはありませんでした。
Kaggleのコンペで実際に動かしてみるうちに物凄い可能性を感じたんです。これは、「PROGOS」(AIの自動採点システムを活用した英語スピーキングテスト)周りで活用できるかもしれないな、と。
基本的にTransformerは言葉等の関係性を学んでいくモデルなので、発話者の発する言葉をこのモデルに学習させていくことで、自動採点の精度を上げていくことができるのではないかということです。
なるほど。Kaggleで触れている中でピンと来るイメージなんですね。
あとは、逆に、普段業務で扱っているデータと似たようなデータに触れられるという機会もありますね。我々は「PROGOS」周りで音声データを主に扱っているのですが、Kaggleでも音声データに触れたことがあります。それは「鳥の鳴き声を判別する」というものだったのですが、同じ音声データだったので本業に生かせるような考え方が色々吸収できましたね。
レアジョブにおけるKaggleの立ち位置
ちなみに、Kaggleってレアジョブ内でどういう扱いになってるんですか?業務時間中にKaggleをイジるとさすがに怒られるんですかね?(笑)
去年末くらいからKaggleがチーム内で盛り上がってきて、今年2021年1月くらいに、制度にしようという話になったんですよね。今は業務時間の一部をKaggleに充てることが認められています。
おお、そうなんですね!実際、Kaggleを取り入れていくというのは、元々どういう狙いだったんですか?
元々技術本部では、エンジニアが集まる勉強会をやっています。非常に意味のあるもので知識の共有もできるのですが、どうしても実務に関する知識習得が中心になってしまうなと感じていました。
漠然とですが、もっと色んなデータに触れて理解度を高め、未知な課題に直面したときにどう扱うかという抽象的な方法論を機械学習エンジニアには持って欲しいと思ったんです。それでKaggleを取り入れることにしました。
なるほど。
例えば、新しい技術を学ぶ方法はさまざまにあると思います。独学することもあれば、実務を通して学ぶこともある。しかし、正直なところ重要なプロジェクトにアサインされて、「自分の経験のために」ということだけで、新しい技術に挑戦するのって難しいですよね。
そういう意味で、Kaggleは機械学習エンジニアの「挑戦の場」という意味合いも大きいです。失敗しても良い環境で模試を解いてもらっているイメージです。世界中のいろんな人が書いたコードを読みながら、まだ使ったことのない技術に挑戦していく。そんな時間にして欲しいと思っています。
Kaggleで何が変わった?
Kaggleの制度化から半年くらいが経って、技術面以外で何か変化ありましたか?
なんでしょう。チームでの会話が増えたことですかね(笑)
たしかに!
機械学習エンジニアの仕事の特性とも関係すると思うのですが、タスクが比較的明確な担当割りになるので、メンバーが集まってコミュニケーションとる機会が定例ぐらいしかなかったんです。
Kaggleに取り組むようになりチームでコンペに出始めてから、これが結構変わりましたね。データの構造や、データの特性を見定めていく過程だったり、あと他の参加者のモデルに関しての各々の見解だったり、皆でアレやコレやと議論することが増えました。
なんか楽しそうですね(笑)
私の場合は、前職、前々職と1人で仕事を進めていくことがほとんどだったので、今の状況は非常に新鮮です。
1人で黙々とデータに向き合ってきたので忘れていましたが、仲間と色々なやりとりがあるというのは、やっぱり良いものですね…。(笑)
一同:(爆笑)