📑

Kaggle Grandmasterになったので取り組み方や今までを振り返る(kami編)

2024/12/23に公開

こんにちは、株式会社ディー・エヌ・エーのkami (Kaggle, X(旧Twitter))です。

先日の「Eedi - Mining Misconceptions in Mathematics」で金メダルを獲得し、晴れてKaggle Competitions Grandmasterとなりました。

先人たちに倣って今まで参加したコンペティションなどを振り返りつつ、どのように取り組んできたかをまとめたいと思います。技術的な話は少なめで、マインド面などのポエミーな話が中心ですのであしからず。
なるべく参考になるように、私個人がコンペに取り組む時の考え方などをお伝えできればと思います。

なぜKaggleをやってきたのか?

常人がKaggleでGrandmasterになるためには少なくない何か(主に時間)を捧げる必要があります。天才でない限り、何か続ける理由があった人でないとなれない称号だと思っています。

自分の場合は、複合的なモチベーションがありました。

  • 外的なモチベーション
    • 今後のキャリアに役立つ(実績・スキル面)
    • 勝ったときにチヤホヤされると嬉しい
  • 内的なモチベーション
    • スコアが上がりLBを駆け上がっていくときに出てくる脳内物質が癖になってる
    • 夜中までKaggleやっていると最高に人生やってるなという気分になる
    • 習慣化していてやらないと落ち着かない

外的なモチベーションのうち「実績」という面では、Grandmaster達成やコンペ優勝経験により一つの目標をクリアできたと感じています。これ以上は費用対効果が低いかもしれません。
ですが、その他の部分はGrandmasterになっても残る部分ではあるとは思っています。他にやりたいことができたときの優先順位は多少変わる可能性はありますが、まだまだ引退は早いかなという気分ではいます。

最近のKaggle参加スタイル

コンペの参加頻度・選び方

現在は以下のような形に落ち着いています

  • とにかくコンペに出続ける
  • いくつかコンペ触ってみて上位にいけそうだなと思ったやつに集中的に取り組む
  • 集中して取り組むのはなるべく一つ

最近はコンペに出ることを習慣化する目的でとにかくコンペに出続けています。終わった後は何か作業していないと落ち着かなくなるという弊害があるので、またすぐに次のコンペに参加してしまいます。

ソロでのコンペの選び方としては、まずLBを見て上位のスコアの分散がどの程度かや、強い人が上位にいるのかを確認します。スコアの分散が大きれば一つのアイデアで周りと大きな差をつけて金メダルに入る確率が上がりますし、強い人が上位にいれば少なくともpublicに関しては運要素が少ないことが期待できます。
また、タスク見てこういう方針だとうまくいきそうというのが分かればそれに参加します。そうでない場合は、ディスカッションをすべて読み、ベースラインとかをとりあえず作ってみる事が多いです。
一通り動かしてみるとどこが改善できそうみたいなアイデアが浮かんだり、思ったよりLBで順位が上がったりするので、そのまま他の人と差がつきそうであれば集中して取り組むことを決めます。

残り期間に関しては、終了まで1ヶ月くらいのコンペに取り組むことが多いです。公開ノートブックやディスカッションが出揃ってきた段階なので効率的に参加できます。自分の実力や経験だと、3週間くらいが本気で取り組んで金メダル獲得できるくらいの期間かなと思っているのもあります。

ただ、あまり公開ノートブックとかディスカッションが充実していないコンペもあるので、最近は残り2~3ヶ月くらいのコンペを触ることも増えてきたようにも感じます。ソロでゆっくり始める場合はちょうど良いです。

コンペの取り組み方

