機械学習モデルの精度を競うコンペティションプラットフォーム「Kaggle」

大久保渉太氏(以下、大久保):本日の流れです。本日はこれらの目次の内容を通して、みなさんにKaggle Grandmasterの仕事や働く環境を一歩踏み込んで紹介できればと思っています。まずは私たちが取り組んでいるKaggleの紹介をしたいと思います。

Kaggleをご存じの方もけっこういると思いますが、機械学習モデルの精度を競うコンペティションのプラットフォームです。このKaggleに参加している人をKagglerと呼びます。DeNAには、Kaggle Grandmaster4名など、世界トップクラスのKagglerが数多く在籍しています。

図のように、Kaggleではスポンサーが出した課題に対して参加者が機械学習の予測モデルを提出してそのスコアを競っています。成績上位者であるKaggle Grandmasterは、全Kagglerの中の0.1パーセントほどなのでけっこう希少な存在かなと思います。

DeNAではKaggle社内ランク制度が導入されていて、実績に応じて業務時間中にKaggleを取り組むことが可能です。実態として、業務の30パーセント前後で取り組んでいる人が多いと思います。(スライドを示して)こちらがチーム発足以来のKaggle上の主要な実績です。上位入賞は数多くあり、書ききれないので省略していますが、その他、さまざまな国内コンペやオフラインコンペでも入賞実績があります。

登壇者の紹介

次に本日の登壇者を紹介したいと思います。本日、司会進行を務める大久保と申します。会社ではKaggleのハンドルネームのpocketと呼ばれることが多いです。ネット上で僕をご存じの方は本名は知らず、ハンドルネームのほうだけを知っていると思います。

会社ではマネージャーをやっていて、Kaggleではテーブルデータのコンペなどに多く出場しています。

続いてパネリストの紹介をします。島越さんよろしくお願いします。

島越直人氏(以下、島越):島越直人と申します。私は2019年にDeNAに入社をして、2020年から現在に至るまでMobility Technologiesという会社に出向しています。仕事では主にタクシーアプリの「GO」というアプリのデータを用いて、ここに挙げているようないろいろなプロジェクトに携わっています。

いろいろなデータに触れることが好きなので、Kaggleではデータのドメイン問わず、画像コンペだったり自然言語処理のコンペだったり、いろいろなコンペに出ています。今日はよろしくお願いいたします。

大久保:ありがとうございます。では続いて横尾さん、よろしくお願いします。

横尾修平氏(以下、横尾):横尾修平と言います。DeNAには2020年に入社して、ちょうど2年間ぐらい働いていることになりますかね。入社したての頃はスマホゲーム『逆転オセロニア』のシステム内のデッキ推薦ロジックを開発していました。また、現在に至るまでけっこうメインにやっていたのは、横浜DeNAベイスターズのチーム強化プロジェクトです。

Kaggleはlyakaapというハンドルネームで参加していて、ほぼ画像コンペで、たまにテキストを扱うコンペに出ています。本日はよろしくお願いします。

大久保:ありがとうございます。では最後に藤川さん、よろしくお願いします。

藤川和樹氏(以下、藤川):藤川和樹と言います。2014年に新卒で入社したので、今8年目です。今は横尾さんと一緒で、横浜DeNAベイスターズのチーム強化プロジェクトに関わっています。KaggleではKFというハンドルネームで活動しています。もともと専門としていた自然言語処理や過去に創薬支援もやったことがあるので、化合物を扱うコンペに参加しています。本日はよろしくお願いします。

タクシーアプリ「GO」における取り組み

大久保:では次に、登壇者が取り組んでいるプロジェクトの紹介に移りたいと思います。まずはタクシーアプリGOでの取り組みについて紹介します。島越さん、よろしくお願いします。

島越:最初に紹介したように、私はMobility Technologiesという会社に出向していて、タクシーアプリGOのデータを用いた仕事をしています。

例えば乗務員さんに対して、どのようなルートを通ればお客さんを拾いやすくなるかルートを提示する「お客様探索ナビ」といったサービスや、タクシーの配車を予約できる「AI予約」機能の開発など、新規サービスの開発や、基盤の技術であるマップマッチというものに対して精度改善のタスクを行っています。

タクシーの供給量をリアルタイムで予測する「AI予約」

今挙げたプロジェクトから事例をいくつか紹介いたします。この「AI予約」という機能は、タクシーアプリGOに現在組み込まれている機能ですが、25分後から7日後までの日時を指定してタクシーを手配する機能です。これはGOで集めた膨大な位置情報データから、例えば今から30分後にはこれぐらいのタクシーの供給量が見込めそうだよねという供給量を機械学習でリアルタイムに予測します。

