2019年8月にLINE及びNaver社主催のAI RUSH 2019(通称LINEコンペ)に参加してきました。
とても楽しく学びの多いコンペだったので、少しでも伝わればと思い振り返りを書いてみました。
※機密保持のためコンペ課題の詳細や解法については触れていません。ご容赦ください。
コンペの概要
公式ページ:https://engineering.linecorp.com/ja/blog/announcement-ai-rush-2019/
- AI関連技術(機械学習など)を使って課題に取り組み、成果を競うコンペ
- 1~3名の個人またはチームで参加
- 全世界から100チームが参加する(100チームを超える場合は抽選)
- 予選と本選に分かれており、本選には予選の上位30チームのみ参加可能
- 基本はオンラインでの参加だが、本選の最後4日間は韓国でのオフライン開催
- NSMLというNaver社が用意しているプラットフォーム上で開発作業を行う
- 優勝賞金1万ドル、3位まで賞金あり
課題自体はKaggleでよくあるような問題でした。「オンラインとオフラインどちらもある」「NSMLという独自プラットフォーム上で開発する」という点がこのコンペの特徴だと思います。
私は運よく抽選に受かって参加できたのですが、後から聞いたところ応募は400チーム以上あったようで、そもそも参加するための抽選のハードルが高かったようです。日本以外からの参加者も大勢いて、韓国 40%・日本30%・台湾20%・その他10%くらいの比率でした。
私は勉強会で知り合った方と2人チームで参加しました。
予選(8/5~8/13)
予選の課題はImageClassification(画像の分類)でした。期間は1週間ほどでKaggleと比べるとかなり短く、期間中の試行錯誤も大事ですが同様のタスクに取り組んだ経験がないとつらいコンペだったと思います。
私は元々画像分類タスクにチャレンジしたことがなかったので、予選が始まる1週間前から急遽KaggleのAPTOSコンペに参加してKernelを読み漁り、キャッチアップに努めていました。結果的には、APTOSで勉強したことがとても役に立ったなと思います。
この予選で何より苦労したのが、NSMLという独自プラットフォームです。
- 簡易的なチュートリアルがあるものの、そもそもの学習~提出までの作法が分かりづらい
- JupyterNotebookのような形式ではないので、EDAやデバッグがしづらい
GPUが複数使えたりと非常に助かる面も多かったのですが、本選で会った方に話を聞いても同じような感想だったので、おそらくほとんどのチームが苦労したのではないかと思います。予選は100チームですが1度も提出していないチームが30チーム程いたので、NSMLの使い方が分からず離脱したチームも相当数いるのではないかと思っています。
私の場合はチームメイトが色々調べてくれて、学習や提出は早い段階でできるようになったのですが、これが予選通過できた大きな要因かなと思っています。
LINEコンペ2位に浮上!
3日ぶりにサブミット成功して一安心。 pic.twitter.com/1rWKwzNHMv— しゃおろん@機械学習勉強中 (@syaorn_13) August 9, 2019
結果的に、私たちのチームは3位で予選通過できました。最終日付近がお盆ということもあってか、目まぐるしく順位が入れ替わっていました。2人とも画像分類タスクが初であり、予選通過を目標にと頑張っていただけに、予想以上の結果ですごく嬉しかったのを覚えています。それと同時に、「もしかすると入賞いけるかも」という欲が出てきていました。
LINEコンペ3位で予選通過できました!
予選通過の30位が目標だったので、思ったよりいい順位で嬉しいです。
本選も全力尽くして頑張ります。 pic.twitter.com/eprDI4u32Q— しゃおろん@機械学習勉強中 (@syaorn_13) August 13, 2019
本選(8/19~8/29)
本選のタスクはClick-through rate prediction(クリック率予測)でした。詳細を言えないのがもどかしいのですが、予選よりも色んな種類のデータがあり、難易度は数段高かったです。
オンライン期間
オンラインでの開催期間ではチームメイトとほとんど毎日通話で議論をしながら、各自持ち帰って作業という繰り返しでした。NSMLの扱い方は予選の時にある程度分かっていたこともあり、開発作業の方に時間を割くことができました。
何としても入賞したい!という想いから、とにかく色々試行錯誤して実験をしていました。前知識がないので、とにかく試行回数を増やして上位陣に食らいつこうと必死でした。画像と違って学習時間が短いこともあり、体力的に結構きつかったのを覚えています。
以前twitterで流れてきた記事(データ分析コンペの初心者が楽しむためのポイントとは)で見た
一部のコミュニティーでは「テーブルデータコンペは勝つために人間性を捧げる必要がある」と言われるほど、時間と体力と精神力を要する
という文言が身に沁みて分かりました。
結果的にオンライン開発期間では上位5位くらいで終えて、韓国に向かいました。
何かでテーブルコンペは人間性を犠牲にするって聞いたけど、まさにそんな感じになってる。画像コンペと違って休むと罪悪感がすごい。
— しゃおろん@機械学習勉強中 (@syaorn_13) August 24, 2019
オフライン期間(韓国)
韓国には移動日を含めて4日間滞在しました。大変ありがたいことに、諸々の費用は主催者(LINE・Naver社)負担でした。
- 交通費(航空券や日本国内での移動費も含め)
- 宿泊費
- 食費
- 最終日の観光費用
念のため結構なお金を両替しておいたのですが、お土産を買う以外に1円も使わなかったので余りまくりでした。
また、滞在していたNaver社の施設(研修施設らしい)も素晴らしかったです。
- 建物が綺麗
- 食事はバイキング形式(全部美味しかった)
- ジムや体育館が24時間利用可能
- ボードゲーム等の遊び道具もある