どのコンペも大まかには以下の流れで取り組んでいます。

  1. 事前準備
    • ディスカッションをすべて読みアイデアをメモしておく
    • 手元での検証の仕方・Validationの切り方を決める
    • Githubのコンペ用リポジトリを自作テンプレートから作る
  2. ベースラインを作ってみる
    • これしかないというパイプラインを思いついていればそれに向けて段階的に作っていく
      • 例えば2stageのパイプラインを組む場合は、まずは 1st stage のモデルを作って提出できる状態にする等
    • 最初に最終形のイメージがついていない場合はシンプルめなベースラインを作って提出できるようにする
  3. アイデアを考えて試しながら改善をしていく
    • アイデアの出し方は色々
      • ディスカッションから得たアイデア
      • やりながら思いついたアイデア
      • モデルの出力を見てどういうときに間違っているかなどのエラー解析をしてみて出したアイデア
      • ドメイン知識の勉強して思いついたアイデア
      • 過去コンペを見て思いついたアイデア
      • ...

本当は使おうとする手法の細かい理論的背景まで含めて論文を読むなどしたいのですが、そこまで時間が取れなかったりするのであまりできていません。単一のコンペティションだけ見たときには遠回りですが、長期的にはそこも踏まえて知識を吸収していったほうが良いなぁと最近感じているので今後はそこも意識したいなと思っています。

チーム戦略

もともと特にこだわりとかは無かったのですが、結果的には知っている人としかマージしてこなかったです。理由としては、知らない人とチームを組むと、チームメイトが不正行為を行っていた際に一緒に制裁を受ける可能性があるのでリスクが高いという問題があるためです。また、自分が日本語ネイティブなので、日本語ネイティブの人とチームを組みたいモチベーションがありました。その方がコミュニケーションコストが低く、柔軟なパイプラインの変更など複雑なタスクもスムーズに進められると考えたためです(コンペの状況によってはこの戦略も柔軟に変えるつもりではいます。)。

とはいえ、ソロで上位にいるとチームを組みませんか?と声をかけられることが多くなってくるので、知らない人からでも声をかけられた時は素直に嬉しくなってしまいます。

実際にチームマージをする時は、知り合いと0サブの状態でマージすることもあれば、ソロで銀・金メダル圏内に入ってから近くの人とマージすることもありました。

Kaggleを始めた最初の方は知り合いが少なく、知らない人へマージ申請をするのは精神的なハードルが高くしてこなかったです。ただ、ここ1~2年は実績も増えイベント登壇などをしていたのもあってか、知り合いが増えてきて、順位を上げてからチームマージする戦略が採りやすくなりました。
また、ソロでも銀上位や金メダル圏内に安定的に入れることが多くなってきたので、そこまで上げてから近くの強い人とチームマージができるようになったのは金メダルの再現性を高めるうえで大きかったと思います。

どうやって強くなってきたか?

Kaggleを続けるうえで、「ここからもっと順位を上げるにはどうしたら良いんだろう」と壁を感じることがあると思います。

大体レベルごとに以下の3つの壁を感じると思うので、自分がどうやって乗り越えてきたかをまとめてみます。

  • 銅メダルの壁(Expertの壁)
  • 金メダルの壁(Masterの壁)
  • ソロ金の壁(Grandmasterの壁)

銅メダルの壁(Expertの壁)

Kaggleを始めたての人がまず直面するのが銅メダルの壁でしょう。

やる気のある人が基本を抑えれば超えられる壁だと思います。自分の場合以下を押さえればすぐに取れました。

  • Pythonや機械学習の基礎的な知識を一通り身につける
  • 一つのコンペに時間をある程度かける(といっても終盤少し集中するだけでも良い)
    • 公開ノートブックを色々改変してみる
    • ディスカッションにはなるべく目を通す

銅メダルを取れたら、同じ要領でコンペに出続けていればすぐに銀メダルも取れると思います。

金メダルの壁(Masterの壁)

金メダルというのは一つのコンペで10チームちょっとしか取れないので、銅メダルや銀メダルに比べて非常にハードルが高くなっています。