さらにその予測結果を用いて、裏では予測成功確率を算出する確率モデルを作成しています。その予測確率が閾値以上であれば予約可能とするロジックを裏で持っているシステムです。

GPS点を道路のデータと紐づけるマップマッチ

次にマップマッチについて紹介いたします。みなさんも「Googleマップ」などのマップアプリで、自分がどこにいるかというGPS点を目にすることがあると思うのですが、そのGPS点が実際にどの道路上に乗っているのか紐づけをする技術がマップマッチです。GPS点を道のデータに紐づけてデータ処理を行った結果を用いてさまざまなサービスが展開されているので、この精度は非常に重要です。

Kaggleでも類似コンペが開催されて、僕も参加したのですが、けっこう興味が持たれている分野なのかなと思っています。古典的な技術である隠れマルコフモデルだったり、カルマンフィルタなどが最先端の企業でも用いられていて、最近のディープラーニングで使われていない基盤の技術が活躍する分野となっています。

「AI予約」のメリットと、マップマッチのデータソースに関する疑問

大久保:ありがとうございます。僕からも質問をしたいのですが、このAI予約はどういったことがユーザーにとってうれしいんですか?

島越:今までは乗務員さんを数時間前とか数十分前から確保する必要があって、拘束できる乗務員さんも限られているので、予約枠数が限られるという問題があったんですね。今回の予測と組み合わせることによって、乗務員さんの拘束時間が減るし、ユーザーにとっては予約枠数が増えるという意味で、両方にとってうれしい機能となりました。

大久保:なるほど。マップマッチに関しても教えてください。こちらはディープラーニングが使われないということですが、それはなぜでしょうか。マップマッチはオープンソースなどで使えるものがありそうですが、そういうのを使うのはダメなんですか?

島越:なぜディープラーニングが使われていないのかという点ですが、正解データがそもそも準備しにくいというのと、外挿が発生しやすいという問題の2点が挙げられます。正解データを作成するには、精度の高いGPS受信機を各タクシーに設置する必要があるのですが、その機器が数百万円するので、すべてのタクシー車両に取り付けるのは現実的ではないという問題があります。

また、学習させる時に緯度・経度を特徴量にして、正しい道を予測するタスクが考えられると思うのですが、機械学習的にやろうとすると、訓練データであらゆる地方の緯度・経度を確保しなければならないので、難しいのかなという問題があると思っています。

大久保:ありがとうございます。

島越:2つ目のオープンソースについての質問ですが、もちろんオープンソースのものもあるのですが、日本の道路の特性に合わせたり、ヒューリスティックな処理を追加したりするのが結局しにくいので、私たちは内製化しています。

プロ野球のデータを用いた横浜DeNAベイスターズのチーム強化プロジェクト

大久保:ありがとうございます。次に横浜DeNAベイスターズのチーム強化プロジェクトを紹介したいと思います。藤川さん、横尾さんよろしくお願いします。

藤川:私と横尾さんは、横浜DeNAベイスターズのチーム強化ということで、選手のプレーの質の向上に貢献するために、プロ野球のプレー結果、センサーのデータ、試合映像などを使って、分析をしています。いくつかプロジェクトはありますが、今日はキャッチャーの守備と、スイング動作の解析の2点を紹介したいと思います。

キャッチャー守備、ブロッキングの分析

まずはキャッチャーの守備の分析です。守備にはいろいろな要素があり、その内の1つにブロッキングと呼ばれる守備があります。これはピッチャーが暴投してしまった時などに、後ろに逸らさずに前で止めることでランナーを進塁させない技術です。

一つひとつのプレーを見ると、ランナーの塁を1つ進めるかどうかというところではありますが、シーズンを通して見るとそれなりに守備機会があるので、失点数を増やすか減らすかというところにつながってくる重要な技術として考えられています。

実際に私たちが実施したことを紹介いたします。トラックマンという一球一球のセンサーのデータですね。スピードやコースのデータを使いながら、平均的なキャッチャーだったらどれぐらいの確率でブロッキングできているのかというモデルを学習させます。

そのうえで、平均的なキャッチャーと比べてこのキャッチャーはどういった難しい球を止めているか、逆に苦手なブロッキングのシナリオがあるのかというところを解析して、その結果をコーチや選手に提供しています。

大久保:野球は公式のデータが残っていると思っているのですが、公式の暴投のデータを使うのはダメなんですか?

藤川:確かにワイルドピッチやパスボールの記録は公式でも残っていますが、実際に、ワイルドピッチした投球がどれぐらいキャッチャーにとって難しいブロッキングのプレーだったのかという記録は残っていません。

