僕は発展途上技術者

Kaggle

Kaggleという機械学習のコンペのプラットフォームがある。留学中の長男がこのコンペの一つで順位が確定し、銅メダルを取ったとのこと。参加者3000超のうち、上位0.2%が金、5%が銀、10%が銅を獲得できるのだそうだ。犬や猫の写真が与えられ、どれだけ可愛く見えるか数値で表されたその人気度を機械学習で推測するプログラムを書くというのがコンペの内容。マレーシアにあるPetFinder.myという保護犬、保護猫と引き取ってくれる飼い主とをマッチングさせるサービスで、写真を掲載するときに使われることも目的としている(プログラムや使われた学習済モデルは公開されるので、上位のモデルは実際に使われるのかもしれない)。人間でやったら炎上しそうな内容ではあるが、保護猫、保護犬をできるだけ可愛くみせることで、引き取ってくれる飼い主をより多くマッチングさせることができるというわけだ。

機械学習には興味があるもののコンペに出られるほどの専門知識を僕は持ち合わせていないので、LINEで相談されてもろくなアドバイスを返せてはいなかったのだけれど、コンペ最終日まで毎日変わるリーダーボード上の息子の順位を一喜一憂しながら眺めるのはなかなか楽しい。リーダーボードというのは順位表で、最終日まではテストデータとして犬や猫の写真のたとえば25%というように一部しか与えられていない。それらの写真と人気度が与えられているので、写真やそのほかにも与えられた情報を元に人気度を導くアルゴリズムや機械学習モデルをうまく作り出す。そして、コンペ最終日を過ぎると、それまで公開されていなかった残りの本番用データ75%に対して適用し、その結果で最終順位が決まる。この仕組みがなかなか面白く、最後まで順位がわからなくてハラハラドキドキする。実際、最終日手前までは長男の順位は銀メダル圏内だったのだが、それは予選みたいなもので、あくまで最終結果だけがすべてだ。ツイートのなかで shake-down とあるのは、最終結果でそれまでの順位より下がることを意味する Kaggle 用語のようだ。逆に順位が上がることを shake-up というのだそうだ。shake-down したが、なんとか銅メダル圏内に残ったという形だ。さらに、最終日後しばらくの期間、不正があったかどうか(まったく同じプログラムが提出されていないかどうかなど)が調査されるらしく、数日経った今日、順位が確定したらしい。

ほかにも、参加は一人でもあるいはチームでもできるらしく、チームの場合は、たとえばそれぞれでモデルを作成し、予想した結果の平均を取ったり、多数決で決めた結果を採用するといったアンサンブルという手法があったりするのだそうだ。アルゴリズムやプログラムの詳しい内容はわからなくても、ロボコンや e-sports の競技を観戦、応援しているような楽しさがある。

プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

オンラインコンテンツ: 大人のためのScratch

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