Slide 1

Slide 1 text

競技としてのKaggle 役に立つKaggle GO株式会社 内田祐介 (@yu4u)

Slide 2

Slide 2 text

© GO Inc. 2 自己紹介 @yu4u n Kaggle Competitions Grandmaster https://www.kaggle.com/ren4yu n SIGNATE Grandmaster https://signate.jp/users/11285 n 画像コンペメインでやっています

Slide 3

Slide 3 text

© GO Inc. 3 はじめに

Slide 4

Slide 4 text

© GO Inc. 4 はじめに n team SONY 優勝おめでとうございます! https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification/leaderboard

Slide 5

Slide 5 text

© GO Inc. 5 月刊Kaggleは役に立たない n 定期的にKaggleは実務の役に立たないという議論が発生 することから、出るたびに月刊Kaggleと言われる n 姉妹誌に「月刊競技プログラミングは役に立たない」

Slide 6

Slide 6 text

© GO Inc. 6 月刊Kaggleは役に立たない n 定期的にKaggleは実務の役に立たないという議論が発生 することから、出るたびに月刊Kaggleと言われる n 姉妹誌に「月刊競技プログラミングは役に立たない」 ⽉刊競技プログラミングは 役に⽴たない 2014年5⽉創刊 ⽉刊Kaggleは 役に⽴たない 2017年6⽉創刊

Slide 7

Slide 7 text

© GO Inc. 7 今日の話 n コンペの流れとtips的な情報を主観強めで紹介 Q&Aパネルトークのネタになれば お役立ちリンクは後で是非ゆっくり見てください n それぞれ役に立つ〜とか言おうと思ったが、だいたい役に 立ちそうだったのでちょっとタイトル詐欺 月刊: Kaggleは役に立たない by @threecourse さん https://threecourse.hatenablog.com/entry/%3Fp%3D1144 にほぼ答えがあった 実例で示すKaggleコンペと開発実務の差 by @kaeru_nantoka さん https://speakerdeck.com/kaerururu/lpixelxcaddi-kaerururu n 画像コンペ前提の話多め

Slide 8

Slide 8 text

© GO Inc. 8 娯楽としてのKaggle n 参加していないコンペでもコンペ終了日にX(旧Twitter)で盛り上が っているのを見るだけで楽しい トリッキーに見えるけど本質的な手法が勝っていたりすると面白い https://www.kaggle.com/competitions/llm-prompt- recovery/discussion/494343 もちろんやっているコンペの終了日は楽しい n Kagglerを訪ねて三千里 https://www.youtube.com/@takamisato4299 n Kaggler会 https://kansaikaggler.connpass.com/event/316950/(2024/7/5) https://connpass.com/event/290248/(資料あり) n Kaggle Grandmasterなりました振り返り GMになると振り返り記事を書くしきたり https://yu4u.hatenadiary.org/entry/2023/01/15/185119#%E5%8F% 82%E8%80%83%E6%96%87%E7%8C%AE

Slide 9

Slide 9 text

© GO Inc. 9 Kaggleで一番辛いとき Weight 0

Slide 10

Slide 10 text

© GO Inc. 10 コンペの流れ タスク理解 EDA 仮説検証 モデル 最適化 ベースライン 構築 チーム マージ コンペ 終了 反省会

Slide 11

Slide 11 text

© GO Inc. 11 タスク理解/EDA n 基本的なEDAはdiscussion, codeを眺めてキャッチアップ のんびり全体像を把握 適宜気になる情報はメモとして蓄積 Discussionは全部読む n ベースラインの構築に向けて提供データ、目的変数、評 価指標を理解 適宜追加でEDAを実施 必要に応じてドメイン知識もキャッチアップ ChatGPTで捗る n 過去の類似タスクのコンペも参照(特にシリーズもの)

Slide 12

Slide 12 text

© GO Inc. 12 Probing n コードコンペにおいて、(private)テストデータの情報 を取得する行為 Shake downしないため・shake upを狙うため n Submission時に得られるテストデータの情報に応じて Notebookの終了時間をsleepして調整 既にスコアの分かっている複数の結果のどれを投稿するか分岐 https://www.kaggle.com/code/tomooinubushi/lb-probing- notebook-for-hms n あるプラットフォームでは以前例外メッセージが見れた 例外メッセージにテストデータの情報を入れられた 何も分からないKaggle notebook subのエラーと対照的な優しさ