また、他のキャッチャーだと後ろに逸らしてしまっていたプレーで、そのキャッチャーがうまくブロッキングしたという記録が残っていないので、そういった情報も含めて分析をしたい場合は、機械学習のモデルが必要になります。

動画解析によってバッティング動作を解析

大久保:ありがとうございます。次のスイング分析の話に行きたいと思います。横尾さん、お願いします。

横尾:最近だと、ブロッキングの他にバッターのスイング動作の分析をやっていました。これは何かというと、動画解析によってバットの軌道などのデータを抽出して、それらによってバッティング動作を解析するというものです。

モチベーションとしては、スイングの特徴やコースの得意・不得意などの傾向を分析したいというものです。スイング分析のためのデータの収集は、従来はけっこう人手でやっていて莫大なコストがかかっていました。ちなみにどのくらいデータ収集に時間がかかるかというと、解析対象のデータは複数視点の動画になっているので、1球あたり約400枚ものフレームの画像に対して一枚一枚アノテーションする必要があって、それを含めてだいたい1球あたり2時間ぐらいかかっていた実情があります。

しかも、バットに点を打つだけで(スライドを示して)これぐらいかかっていたので、体の関節点のデータの取得はとてもじゃないけど現実的じゃないという状況でした。なので、データがスケールせずに分析の幅に限界が来てしまうという課題がありました。その課題を解決するために、私たちは複数視点の動画を使ったバッターの三次元キーポイントと、座標を推定するモデルを構築して、データ収集作業の自動化による大幅な工数削減を達成しました。

要件やデータの性質が少し特殊だったので、世の中にあるキーポイント推定のモデルを素直に持って来ても、解析に耐える検出精度にはなりませんでした。しかも検出精度がスイング分析の質そのものに直結するので、要求される精度水準もとても高く、高精度なものを自前で用意する必要があったので、要件やデータの特性を踏まえて、この課題に最適なアルゴリズムを自分たちで開発しました。

大久保:ありがとうございます。これは結果として実用に耐えうるモデルになったんですか?

横尾:そうですね。手作業で丁寧にラベリングしていた頃と比べて、遜色ない水準の精度で、比較的省コストにキーポイントを推定できるようになって、結果として大量のバッティング動作を分析することが可能になりました。

スライドの右下のアニメーションは、実際の試合のデータを使って三次元のキーポイント座標を推定した結果です。このように滑らかに、精度良く推定できていることがわかります。ここでは過去のKaggleの経験がけっこう活きたので、Kagglerを有するチームだからこその成果ではないかなと思います。

業務とKaggleのバランスをどう取っているか

大久保:ありがとうございます。Kagglerの力が活きているようでうれしいです。ここからは対談パートに移りたいと思います。ではさっそくですが、第1問「どのように業務とKaggleのバランスを取っているのでしょうか?」

今みなさんから仕事の話をしていただきました。Kaggleの実績もあってすごいなと思うのですが、このバランスをどうやって取っているのかを聞いていきたいと思います。ではまず島越さん、どうですか?

島越:私の場合、コンペをやる期間と業務をやる期間はけっこうはっきり分かれています。Kaggleをしばらくやったあとは、業務に集中する期間を作っています。ただ、Kaggleと業務を並行にやらないとダメな時もあるので、コンペの期間が残り1週間ぐらいまではKaggleのことはあまり考えず業務をメインにやって、コンペまで残り1週間とかになるとKaggleの比重が多くなっていくという感じですかね。

大久保:けっこうメリハリをつけてやっているんですね。

島越:そうですね。僕は並列にコンペはできない体になっていまして(笑)。

(一同笑)

大久保:なるほど。横尾さんはどうですか?

横尾:そうですね。僕もけっこう島越さんと一緒で、わりと並行してやっていくのが苦手なタイプなので、けっこう柔軟にやっています。例えばプロジェクトが忙しい時期はKaggleをせずに業務に専念して、やりたいコンペが出てきて、プロジェクトも落ち着いてきたらKaggleに丸々1週間割く、みたいな時間の使い方をしていますね。

先ほどKaggle制度の説明がありましたが、DeNAでは工数の3割をKaggleの時間に割いても良いとなっています。他の会社の知人に制度について聞いてみると、そういう制度はあるけれど、実際のところ忙しくて、その制度を活用するのがはばかれるということをよく聞きます。

それで形骸化してしまっているという話は聞くのですが、DeNAの場合はそんなことはなくて、Kagglerではない人たちも理解があって、わりと気軽に「僕今週はKaggleやります」ということが受け入れられるし、実態としてみんなけっこうバンバンKaggleの時間を取っていますね。