乗り越え方は人それぞれですが大体以下の2つでしょうか

  • 強い人とチームを組む
    • 利点
      • 一度強い人の取り組みかたをチームとして見て学び、金メダルを取るためにはどういうことをすればよいかを経験できる
      • 楽で手っ取り早い
    • 欠点
      • そもそも強い人は強い人と組みがちなのでハードルは高め(コネが必要)
      • 取り組み方によっては自分で取った感じがしないので次の壁がより一層大きく感じるかも
  • 実力を地道につけつつ、一つのコンペに大量の時間を投入する
    • 利点
      • 自分の実力そのものがちゃんと上がり自信がつく
        • 過去のコンペから、上位がどのような工夫を取り入れて金メダルを取っていったのかを学び活かす等
    • 欠点
      • 時間がかかる
      • 運要素も大きい

強い人とチームを組みたい場合は、コンペ序盤から参加して金圏近くまで順位を上げておいて、中盤以降で近くの強い人とチームマージするのが良いと思います。ただ、知らない人や実力が分からない人とチームマージするのを避ける方も多いので、知り合いでない場合は断られてしまうことも多いかもしれません。

自分の場合は、志を同じくする(Masterを目指す)Expertの3人でチームを組み、後者の方法で金メダルを獲得しました。
中長期的な実力向上を目指して、LAIMEという機械学習の学生団体で、過去のコンペの概要や効いた工夫などをまとめてシェアする勉強会などを定期的に行っていました。

ソロ金の壁(Grandmasterの壁)

チームを組まずに金メダルを獲得するのはかなりの運か実力が必要かと思います。チーム金だとその人の貢献度合いが分からないので、人によってはソロ金を持ってて一人前とする方もいます。

乗り越え方ですが、地道に実力をつけて取れそうな時に狙っていくしかないと思います。
コンペによって相性みたいなものもあると思うので、まずはソロで参加してみてチームを組むかどうか考えてみるというのもおすすめです。

自分は2枚目の金メダルがソロ金だったのですが、これはそもそもソロ金を取ろうと思って参加したコンペではありませんでした。
最初1人で参加してみて、思ったよりも自分1人で順位を上げられそうだと分かったので、チームのお誘いなども断って途中からソロ金狙いにシフトしていきました(詳細は後述)。

もちろん、チームで金メダル4枚を取ってから狙いに行くのもありだとは思っていて、それまでにチームメイトから得られた学びや経験などを活かせるとスムーズに取れるかもしれません。ただ、ソロの不利も考えると一定相性や運にも左右されると思うので、いけそうなタイミングがあれば早めに取っておくと良いのでは派ではあります。

Kaggle遍歴

参加したすべてのコンペについては触れずに、印象深いものだけに絞って書いていきます。また、Kaggle以外のコンペについても記載していきます。

コンペ名 種類 順位/参加チーム数 メダル 終了月
Elo Merchant Category Recommendation テーブル 1153位 / 4110チーム なし 2019/2
Mechanisms of Action (MoA) Prediction テーブル 217位 / 4373チーム 🥈 銀 2020/12
Rock, Paper, Scissors シミュレーション 122位 / 1662チーム 🥉 銅 2021/2
Shopee - Price Match Guarantee マルチモーダル 42位 / 2426チーム 🥈 銀 2021/5
BirdCLEF 2021 - Birdcall Identification 音声 1位 / 816チーム 🥇 金 2021/6
#15 atmaCup レコメンド 1位 / 661チーム - 2023/7
Kaggle - LLM Science Exam 自然言語処理 10位 / 2664チーム 🥇 金 2023/10
Child Mind Institute - Detect Sleep States 系列データ 1位 / 1877チーム 🥇 金 2023/12
atmaCup #16 in collaboration with RECRUIT レコメンド 1位 / 666チーム - 2023/12
RecSys Challenge 2024 レコメンド 1位 / 145チーム - 2024/6
LEAP - Atmospheric Physics using AI (ClimSim) 系列データ 4位 / 693チーム 🥇 金 2024/7
NeurIPS - Ariel Data Challenge 2024 最適化 27位 /1151チーム 🥈 銀 2024/11
Eedi - Mining Misconceptions in Mathematics 自然言語処理 4位 / 1471チーム 🥇 金 2024/12