部屋からの景色。少し曇っていますが、眺めがすごくいい。

食事はお肉がメイン。どれも美味しかった。

コンペのテーマ

おやつもある。食べすぎ注意。

景品としてもらったペン。ビンゴやトレジャーハントなど、開発の合間に楽しいイベントがたくさんありました。 もっと豪華な景品をもらっていた人も。

Tシャツも貰いました。最終日はみんなこれを着て開発作業。
正直、こちらが申し訳なるくらいの待遇でした。あまりにも居心地がいいので、もう1日くらい滞在してのんびりしたいなと思うくらいでした。
コンペの話に戻ると、オフラインでの開発はとても楽しかったです。各チームがまとまって時間をとっていることもあり、順位は結構入れ替わりますし緊張感もありました。チームメイトとも密にコミュニケーションが取れるので、作業自体も効率的に進んだと思います。
結果としては本選が8位で、予選と本選トータルで計算される最終スコアでは5位でした。(予選頑張っておいてよかった。)入賞したかったのでめちゃめちゃ悔しかったのですが、完全に自分の実力不足なのでもっと勉強しようと誓いました。
LINEコンペ5位でした!
予選3位から順位を落としてしまったのが悔しいですが、初心者なりに試行錯誤して強い人たちと競い合えたのはすごく勉強になったし、少しだけ自信になりました。
今後も勉強を続けて、次はkaggleのメダルを目標に頑張ります!
参加された皆様お疲れさまでした! pic.twitter.com/MYnX2jI1E8— しゃおろん@機械学習勉強中 (@syaorn_13) August 28, 2019
コンペが終わった後は、参加チーム及び主催者の方々との懇親会がありました。日本からは私たちを含めて6チームほど参加しており、1位チームのNYTさんを始めとして色々お話を聞かせていただき、とても勉強になりました。オフラインはこういう交流ができるので、とてもいいですね。
最終日には半日ほどですが、滞在していた春川(チュンチョン)観光もできました。トロッコはなかなかハードな乗り物でしたが、景色も良くいい思い出になりました。ダッカルビも美味しかったです。
まとめ
改めて振り返ってみて、とても楽しいコンペだったなと思います。課題自体も面白く学びが多かったですし、韓国でのオフライン開発は最高に楽しかったです。
また、自分としてはこのLINEコンペが機械学習の勉強を始めてから初めて目に見える成果を出せたコンペということもあり(Kaggleはメダルとれてなかった)、今後学習を継続していくうえでも少し自信になりました。
LINE及びNaver社の皆様、本当にありがとうございました。
参加された皆様、お疲れ様でした。
コメント