大久保:ありがとうございます。藤川さんはどうですか?

藤川:僕も2人とほとんど一緒で、やはり仕事で忙しい時期は業務を優先することが多いかなと思います。

私たちのチームは、スクラムという開発手法を採用していて、それぞれのメンバーの稼働の時間に合わせて、この1週間は何の仕事をするのか、と決めるので、特にコンペの終盤の時は、「ちょっとKaggleのほうに時間を使わせてください」というかたちで業務調整をしている感じですね。

Kaggle社内ランク制度があったからGrandmasterになれた

大久保:ありがとうございます。では、次のお題に移りたいと思います。「もしKaggle制度がなかったら、Grandmasterになれなかったですか?」ということで、DeNAのKaggle環境は本当にプラスに働いているのかというのは、マネージャーの僕としても気になります。ということで、今回も島越さんからお願いしてもいいですか?

島越:私の場合、取得した金メダルは全部DeNAに入ってからのものなので、DeNAのKaggle制度がなかったら、GM(Kaggle Grandmaster)にはなれなかったんじゃないかなと考えています。

慣れているドメインのコンペならまだしも、やったことのないドメインのデータだと、けっこうイチから勉強する必要があるので、業務時間外にそれもやって上位に行くのはけっこう厳しいものがあると思っています。

なので、子育てしながらとか、Kaggle制度もなしに金メダルを取っている人とかは、メチャクチャ尊敬しています。あとは、NN(Neural Network)コンペなどが最近増えているので、会社としてリソースを出してくれるのもうれしい点かなと思っています。

大久保:ありがとうございます。では続いて、横尾さんはどうですか?

横尾:実は僕は、入社した時にすでにGrandmasterだったのですが、社会人になったらわりとコンペをする時間はないのではないかなと思っていました。ただ、そこはさっきも言ったようにKaggle制度があって、工数の3割が使えたり、計算リソースも会社がサポートしてくれるので、社会人になってからもコンスタントに結果を出せているのかなと思います。

大久保:ありがとうございます。では最後に藤川さんはどうですか?

藤川:計算環境や工数は、本当に2人が言ってくれたとおりなのでちょっと違う観点で言うと、制度というかたちで取ってくれていることで、本当に強いKagglerたちが集まっているなという実感があります。そうすると、毎回コンペが終わるたびに「上位入賞しました」と結果の報告が流れてくるんですね。

やっていない時期にそういうのを見ていると「負けていられないな」とまた始めちゃうというところがあって、それでKaggleを続けているところもあるので、そういう意味でもこの制度はGrandmasterに至るに必要だった制度だったと考えています。

大久保:環境を作るうえでも助かったという感じですかね。

DeNAから転職することは考えないのか?

大久保:ではここからは、視聴者からの質問パートに移りたいと思います。一番上の質問からなかなか挑戦的だと思うのですが(笑)。「Grandmasterになったら、他社からいい金額でオファーが来そうですが、転職はお考えにならないんですか?」ということで、どうしますかね(笑)。では島越さん、どうですか?

(一同笑)

島越:全部僕から質問が飛んできている気がするんですけど(笑)。

(一同笑)

今は転職活動をしていないので、どれくらいの金額でオファーがもらえるのかわかっておらず、ちょっと答えにくいんですけど。現職の給料に、プラス300万円とかプラス500万円とかのオファーをもらったら、心が揺れ動く気はしますね。

ただ、DeNAの会社の魅力として、Kaggle制度があったり、Kagglerがいっぱいいることで刺激がもらえたり、輪講でも自分が参加していないKaggleのコンペの解法について聞けたり、コンピューターリソースのサポートをしてくれたりなど、Kagglerがうれしい福利厚生がいっぱいあるので、あまり離れたくない環境ではあるなと思っています。

大久保:ちょっと良い話につなげてくれてました。

(一同笑)

他にこれについて話をしたい人はいますか?

(一同笑)

藤川さんはどうですか?

藤川:僕ですか?(笑)。ありがたいことに、転職や副業のお話をいただくことはありますが、結果、フラットに判断してDeNAに残っているとは思っているんです。その理由として、工数やKaggleの制度もありますし、先ほど野球やモビリティの話がありましたが、それ以外にもモバイルゲームだったりライブ配信だったりというかたちで、本当にいろいろな事業を幅広く展開しています。

なので、担当が変わると転職並みに、ぜんぜん違うタスクをやったり、ぜんぜん違うデータに触れたりすることができるので、飽きることがないというか、それぞれチャレンジがあるというところで、今も残っているのかなと思っています。

大久保:メチャクチャ良い話をありがとうございます。

次回へつづく