※ブランク期間が2回ほどあるので一部期間が空いてます。

Novice・Contributor時代

Pythonの書き方や機械学習の基礎を学んだくらいのひよこの時期です。

Elo Merchant Category Recommendation: 4110チーム中1153位


初参加コンペです。時期的には当時大学2年生くらいでした。プログラミングを触り始めて一年も経ってない時期だったと思います。

情報系の学科に変わったタイミングに勉強がてらKaggleというものをやってみようかなと思ったのがきっかけで、titanicとか一通り見たあとに参加したコンペでした。

ほとんど記憶はないのですが、73回subしていたみたいで意外とちゃんとやってました。確かGoogle Cloudの初回無料クレジットを使ってインスタンス立ててやってた記憶があります。

ただ、何やったら良いか全然分かっていなかったので勝てず、Google Cloudのクレジットも使い切ったのでその後2年ほどはまともにコンペに出ることはありませんでした。
(記憶はないのですが1年後に1サブだけしてたので、コンペ自体は定期的に見ていたようです)

Mechanisms of Action (MoA) Prediction: 4373チーム中217位🥈

薬の作用機序に関わるコンペティションです。参加したのは最初のコンペ参加から2年ほど経ち2020年頃、大学4年生の冬くらいでした。

Kaggleを再開したきっかけとしては

  • AtCoderで目標としていた青コーダーになり一定満足したため次の目標を探していた
  • ひょんなことからLAIMEという機械学習の学生団体の運営をすることになり機械学習のモチベが高まっていた

などがあります。

オリジナルの工夫などは全然思いつかず、複数の公開コードを色々弄りながらアンサンブルするくらいでした。今振り返ってみればまだまだだなという感じだったのですが、当時の自分としては最善を尽くしていて、シェイクアップもあってなんとか銀メダルを獲得できました。

コンペ後少し経ってから上位解法を再現実験してみるなどして、どういう部分が効いたのかなどを学ぶことができたのは当時の経験として良かったなと思います。上位はデータの特性を活かしたデータオーグメンテーションやモデリングの工夫などを行っており、金メダルを取るためにはこういう工夫をしないといけないのだと実感できたのが良かったです。

Rock, Paper, Scissors: 1662チーム中122位🥉

じゃんけんエージェントを提出して戦わせるコンペです。当時Expertを目指しており、何でも良いのでメダル取れそうなコンペとしてMoAの後に取り組みました。

毎日エージェントを提出できるので、ランダムにじゃんけんするエージェントをとにかくサブしまくるという脳筋戦法でむりやり銅メダルを獲得、こうして無事じゃんけんExpertになりました。

今となっては意味のない銅メダルですが、当時はExpertに昇格するのが目標だったので貴重なメダルだったと思います。最初は何でも良いからメダルを取ることでモチベを上げるというのは良かったなと感じています。

https://x.com/634kami/status/1364385614603292673

Expert時代

ExpertになってからMasterになるために4ヶ月ほど本気でKaggleに打ち込んだ期間です。

Shopee - Price Match Guarantee: 2426チーム中42位🥈

e-commerce プラットフォームであるShopeeがホストのコンペティションです。

画像や商品説明の文章から同一商品をグルーピングするようなマルチモーダルなタスクで、ArcFaceなどの距離学習手法が良く使われていました。

知り合いのExpert同士3人でチームを組み、金メダル獲得を目指して参加していたコンペです。当時「リークさせないように適切にデータ分割をしながらArcFaceを学習し多段パイプラインを組む」といった流れをやるのが難しく、妥協してArcFaceを使わずにやっていたのですがそれもあって銀メダルで終わってしまいました。

グラフ特徴量を組み込んで多段パイプラインを組むなど、推論パイプライン自体は今振り返ってみても悪くなかったと思うので、ArcFaceの学習も成功させていればいいところまで戦えていたのではないかと思っています。