Slide 13

Slide 13 text

© GO Inc. 13 ベースラインの構築 n 前処理、validation戦略、モデル構築、学習、評価のパイ プライン全体含めてベースライン n 「適切な」ベースライン構築が超重要 これができれば銀メダルは取れる印象 銀が簡単というわけではなく適切なベースライン構築が難しい Kaggleは0.1%の精度を競うと言われたりするが、 discussion/codeを見ない状態で取り組むと公開notebookにも勝 てないケースも多いのでは 乗っかる公開notebookを選択し(重要)、必要な要素をうまく 自分自身のパイプラインに取り込む 要素=前処理、split、Dataset、モデル

Slide 14

Slide 14 text

© GO Inc. 14 モデル構築 n 基本的にはデファクトスタンダードなライブラリを活用 n 画像コンペだと… timm:クラス分類、2Dバックボーン create_optimizer_v2, create_scheduler_v2とかも便利 mmdetection, YOLOv5/8:物体検出 YOLOv8は様々なタスクに対応 segmentation_models_pytorch:セグメンテーション mmaction2:3Dバックボーン MONAI:セグメンテーション、2D, 3Dバックボーン 3Dデータ拡張とかも n その他 albumentations:データ拡張 wandb:実験管理 pytorch-lightning:パイプライン構築

Slide 15

Slide 15 text

© GO Inc. 15 Validation戦略 n “testデータの状況を模倣(再現)した適切なvalidation strategyを設定” Kaggleへの取り組み方~validation編~ by @charmq さん https://docs.google.com/presentation/d/1cjZTtvBDiHci1Hl c33UH9LVJXyj2t5Hh9ZiHnp3BgVk/edit#slide=id.p n Leakを発生させない n コンペメトリックをちゃんと見る 取り合えず学習してみたくなりval lossで代替しがち n 可能ならhold outではなくK-Fold CV平均 Fold毎に結構ブレる

Slide 16

Slide 16 text

© GO Inc. 16 仮説検証・試行錯誤 n Kaggleの仮説検証・試行錯誤のプロセスはかなり (SOTA狙いの)研究と似ている 但しKaggleでは新規性・納得性・貢献は不要、結果が全て n 日々改善ネタを貯める 入浴中、通勤中、寝かしつけ中、コーヒーブレイク中、 discussion/code眺めながら n 必ず1つの仮説のみを検証 仮説=これが効くのではというネタの追加、ハイパラやバックボ ーン変更等、あらゆる変更

Slide 17

Slide 17 text

© GO Inc. 17 仮説検証の効率化 n 「全部やる」ための方法論 n 試行回数の増やし方 2021年度版 https://speakerdeck.com/butsugiri/increasing-number-of- attempts-ver-2021 n 研究効率化Tips 2024 https://speakerdeck.com/ryo_nakamura/yan-jiu-xiao-lu-hua- tipp-2024 n ChatGPT, GitHub Copilot等の活用 n wandb 導入簡単、勝手に色々モニタしてくれる、グラフも見やすい、比較 も簡単・直感的、再現用の実行コマンド・commit hashも教えてく れる、スマホでも見れる(中毒者)

Slide 18

Slide 18 text

© GO Inc. 18 ハイパラ自動最適化 n みんな大好きOptuna n 画像コンペだと1試行が重すぎて躊躇してしまう n Happywhale - Whale and Dolphin Identification 1st https://www.kaggle.com/competitions/happy-whale-and- dolphin/discussion/320192 小さい画像サイズやバックボーン設定でハイパラ最適化 得られたハイパラは大きな画像サイズやバックボーンでも汎化 自動じゃなくても軽いモデルで試行錯誤を早くするのは重要 n SIGNATE 鰹節コンペ2nd(体験談) https://www.slideshare.net/ren4yu/signate-2nd-place- solution 物体検出のアンサンブル手法weighted boxes fusionのモデルの weightとIoUしきい値を調整

Slide 19

Slide 19 text

© GO Inc. 19 アノテーション n 基本的にはKaggleでは学習データとして使えるアノテー ション情報が提供された状態でコンペが開催される n 追加でアノテーションを行うこと自体は許可されている がそこまで行われていない ラベルなしデータが提供されているケースが少ない アノテーションにドメインの専門性が必要

Slide 20

Slide 20 text

