Kaggle Grandmasterになったので今までを振り返る
kaggleを始めてから3年半、ようやく1つの目標であったGMになることが出来ました。
前回の記事で最初の金メダルを取るところまでは書いたので、その続きとして金メダルを取ったコンペを中心に機械学習人生を振り返っていきたいと思います。
- 転職:2020年8月
- RSNA STR Pulmonary Embolism Detection:2020年10月
- SIIM FISABIO RSNA COVID-19 Detection:2021年5月
- Happywhale - Whale and Dolphin Identification:2022年2月
- (番外編) Kaggle Days World Championship:2022年10月
- RSNA Screening Mammography Breast Cancer Detection:2022年11月
- なぜ金メダルが取れたか
- これから
転職:2020年8月
kaggleで2位を取ったこともあり、転職活動はかなり順調に進みました。
Twitterで転職します宣言をしてからかなりたくさん声をかけていただいたんですが、結局自分からCTOにDMを送ったアイリスに入社することに。画像の経験無かったんですが、医療画像エンジニアとして取っていただき感謝です。ここから画像で戦えるようになるべく奮闘する日々が始まりました...
8月からアイリス株式会社 (https://t.co/dj9FbkWLDq)で働くことになりました!エンジニアとして医療の発展にコミットしていきます💪
— YujiAriyasu (@aryyyyy221) 2020年8月3日
業務中にkaggleOK、クラウド使い放題の最高な環境なので皆さん引き続き対戦よろしくお願いします🔥
RSNA STR Pulmonary Embolism Detection:2020年10月
RSNA STR Pulmonary Embolism Detection | Kaggle
入社して2ヶ月がたち少し画像に慣れてきたので、初めて画像コンペにがっつり参加することに。肺のCT画像の分類という医療画像ど真ん中のデータなこともあり、仕事中に堂々と参加させてもらいました。医療関係ないデータでも仕事中にやっていいんだけど...とにかく感謝...
dicomのreadに時間がかかるのに加えそもそも全体的にデータが大きく、testもpublic70GB/private230GBと時間内に推論するだけで一苦労なコンペでした。dicomの扱いに困惑しつつも、パフォーマンスチューニングのエンジニアリングが必要なこともあり比較的有利に進められました。
期間が1.5ヶ月と短めだったのも良かった。経験が足りない分を、スタートダッシュを切ることで補うことが出来ました。コンペ始まって2週間たったらもう残り1ヶ月なので、始めからハードワークするインセンティブが普通の3ヶ月コンペより大きかった。そういう意味では初級者の人は短めのコンペのほうが相対的に有利と言うことは出来ると思います。PEやっとbeseline出来た。が上が遠すぎる...おそらく別のゲームをプレイしていて、延長線上にはいない気がしている。どうしたものか pic.twitter.com/hBTNy5o84g
— YujiAriyasu (@aryyyyy221) 2020年9月23日
ということで序盤に金圏にいたところ声をかけてもらいチームマージ。なんやかんやあり、画像コンペで初の金メダルを獲得。kaggle masterに!
(コンペ最終盤に妻の親戚の集まりでホテルに泊まらせてもらったんですが、僕は攻めたsubが時間内に通らずに部屋に引きこもっておりました。あの時の焦り、今でも鮮明に思い出せる...いい思い出であります)🎉🎉🎉🎉🎉
— YujiAriyasu (@aryyyyy221) 2020年10月27日
シェイクが少ないコンペで金取れたのが嬉しい。みなさんお疲れさまでした! pic.twitter.com/tuBMPcFeBD
SIIM FISABIO RSNA COVID-19 Detection:2021年5月
SIIM-FISABIO-RSNA COVID-19 Detection | Kaggle
X線画像からcovid-19の分類をするタスク。こちらも始まってすぐ参加しました。画像にもだいぶ慣れていたこともあり、最初からずっと金圏に居続けることが出来ました。
そんな感じで頑張っていると、RSNAコンペ最強マンのIanPanからチームマージのお誘いメールが来ました。前回もそうでしたが、最初からちゃんと参加して中盤くらいまで頑張って上位を維持すると強い人とチーム組みやすいですね。この時は同コンペで金メダルのnoteを公開していたので、それも信頼を勝ち取るのに効果があったのかもしれません。対戦yoloしくお願いします pic.twitter.com/ruMf3vHVED
— YujiAriyasu (@aryyyyy221) 2021年6月15日
このままソロ金を目指すか迷いましたが、学びが大きそうなのでチームマージをして金メダルではなくtop3以内を目指すことに。
目標weight0.5で頑張ります🔥 pic.twitter.com/KZQCeNNTcN— YujiAriyasu (@aryyyyy221) 2021年7月7日
アンサンブルの効果高めようぜということでお互いのパイプラインで各々開発を続けました。なんやかんやあり、最終的に全く違う手法かつお互いソロ金を取れるくらいのモデルを作ることに成功、シンプルに混ぜたら3位に!別パイプライン&別手法でのアンサンブルはシンプルだけどほぼ必ず効く必殺技の1つですね。ということで3つ目の金メダルを獲得。
この時のチームマージの体験が良すぎたので、みなさんにも本当におすすめしたいです。ハードルは高いですがどうにか強い人と組んで、たくさんのことを学びましょう🔥3位で3回目の賞金!皆さんお疲れさまでした😌 pic.twitter.com/IHJQmnvLgr
— YujiAriyasu (@aryyyyy221) 2021年8月10日
(ちょうどオリンピックのタイミングで、「今アメリカ代表のバスケの試合見てるからあとでOOF送るよ」「あ、俺も今見てる!」などとカップルのようなやり取りをしたのが懐かしい...今回GMになったタイミングでもメールをくれて、 GMおめでとう またチーム組もうね とのお言葉をいただきました。いい奴すぎる...こちらこそまたお願いします)今回Ianに3位以内目指そうよと誘ってもらって、そこから我々の目標は3位以内になった。しかしそれとは別に、チームのソリューションを書かせてもらうというのを個人的な目標としてやってきたので、それが叶ってとても嬉しい。最終日にIanからもらった言葉は僕にとっては金メダルと同じ価値があった🥇 pic.twitter.com/wttDmSxFA7
— YujiAriyasu (@aryyyyy221) 2021年8月10日
Happywhale - Whale and Dolphin Identification:2022年2月
Happywhale - Whale and Dolphin Identification | Kaggle
クジラ/イルカの個体識別コンペ。そろそろソロ金が欲しいなと思いつつの参加。リソースの問題でkeras&TPUに入門することになりました。距離学習も初めてだったので色々と学びながらの参加でしたが、いつもどおり神notebookと神discussionがたくさんあり、あまり問題なく進められました。ありがとうkaggle。
始めた当初は、色々と初めて触る技術をキャッチアップしながら強豪相手にソロで金メダルを取るイメージがあまり沸かなかったので、色々なコンペをつまみ食いしてインプットの時期にしようか結構迷っていました。
クジラコンペ、強者が集まりそうでとてもいいですね。
— YujiAriyasu (@aryyyyy221) 2022年2月1日
このまま🐳続けるか、インプット期間として🐳鳥feedbackバスケLuxAIをつまみ食いするか本気で迷っている。🐳も0.8以下は始まっていないような感じだしなあ pic.twitter.com/wJ9lR75QLW
— YujiAriyasu (@aryyyyy221) 2022年2月19日
しかしコンペを進めていく中で意外とスコアが出たこともあり、徐々に色気が出てきます...あ、H&Mもやりたいんだった。面白そうで勉強にもなりそうなコンペが多すぎるんだよな、ほんとKaggleありがたい
— YujiAriyasu (@aryyyyy221) 2022年2月19日
とはいえ参加者のレベルが高くタスクも色々難しめ、走り切るには非常にしんどいコンペでした。whaleはいまだに始まらずか。これはソロ金目指してもいい気がしてきたな
— YujiAriyasu (@aryyyyy221) 2022年2月27日
しんどいながらもやっていくうちに色々な閃きがあり、なんやかんやでソロ金を獲得!このコンペでソロ金を取れたことは、現時点での僕の機械学習人生のハイライトの1つと言っていいでしょう!金メダルが確定した時は本当に嬉しかったのを覚えています。・クジラコンペ2
— shinmura0 (@shinmura0) 2022年12月28日
Kaggleトップランカーがひしめき合う、とてもハイレベルなコンペになった。
コンペによって難易度は違うのは当然だが、このコンペほどハイレベルなものは遭遇したことがなく、今後もしばらくないと思う。
日本人参加者が多かったこともあり、終盤のTLもかなり賑わっていましたね。やっぱり日本人多い方が燃えるので、それもありがたかったです。ソロ金!嬉しい!日本人強い!みんなお疲れさまでした! pic.twitter.com/1zzhrBemoI
— YujiAriyasu (@aryyyyy221) 2022年4月19日
たくさんの人に褒めてもらい承認欲求が満たされました。当時のkaggleCTOや、会社にも祝福してもらう。🐬コンペ途中から日本勢が上位に大量発生してかなり話題のコンペになってた感あるので結果残せてよかった
— charm (@charmq00) 2022年4月19日
会社にソロ金のお祝い貰いました🥂 pic.twitter.com/HRIVbtCIa2
— YujiAriyasu (@aryyyyy221) 2022年5月24日
And congrats on the solo performance! That's so tough to do now
— Ben Hamner (@benhamner) 2022年5月24日
(終わった後はみんなで集まってコンペに関してうだうだ言わせていただきました。kaggleを通して国内外にたくさんの友人が出来て本当に嬉しい。趣味が同じなので自然と話が盛り上がります)ariyasuさん強すぎますね。
— charm (@charmq00) 2022年4月19日
中堅Kagglerの会 pic.twitter.com/Txrj7qUpsT
— Rabotni(kuma|熊) (@analokmaus) 2022年5月18日
(番外編) Kaggle Days World Championship:2022年10月
Kaggle初の試みとして、約1年に渡って予選を行い勝ち抜いた人のみバルセロナに招待、オフラインで1dayコンペを戦うというお祭りが開催されました。僕も頼れるチームメイトと予選を勝ち抜き、なんとかバルセロナへのチケットを獲得。参加者全員分の飛行機代とホテル代を全額出してくれる、なかなかの大盤振る舞いでしたね。(またやらんかな...)
バルセロナでは初対面だけどお互いに知ってる人がたくさんいて、「おいおいお前こんな顔だったんか」をたくさんやりました。携帯でkaggleのアカウントを見せ合う瞬間大体めちゃめちゃ盛り上がるのが面白かった。
始まっております pic.twitter.com/tqKLtHPmY2
— YujiAriyasu (@aryyyyy221) 2022年10月28日
1日目はミートアップのイベントって感じで色んなMLに関する発表を聞いてわいわいやりつつ、最後に2日目に行われるコンペのお題が発表されました。tabular&NLP、しかも2コンペ同時開催で総合ポイントを争そうという衝撃の発表でしたね。総合ポイントで3位以内に入るとA6000が貰えるという発表もめちゃめちゃ盛り上がってました。
ホテルに帰ってからチームメイトのpaoさんと急いでNLPの素振りをはじめたんですが、このあたりもわちゃわちゃして楽しかった。
NLPの練習ということでpaoさんとCommonLitのCV勝負することになった。foldを共有してoofのRMSEで比較。その他常識の範囲内で進めるルール— YujiAriyasu (@aryyyyy221) 2022年10月28日
2日目は丸1日コンペでした。2コンペ同時開催でしたが、ポイントの配分の関係でどちらかに注力するチームが多い中、僕らのチームはどちらも頑張り、なんやかんやあってなんとどちらも優勝!総合ポイントでもぶっちぎりの優勝をすることが出来ました!完全にチームメイトのおかげです、ありがとうございました...!
(賞品でA6000と、A5000搭載のノートパソコンを戴きました)
コンペ前になんらかのおっさんがI wanna say very clearly that each of you is one of the best data scientists in the worldと言っており、多分みんなおいおいと思いつつどこか誇らしげな気分にもなってましたね☺️素敵過ぎるイベントだった!みなさんまた顔を合わせて戦いましょう🔥 pic.twitter.com/j3u7edzQQg— YujiAriyasu (@aryyyyy221) 2022年10月29日
(リリースも出してもらいました)
RSNA Screening Mammography Breast Cancer Detection:2022年11月
RSNA Screening Mammography Breast Cancer Detection | Kaggle
マンモグラフィー画像からの乳がん識別コンペ。序盤から結構強い人が参加している珍しいコンペでした。初めは画像の読み込みだけで6時間かかる厳しいコンペでしたが、序盤から参加したおかげで後述のアンサンブルのアイデアも降ってきたのでラッキーでした。コンペが進むにつれて徐々にスピードアップのための知見が共有されましたが、今後dicomをコンペで扱う際には必須のテクニックなので目を通しておくのをおすすめします。
序盤で猫とチームアップ...序盤からこんなに強GM揃うコンペ珍しい。金メダル取りにくそう... pic.twitter.com/pKgY8YU0Ve
— YujiAriyasu (@aryyyyy221) 2022年12月11日
中盤で人間とチームアップ...RSNAチームアップしました pic.twitter.com/lUTrTbeJEW
— YujiAriyasu (@aryyyyy221) 2023年1月14日
既にGMのcharmくんに加え、GMリーチ者を3人集めて、みんなでGMになることを目標に据えました。
みんなどんどんCV/LBの最高記録を更新、ここでも必殺各々開発して最後に混ぜるやつをやったので、安心感がすごかったです。RSNAチーム組みました。初回ミーティングの結果金メダルが確定したので、優勝目指して頑張ります🔥 pic.twitter.com/Ft1Exteg51
— YujiAriyasu (@aryyyyy221) 2023年2月4日
全員別々にやっててもみんなソロ金でしたみたいな感じのチームだったのでpublic 1位にさえなってなければ精神衛生に良いコンペだった— charm (@charmq00) 2023年2月28日
結局1ヶ月前のチームマージより前からソロ金のスコアが出ており、ソロ金を取りやすいコンペだったように思います。ちなみにcharmくんはコンペ終了1ヶ月前に始めて、1週間くらいたったところで出した1sub目でサクッとソロ金のスコアを出していて凄い— YujiAriyasu (@aryyyyy221) 2023年2月28日
僕はmodel開発に加えアンサンブルの方法を提案しました。
結構反応が良かったので、吉原くんが追加で考え出してくれた手法も置いておきます。予測値そのものではなく、予測値の分散を見て次のmodelに渡すかどうかを判断する方法です。具体例を出すと、model3種類で予測した段階で3つの予測値の分散が閾値より低ければ、4つ目以降のmodelを使用しても予測値のupdateは限定的(=最終的な0/1は変わらない)と考えて4つ目以降のmodelを使用しない、みたいなやり方です(と書いていて思ったんですが、予測値と分散どちらも見る方法がより良さそう)。そういえば推論時間厳しかったこともあり僕の1st subから入れていた、「最終的に0/1を出力するシステムでモデルをアンサンブルする場合、Nmodel目までで極端な推論値が出たらN+1model目以降を使わずに0/1の確定を出す」というのが結構汎用性高いので実務で使える人いたら使ってください。具体的には、
— YujiAriyasu (@aryyyyy221) 2023年2月28日
みんなこういうアイデアが無限に出てくる強者だったので、非常にエキサイティングで楽しいチームアップでした。今後のコンペで汎用的に使える技もいくつか教えてもらいました。またこのメンバーで組んで優勝を目指したいです🔥
(LB1位でコンペ終えられたの初めてだったのでとても嬉しかった)
「まず」はpublicから制する。 pic.twitter.com/8VwgEynnMs— Rabotni(kuma|熊) (@analokmaus) 2023年2月27日
ということで5つ目の金メダルを獲得!
GMになれそうです😭チームメイトに感謝!!! pic.twitter.com/uw7Kg4RjVH— YujiAriyasu (@aryyyyy221) 2023年2月28日
LBを気にせず完全にtrust CVだけしていればprivateも2位だったので少し悔しいですが、CVと比べてLBがpublic test sizeのbootstrappingをしてもなかなか出ないレベルで高かったので、(train/testでシフトがあるとして)ある程度のtrust LBも妥当な判断だったと思っています。
CV最強だけどpublicが弱すぎて選べなかったariyasu modelsを混ぜたlate sub。public: 0.61(20位くらい), private0.54(2位)。非常に選びにくいが、つよつよの人たちは選べたんだろうか pic.twitter.com/Xk7I3RkkZZ— YujiAriyasu (@aryyyyy221) 2023年2月28日
trust cv力が足りなかったのは経験不足でしかないので出直します— charm (@charmq00) 2023年2月28日
ちなみに僕のつよつよmodelを入れるとCVが0.58(!)に到達するんですが、入れなくても0.56までは出ておりこれは他のチームと比べても相当に高い精度だったと思われます(コンペ出ていた人には伝わるはず...)。みんなのモデルを混ぜるとCVが跳ね上がったので、やはりEnsemble Is All You Needであります。まあモデル1つずつがそもそも強かったけど...
コンペ終了後は恒例の打ち上げをしました。賞金で焼き肉🍖
(当初の目標の金メダルに加え賞金も取れたし、何よりみんなでわいわいアイデアを出し合うのがとても楽しかったので大満足のコンペでした。いつかまた一緒に戦いましょう!)THE GRANDMASTER FACTORY pic.twitter.com/7aW2rCBI2b
— Rabotni(kuma|熊) (@analokmaus) 2023年3月7日
なぜ金メダルが取れたか
- 序盤からの参加が良かった
振り返ってみると、最初からソロでしっかり参加するスタイルがかなり良かったように見えます。情報ないので自分で考える癖がつくし、序盤頑張って中盤くらいまでLB上位を保てば強い人と組みやすい。序盤なら1位を取るのも比較的簡単だし、1位取るとやっぱりやる気でますよね。そこも大きかったように思っています。僕は画像で4枚の金メダルを取りましたが、1, 2枚目は完全にこれでした。そして強い人と組んで力が付いたところで3枚目で気合いを入れてソロ金、4枚目は過去の強い対戦相手とチームを組んで余裕を持って獲得という理想的な流れだったと思います。1サンプルのお話なのでovefitしないように注意が必要と思いつつ、なんとなく再現性ありそうな気もします。このあたりのお話、もっと詳しい話を聞きたい方は遠慮なく話しかけてください。
- 会社の支援
アイリスには、クラウド代の全額補助だけでなく業務時間内のkaggle参加も応援していただいております。当然他のプレイヤーと比べてかなり有利だったと思っています。いつもありがとうございます!
今のところkaggleで得た知見での社内の課題解決が非常に上手くいっていることもあり、非エンジニアの方々も含め、社内全体でkaggle参加を応援してくれています。「AIチーム内で業務時間のkaggleが許可されている」と「社内全体でkaggle応援してくれている」だと、社内での暮らしやすさにも結構差があるのかなと。この辺りの kaggle参加すると会社全体に良いことあるんだよアピール をCTOのあつしさんがかなり頑張ってくれています。胸を張ってkaggleに参加出来る今の環境には感謝感謝です!
- 妻の支援
いつもいつも支えていただいております。特に色々と忙しくなるコンペ終盤では家事多めにやってくれたり夜食を作ってくれたり、クジラコンペをソロで乗り切れたのは間違いなく妻のおかげなので、2人で取ったGMと言っていいでしょう。いつもありがとう!
これから
あまり変わらないかなと思っています。kaggleまだまだ楽しいし、幅も深さも足りないので引き続き参加していくつもりです。皆様今後とも対戦よろしくお願いします🔥🔥🔥
機械学習の勉強を始めて1年以内にkaggleで2位になったので、やったこと全部書く
皆さん初めまして!
先日kaggleのARCコンペで2位になったのですが、
2位で終了しました!みなさんお疲れさまでした。コード書くの楽しかった。 pic.twitter.com/dLxl6Mlgoe
— Aryyyyy (@aryyyyy13) 2020年5月28日
僕のkaggle歴が浅めということもありtwitterでも結構反響があって、何人かの方にはわざわざDMまで頂いてどんな勉強をしたか聞いていただきました。なるほど需要があるならということで、今までのことをまるっと振り返ってみようと思います。
これからkaggle始める方のためになれば幸いです。
- 機械学習を始める前のスペック
- 準備期間:2019年7月〜
- kaggle初参加:2019年9月〜
- kaggleちゃんと始める:2019年10月〜
- DSB参加:2019年10月〜
- 会社を休職して本格的に勉強開始:2020年1月前半〜
- 手頃なコンペがなかったので勉強:2020年1月後半〜
- ARC前半:2020年2月〜
- ARC後半:2020年4月〜
- 今後
機械学習を始める前のスペック
- 機械学習の勉強を始める前は広告系の会社でweb系のエンジニアとして2年ほど勤務。
- 書いていたのは主にGoとRubyで、AWSもたくさん触っていた
- 数学はかなり得意だった、しかし文系なのでまあ知れている
- エンジニアやるまではずっと音楽一筋
- Python歴は無し
といった感じです。
準備期間:2019年7月〜
機械学習エンジニアの友人に触発されて、CourseraのMachine Learningを見始めたところからML人生がスタートしました。
それまではWeb系エンジニアとして楽しくコード書いていたんですが、軽い気持ちで始めた機械学習に完全にハマってしまった形です。
早朝に勉強、昼間はエンジニアとして働いて夜にまた勉強、といった感じでコースを終えました。今思えば最初にCourseraのMachine Learningいったのは良かったような。講師のAndrew素晴らしかった。
講座を終えた後は書籍などで勉強していました。何冊かななめ読みした後、Andrewの声がまた聞きたくなったので、CourseraのDeepLearning Specializationを受講することに。こちらも素晴らしかった!
(すごい昔に感じる)
ちなみにどちらの講座も完走するのに1ヶ月弱くらいかかっています。宿題とかもあって結構重かった記憶。勉強始めたての人にはちょうど良い重さかも。おすすめです。
kaggle初参加:2019年9月〜
そしてちょっとタイミング的に前後するのですが、deeplearningの講座を受けている最中に、kaggleを始めました。
初めて参加したのはIEEE-CIS Fraud Detectionです。不正取引を検知するモデルを作るコンペです。参加といっても、最終日にnotebookを覗いて、いくつかBlendして提出しただけです。それだけでも当時は(これがデータ分析...!!)と興奮したのを覚えています。笑
そしてそして、作りたてのTwitter機械学習用アカウントでTLを見ていると反省会の3文字が!図々しくも参加させていただくことに。
初めまして!最近機械学習の勉強始めて、これからkaggle頑張ろうと思っている者です!
— Aryyyyy (@aryyyyy13) 2019年10月8日
ieee最終日にデータ落として5サブミットしただけなのですが、流石に参加資格無しでしょうか…?
当日はIEEEで金メダルを獲得した方、masterの方などが揃っていて、非常に刺激的でした。話の内容が分からなくてまごまごしっぱなしの僕にもみなさんたくさんアドバイスをくれて、本当にありがたかったです。視座が上がったのも大きかった。これから始める方は強い人がいる反省会に潜り込むのおすすめです。
kaggleちゃんと始める:2019年10月〜
IEEE終わってから1ヶ月は、初心者でも手軽に出来そうなテーブルコンペが無かったこともあり、線形代数の本読んだり機械学習の書籍を読みつつ実装したり、諸々の勉強をしていました。そして10月に入り念願のテーブルコンペである、アメフトコンペが始まったので、初日から参加することに。よく分からないながらも楽しみながら進めていたのですが、題材がアメフトという馴染みのないスポーツであることもあり、相当頑張らないと芯を食った分析が出来なそうな気がしていました。実力がない分、ドメイン知識では勝ちたいという気持ちもありました。
そんな折、kaggleから新しくテーブルコンペが発表されました。ちょっと迷いつつ、そちらに移行することに...
DSB参加:2019年10月〜
新しく発表されたのは、2019 Data Science Bowlという、幼児教育用ゲームに関する分析をするコンペでした。幼児教育用ゲームのプレイ履歴を元にユーザー毎の習熟度を推定する、という分かりやすい題材だったこともあり、すぐにのめり込みました。
notebookや過去コンペを参考にしつつ、アメフトコンペを通じてPythonに慣れてきていたこともあり、割と順調にスコアを伸ばすことが出来ました。
みんなもKaggle本を読もう☺️ pic.twitter.com/B3t9McDj4Q
— aryyyyy (@aryyyyy13) 2019年12月21日
DSB、もうちょっとで金圏☺ pic.twitter.com/hI6Dhk2i5l
— aryyyyy (@aryyyyy13) 2019年12月23日
(実はこのあたりのsubmitからprivateでは安定して銀圏に入っていたようです。)
順位上がる -> モチベーション上がる -> 順位上がる -> ... の良い循環に入れていたような気がします。やっぱり順位上がると楽しいんだよな。。。
会社を休職して本格的に勉強開始:2020年1月前半〜
本格的に機械学習にコミットしてジョブチェンジするために、2019年いっぱいで会社を休職して、スクールに通いつつkaggleをやる日々に。スクールではこんな感じのことをやってました。残念ながらkaggleを教えられる人はいなかったので、kaggleに関しては独学で頑張りました。kaggle本発売されてたのも大きかった。
初心者にしてはかなり色々なことを試すことができたと思います。詳細は反省会で発表した資料があるのでそちらを参考にしてください。
結局DSBは51位で終了し、めでたく初のメダルを獲得。ありがとうございました!
DSB、ソロで51位でした〜。序盤からかなり見えていた自信はあって、機械学習初心者がソロ金とってやると意気込んでいたんだけど、まあそんな甘くはない。最後の1ヶ月でpublicもprivateもスコアの伸びが全く無かったのが敗因
— aryyyyy (@aryyyyy13) 2020年1月23日
でも成長度合いなら確実に10位以内には入ると思っているので次また頑張ろう。
TOP2%で嬉しい反面、金メダルを取れなくて悔しかった。リベンジを誓いました。
手頃なコンペがなかったので勉強:2020年1月後半〜
統計の勉強のために入門書ポチった。あとノリで10日後に統計検定2級の試験申し込んだ。さすがに落ちそうだけどモチベーション買う投資としては有りな気がしている
— aryyyyy (@aryyyyy13) 2020年1月23日
kaggleでアウトプットばかりしていたので、インプットもせねばということで統計検定を受けることにしました。試験を先に申し込んで、詰め込んで勉強する作戦。
久しぶりに数式触って楽しかったのを覚えています。
統計2級の過去問解いたら合格点出たので一旦DSBの復習に戻る
— aryyyyy (@aryyyyy13) 2020年1月28日
twitter見返したら5日で合格点が出ている。でも年によってかなり難易度が違う印象だったので、受ける予定の人は過去問は幅広くやるといいかもです。
統計検定2級、どんどん難しくなってるのかな。2015年以前の過去問だと初見で優秀or最優秀安定して出るようになったけど2016年以降は優秀も危うい
— aryyyyy (@aryyyyy13) 2020年2月1日
そんなこんなで意外にもサクッと合格して、次のマスに進みます。やればやるだけ成長できるので毎日が楽しかった思い出。楽しいのは今もだけど。
統計検定2級合格した。ゼロからの10日間チャレンジだったので結構大変だったけど、おかげで密度の濃い時間を過ごせました。Kaggleとは違った視点でデータの色んなお気持ちを知ることが出来るのでKaggleオンリーの人にはかなりおすすめな気がしました。さてDSBの復習しよう! pic.twitter.com/lof4PPhWvj
— aryyyyy (@aryyyyy13) 2020年2月4日
ARC前半:2020年2月〜
後に2位を取ることになるAbstraction and Reasoning Challengeに参加します。推論タスクのinput/outputから規則性を捉えるAIを作るコンペです。ざっくり書くと、図形の変化の規則性を当てるタイプのIQテストを解けるAIを作る、みたいな。IQテストは全部で100問出されて、そのうち何問とけるかを競う形式でした。
DSBのようなテーブルコンペとは全く違う類のコンペでしたが、twitterを見返す限り、ちょうど授業で論文読んだりしていたのもあり良さそうだなと思ったみたいです。
論文読む必要がありそうなコンペだし、かなりいいタイミングで出てくれたと思う。ことにする。盛り上がるといいけど!
— aryyyyy (@aryyyyy13) 2020年2月14日
ただ、意気揚々と参加したはいいものの一向に結果は出ず、始めの頃はかなり大変でした。 そして結果が出ていないのは僕だけではなく周りも一緒だったので、このまま誰も1点とらずに終えるのでは、、と結構みんな本気で感じていたように思います。
We just launched the toughest @kaggle competition in a long time with @fchollet. Can software learn to generalize complex, abstract tasks from a tiny number of examples? Easy to get started on, and a good result would mean a substantial leap forward in AI https://t.co/2r9zJSb7fh
— Ben Hamner (@benhamner) 2020年2月13日
(kaggleのCTOもtoughest competition in a long timeと書いている...)
始めの数週間で数千行のプログラムを書きましたが、結局1点も取れず。しかしアイデアは無限に湧いてくるし自分の方針で結果が出る気もしていたので、諦めずに続けることに。toughest competitionってのも燃えたし。twitterを見返すと、3点取るのに1ヶ月と少しくらいかかっていたようです。同時進行でウォルマートコンペ(通称M5)も始めました。
ARC3点目取れてた、しかしM5との両立大変だな...
— aryyyyy (@aryyyyy13) 2020年3月19日
この時点でかなりいい順位にいて、コンペの難しさを考えると多分今のままでもソロ銀は確定したかな、という感じでした(実際3点のままだと銀だったようです)。満足して他にいくか金メダルを目指すかのオプションがあったのですが、まだまだ手は止まらなそうだし、DSBの時の悔しさを晴らすためにも、もう少し頑張ることにしました。
ARC後半:2020年4月〜
順調に得点を重ねて、大体金メダル圏内の一番下が銀メダル圏内の一番上にいた気がします。
ARC、こんだけコード書いても4点かという感じ。
— aryyyyy (@aryyyyy13) 2020年4月5日
ARC、上位者同士でチーム組んだらしく金圏入ってた😊
— aryyyyy (@aryyyyy13) 2020年4月10日
そしてコンペ終了10日前くらいにチームマージの決断をすることに...!
ARC、諸々考慮するとソロ金取れる確率80%くらいある。でも万が一にも銀で終わるのが嫌なので、マージして賞金狙いに切り替える。
— aryyyyy (@aryyyyy13) 2020年5月16日
ここまでコミットして銀で終わる可能性があるのが嫌だったので、ソロ金狙いからチームでprize狙いに切り替えることに。ソロで頑張っていたこともあり、僕より1点多く取っている2人チームとすんなりマージ出来ました。
(ここから先はtwitterの連投でお楽しみください)
チームマージした。しかしお互いの1万行ずつくらいのコードをマージせねば...とりあえず一人でやらせてもらうことにした
— aryyyyy (@aryyyyy13) 2020年5月17日
(チーム組むことを想定していなかったのでコードが汚くて苦労しました...)
賞金見えてきた😊 pic.twitter.com/i93pJRYhro
— aryyyyy (@aryyyyy13) 2020年5月17日
(10点と9点でマージして15点になりました)
ARC15点なうなんだけど、14点とってるGMからマージのお誘いを頂いた。これは優勝かと思いきやsubmitのlimitに達していてマージ出来ず。残念!
— aryyyyy (@aryyyyy13) 2020年5月17日
(上位にはGMやmasterがたくさんいて、やっぱり強いんだなあという印象です。当たり前か)
マージ後にすぐ2点取れた。早計だったか…しかしソロ金よりエキサイティングなので良しとする
— aryyyyy (@aryyyyy13) 2020年5月18日
エキサイティングな状況...ARCはpublic=privateなのが嬉しい。 pic.twitter.com/AAmHD6VfHt
— aryyyyy (@aryyyyy13) 2020年5月20日
(この2点が大きかった)
2位争い1歩リード!あと2時間でチームマージ期限、点数を隠しているチームがどれだけあるか。 pic.twitter.com/rLVQ5ZS09b
— aryyyyy (@aryyyyy13) 2020年5月20日
ARC、ずっとコンペを引っ張ってきたZoltanが得点して更なるデッドヒートを演じている。100 hours to go... pic.twitter.com/Sz7uLuLlvX
— aryyyyy (@aryyyyy13) 2020年5月24日
(結局足を残しているチームはほとんどなかった模様。このころは連日コード書きすぎて疲れていたので、息抜きにM5やっていました。)
チームメンバーがついに1点取ってくれて賞金がかなり現実味を帯びてきた。しかしみんな不気味なくらい得点しない。 pic.twitter.com/gKzgCmbOUu
— aryyyyy (@aryyyyy13) 2020年5月25日
(このあたりでかなり賞金を意識しはじめる)
2位で終了しました!みなさんお疲れさまでした。コード書くの楽しかった。 pic.twitter.com/dLxl6Mlgoe
— Aryyyyy (@aryyyyy13) 2020年5月28日
(yatta)
(賞金は3人チームで3等分を提案しましたが、yujiは頑張ったから、ということでちょっと僕が多めに貰うことになりました。ありがとうチームメイトたち...)
ちなみに、今回2位になれたのはずっと楽しみながら続けていられたからだと感じています。あんまり難しいことしていないし。やっぱり楽しんでいるとコミット量も集中力も違いますよね。そして僕は機械学習もエンジニアリングも心の底から愛しているので、まだまだ階段を登り続けることが出来るはず。多分。
ということで、これからkaggle頑張りたいと思っている人は、なるべく自分が楽しめるコンペに出ることを強くお勧めします。周りの方々を見ても、強い人ほど楽しんでいるようにみえます。もし全然楽しめないようだったらkaggleやらないのも有りだろうし、データ分析自体あんまり楽しめないのなら別の道を考えてもいいと思います。
今後
kaggleやっていると、楽しすぎてどうもアウトプットに偏り過ぎてしまうように感じるので、今後はアカデミックなインプットにもちゃんと時間を割きたいです。論文読むの単純に楽しいんだよな...一日一論文生活したい。
それと同時に、そろそろ就職活動も始めようかと。機械学習エンジニアとしてのキャリアをスタートさせたい。企業の方はDMいただければ嬉しいです!僕からも色々とコンタクト取り始めます。
今後は論文ガンガン読んでゴリゴリ実装出来るエンジニアになるべく、より一層楽しんでいきたいと思います。ここまで読んでいただいてありがとうございました!