https://x.com/634kami/status/1391942260208533504

BirdCLEF 2021 - Birdcall Identification: 816チーム中1位🥇

毎年恒例の鳥コンペの2021年のときのものです。shopeeのときと同じチームで参加しました。

参加期間は3週間ほどと短かったものの、起きている間はほぼKaggleに費やすことで追い上げ、シェイクアップもあって初金メダルにして初優勝することができました。
当時Publicはそこまで高くなかったのもあって非常に驚き嬉しかった記憶があります。人生で1番嬉しかった瞬間かもしれません。

Qiitaで記事(Kaggle の鳥コンペで1位を取った話:BirdCLEF 2021 優勝解法)も書いたので、詳細はそちらをご覧ください。

これ以降、優勝してMasterになったことで満足感を得たうえ、優勝が要因で仕事が増えたため、学生時代は真面目にコンペに参加することがほとんどありませんでした。
まともに参加するのは、就職してしばらく時間が経ってからになります(約2年後)。

https://x.com/634kami/status/1399878780433227778

Master時代

ブランク期間を過ぎて、社会人になってから本格的なコンペ参加を再開した期間です。

#15 atmaCup: 661チーム中1位(ソロ)🏆️

不定期ですが質の良いコンペで根強い人気のあるatmaCupです。Kaggleではないですが個人的にこのコンペは思い出深く外せません。

私が参加したのは推薦系のタスクのときで、この回が初参加でした。業務で推薦周りを扱うようになっていた&業務に慣れてきてそろそろコンペに参加し始めようと思っていたのでタイミングが良く参加することにしました。

業務時間含めて時間をかなりかけつつ、GNNなどの気になっていた手法含めて色々試してアンサンブルすることで優勝することができました。業務で学んだ知識なども活かせたのは大きかったです。

このコンペではtrainとtestに重複するユーザーのデータと重複しないユーザーのデータがありました。自分は重複するユーザーにしか使えないGNNの手法なども用いていたので、重複するユーザーを推論対象にするかどうかでモデルを分けていました。結果的にはこれが良かったようで、それぞれのモデルで学習に必要な最適なイテレーション数が異なったという事後報告もありうまく学習できていたようです。

ソロでちゃんと結果を出した初めての経験であり、Kaggleではないとはいえ競争の激しいatmaCupで結果を出すことができたのは、自分にとっても非常に良い経験となりました。

この後のコンペもソロで積極的に挑戦しようと思えたきっかけとなり、最も印象深いコンペの一つです。

振り返り会で発表した資料はこちらです。
https://speakerdeck.com/unonao/number-15-atmacup-zhen-rifan-ri-and-1st-place-solution

https://x.com/634kami/status/1683061025942409217

Kaggle - LLM Science Exam: 2664チーム中10位(ソロ)🥇

Wikipediaの文章からLLMに生成させた多肢選択問題について、どれが正しいのかを予測するコンペです。

最初問題を見たときに「Wikipediaの情報を検索してきてcontextとして渡せば精度上がりそうだし、これは勝ったな!ガハハ」と思ったものですが、同じアイデア(RAG)で性能上げたみたいな公開ノートブックがその直後に出てきてシュンとしたのを覚えています(生成しないのでいわゆるRAGとは厳密には違いそうですが)。

そうは言いつつ、DeBERTaを学習させながらどこに改善ポイントがありそうかエラー解析をして見たところ、公開コードで利用されているデータにはなぜか欠損などが多く含まれていたことを発見しました。自分でWikipediaデータをダウンロード・整形することで欠損がなるべく起きないように工夫することで精度を上げることができました。

モデルに関してはDeBERTaでも提供データについては0.99くらいの精度を達成できていたので、モデルの改善よりも検索方法の改善に注力していました。
ただ、更に上位に行くためにはLLMを利用して学習・推論を行う必要があったようで、デカいモデルの事前知識で殴るのも大事だったようです。