© GO Inc. 20 参加者がアノテーションを行っていたケース n Happywhale - Whale and Dolphin Identification クジラやイルカの個体識別を行うコンペ。顔認証と同様、まずは 個体の領域をcropする前処理が重要だがコンペとしては bounding boxデータが提供されていなかった https://www.kaggle.com/competitions/happy-whale-and- dolphin/discussion/311184 Bounding boxをアノテーションして公開 自身もアノテーション実施(独自にやっていた人は多かった) ある程度アノテーションした後に学習、全データで推論を行い、検 出ができなかった画像や、複数検出があった画像を目検し、学習デ ータを追加 所謂Human-in-the-Loop機械学習!

Slide 21

Slide 21 text

© GO Inc. 21 参加者がアノテーションを行っていたケース n Benetech - Making Graphs Accessible 複数種類のグラフ画像からの情報抽出 Benetechコンペ参戦記(1st solution) https://speakerdeck.com/yumeneko/benetechkonpecan-zhan- ji?slide=25 500枚アノテーション+10000枚半自動ラベリング

Slide 22

Slide 22 text

© GO Inc. 22 Human-in-the-Loop機械学習 n モデルだけではなくデータも(こそ)重要 昔からGarbage In, Garbage Outと言われている 近年はData-Centric AIがキーワードに n データセットをいかに高品質かつ効率的に作成するか Human-in-the-Loop機械学習本 n 第8回 Data-Centric AI勉強会 ~Human-in-the-Loop機械学習 特別回~ https://dcai-jp.connpass.com/ event/315963/

Slide 23

Slide 23 text

© GO Inc. 23 Pseudo Labeling n ラベルのないtrainやtestデータに訓練済みモデルで疑似ラベ ルを付与すること。効くかはやってみないと分からないが基本 品質の低いラベルありデータの修正に使ったり 物体検出タスクでtrainデータ疑似ラベルを「追加」 https://www.kaggle.com/competitions/hubmap-hacking-the- human-vasculature/discussion/428295 n 使い方も様々 train + pseudo train + pseudo -> trainでfinetune pseudo -> trainでfinetune 確信度の高いデータだけ追加 Pseudo labelingを複数回実施 https://www.kaggle.com/competitions/happy-whale-and- dolphin/discussion/320192

Slide 24

Slide 24 text

© GO Inc. 24 チームマージ n 信頼できそうな人・知り合いとマージしましょう! n マージ後やること Slackワークスペースの作成、現状のsolutionの共有、oofの共有、 コードの共有、アンサンブルsub Oofの共有とweight最適化は必ずやりたい Oofのフォーマットやweight最適化の手順を決めておくと良い 多様性重要 パイプラインが違うだけで多様性がありアンサンブルでgainがある 他の人と違うアーキテクチャ重要(1D, 2D, 2.5D, 3Dモデル等) (余談)基本的にみんなgreedyに最適化しているので、効いた・効 かないがバラバラ

Slide 25

Slide 25 text

© GO Inc. 25 初期マージ vs. 終盤マージ n 初期マージ 手分けしたいコンペ 様々なパイプラインが考えられる 1D, 2D, 2.5D, 3D マルチモーダルなデータ データの種類ごとにモデルを作るほうが良さそう コードコンペ n 終盤マージ クソデカモデルアンサンブルゲー csvコンペ

Slide 26

Slide 26 text

© GO Inc. 26 LeakとShakeは… n Shake 無理ゲー(モデルの推論がほぼrandom guessに近い) Public testとprivate testの分布が違う Hostからの言及・ほのめかしがあった 不意打ち

Slide 27

Slide 27 text

© GO Inc. 27 最終日、最終submission選択、祈り n チームでもソロでも最終submissionをどうするかはある 程度事前に決めておいた方が良い 直前だとLBの状態とかに左右されがち n 最終submission コンペの性質(CVが信頼できるのか等)によって決定 基本的にはCVスコアで1sub、後1つは攻めたsub 最終subをどうするか確証が持てるのは良いコンペ

Slide 28

Slide 28 text

© GO Inc. 28 Solution作成・反省会・top solution再現 n Solutionは終了前に完成させて、終了と同時に投稿する のがお勧め 金圏じゃなくても読んでもらえる n Top solutionは把握しておいて次コンペでのoption・武 器として持っておくだけでも(言い訳)

Slide 29

Slide 29 text

© GO Inc. 29 そして次のコンペへ…