途中チームマージのお誘いなどもありどうするか悩んだのですが、いつか必要になるソロ金のために一人で頑張ることにしてなんとかソロ金を獲得することができました。atmaCupで自信をつけていなければできなかった選択肢だと思います。
とはいえ、チームマージによって得られる学びなども含めて考えると、早期にソロ金を取りに行くべきかは意見が分かれるかもしれません。自分はいけると思った時に取っておくことを選択しました。

https://x.com/634kami/status/1712576946964738264

Child Mind Institute - Detect Sleep States: 1877チーム中1位🥇

腕につけた加速度計デバイスからの信号をもとに、入眠と起床のタイミングを予測するコンペティション、通称「睡眠コンペ」です。

友人から質の良いベースラインコードが公開されていると聞いて参加を始めたところ、社内の先輩も参加しようとしていたため誘って頂きマージしました。また、もともと弊社に在籍していたshimacosさんともチームを組み3人での参加となりました。

終了一週間ほど前にチームメイトが複雑な後処理方法を考案したので一生懸命実装しました。そのおかげもあって最後急激にスコアが伸び、優勝することができました。Kaggleでは2度目の優勝となります。

詳細については関東Kaggler会で発表させていただきました。
https://speakerdeck.com/unonao/shui-mian-konpe-1st-place-solution

https://x.com/634kami/status/1732188287018914246

atmaCup #16 in collaboration with RECRUIT 666チーム中1位🏆️

じゃらんのデータを使った推薦タスクのコンペティションです。こちらもKaggleではなくatmaCupです。

前述の睡眠コンペが終わったばかりで一休みしようかとも思ったのですが、好きな推薦タスクのコンペティションが開催したということで参加することにしました。

最終日前日まで上位入賞は諦め気味だったのですが、スマホでディスカッションを眺めていたところtrainとtestのドメインシフト対策をしてなかったことに気が付き、対策を加えたことでなんとか優勝することができました。

振り返り会で発表した資料はこちらです。
https://speakerdeck.com/unonao/atmacup-number-16-1st-place-solution-plus-qu-rizu-mifang-zhen-rifan-ri

https://x.com/634kami/status/1736315761680146894

RecSys Challenge 2024: 145チーム中1位🏆️

国際学会Recommender Systems(RecSys) 2024の併設コンペティションです。会社の制度として国際学会派遣制度というものがあるのですが、その制度で行きたい学会のコンペということで社内チームで参加することにしました。

自分は途中から後述するLEAPというコンペにも参加していたためマシンリソースや時間を確保するのが大変でした。前半頑張って、後半はチームメイトにかなり進めてもらうことになりました。

競争率自体はKaggleと比べると高くないのですが、最終的にtop3争いはKaggle GrandmasterやMasterを複数名含むチーム同士の戦いとなりました。

解法については論文としてまとめて提出をし、最終的にイタリアのバーリで開催されたRecSysに参加してきました。

LEAP - Atmospheric Physics using AI (ClimSim): 693チーム中4位🥇

気象シミュレーションをエミュレートする機械学習モデルを作成するコンペティションです。

リーク騒動で荒れに荒れたコンペで、ホストのミスでテストデータのシャッフルがされていなかった他、データそのものに位置情報・時間情報が暗に含まれてしまっていました。そのため、途中でテストデータが入れ替わりLBがリセットされ、開催期間が伸ばされるなどの対応がありました。

利用用途の制約なのか、位置情報・時間情報を利用して複数の地域を同時にモデルに入力することは避けたかったようで、そのような手法を用いることはホストの要望から禁止されました。
最終的に入賞者だけがこの制限を満たしているのかチェックされることになり、賞金圏外に関しては特にチェックなどはなかったので、モヤモヤを残したままコンペは終了を迎えることになりました。とはいえタスク自体は非常に面白く取り組めましたし良い経験にはなりました。

このコンペでは、途中でくるぴーさん・takoiさんチームに声をかけてマージさせて頂きました。基本的には直接知っている人としかマージしたことがなかったのですが、お二人ともSNS・LB上で良くお見かけしていた強いKagglerであったことや、LLM Science Exam で同じくソロで参加されていたくるぴーさんに勝手な仲間意識を持っていたため、安心感を持って声をかけることができました。
直接の知り合いではなかった自分と組んで頂いて非常に感謝です。

https://x.com/634kami/status/1813002284797993151

NeurIPS - Ariel Data Challenge 2024: 1151チーム中27位🥈


Grandmasterを目指して手頃なコンペを参加していたしていたところ、上位間でのスコア差が大きく差が付きやすそうなコンペとして目についたので参加することにしました。

データサイズは大きかったのですが、サンプル数が少なかったりtrainとtestでドメインシフトがあったりとしたコンペだったので、機械学習を用いた解法は少なく最適化系の解法がメインでした。

評価指標から考えて、ここを改善すればスコアを上げられそうという部分を見つけて銀上位まではいったのですが、そこから大きく上げることができませんでした。

このコンペに参加するちょっと前に、Googleのgemmaに関するイベントでcharmさんとお話しする時があり、タイミングあればぜひチーム組みましょうという話をしていました。それもあり途中でチーム組ませていただきました。
ですが、自分が前述のRecSysで10日間イタリア渡航する際にパソコンを忘れるというやらかしをしてしまいました。帰国後から終了までの1週間はデータ生成ライブラリに着目した方針に集中しトップと方針もかなり近かったのですが、時間切れで終了となりました。
結果はあまり振るわなかったのですが、最後の方は寝る間を惜しんでデスマーチ状態で、最高にKaggleしてるなという感覚を味わうことができたので非常に楽しかったです。

Eedi - Mining Misconceptions in Mathematics: 1471チーム中4位🥇

数学の多肢選択問題の誤答に紐づく誤解(misconception)を候補から選んで推薦するコンペティションです。

前述のAriel Data Challengeでcharmさんとチームを組んだのをきっかけに、takoiさん・charmさんとチームを組みましょうという話をしていました。とはいえtakoiさん・charmさんチームが銀メダル圏内にいたので、せめて近くまでソロで上げてからマージしようとはじめは一人で参加することにしました。

最初にコンペティションを見たときに、推薦タスクのコンペと同様に候補生成をしてからrerankingをする2stageのパイプラインを組めば大まかには良さそうと方針をすぐに立てられたのは自分としても成長を感じたところです。ですが、LLMを扱うのはそれほど経験がなかったことからバグなどとも戦いました。ようやくソロで銀メダル圏内に入ることができた段階で、声をかさせて頂いてチームマージしました。

途中weight1.0で金メダル圏内に入るなどそこそこ健闘していたのですが、最終的にtakoiさんとcharmさんのモデルの性能が非常に高くチューニング力の差を見せつけられる結果となりました。
自分としても、ニューラルネットワークのチューニング能力にはまだまだ課題感があります。今までのコンペティションでも純粋なモデルのチューニングよりもアイデアやパイプラインなどで差をつけてきたところがあります。今後はチューニング部分も意識して能力を鍛えていきたいなと思っています。

最終的に4位となり、このコンペでKaggle Grandmasterとなりました。

https://x.com/634kami/status/1867359502934347816

今後について

Grandmasterになり変わることも変わらないところもあると思います。
今後取り組みたいこととしては、

  • 多様なコンペへの参加
    • 刺激を求めて引き続き機械学習系のコンペティション
    • 今まで参加しなかったジャンルのコンペティション(主にシミュレーション系コンペ)
    • 学会併設コンペティション
    • ヒューリスティック系コンテスト
  • お仕事(本業・副業)
  • ソフトウェアエンジニアリング等、仕事に役立つ知識の勉強

まだまだKaggleは引退しないつもりなので、LBでお会いした際は対戦よろしくお願いいたします。

DeNA Engineers

Discussion