Upgrade to Pro — share decks privately, control downloads, hide ads and more …

競技としてのKaggle、役に立つKaggle

yu4u
April 25, 2024

 競技としてのKaggle、役に立つKaggle

Kaggle Masterが語るMachineLearning - TechLovers #1
https://sony.connpass.com/event/315090/
での登壇資料です。
コンペの流れとtips的な情報を主観強めで紹介しています。

yu4u

April 25, 2024
Tweet

More Decks by yu4u

Other Decks in Technology

Transcript

  1. © GO Inc. 2 自己紹介 @yu4u n Kaggle Competitions Grandmaster

    https://www.kaggle.com/ren4yu n SIGNATE Grandmaster https://signate.jp/users/11285 n 画像コンペメインでやっています
  2. © 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 画像コンペ前提の話多め
  3. © 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
  4. © GO Inc. 10 コンペの流れ タスク理解 EDA 仮説検証 モデル 最適化

    ベースライン 構築 チーム マージ コンペ 終了 反省会
  5. © GO Inc. 11 タスク理解/EDA n 基本的なEDAはdiscussion, codeを眺めてキャッチアップ のんびり全体像を把握 適宜気になる情報はメモとして蓄積

    Discussionは全部読む n ベースラインの構築に向けて提供データ、目的変数、評 価指標を理解 適宜追加でEDAを実施 必要に応じてドメイン知識もキャッチアップ ChatGPTで捗る n 過去の類似タスクのコンペも参照(特にシリーズもの)
  6. © 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のエラーと対照的な優しさ
  7. © GO Inc. 13 ベースラインの構築 n 前処理、validation戦略、モデル構築、学習、評価のパイ プライン全体含めてベースライン n 「適切な」ベースライン構築が超重要

    これができれば銀メダルは取れる印象 銀が簡単というわけではなく適切なベースライン構築が難しい Kaggleは0.1%の精度を競うと言われたりするが、 discussion/codeを見ない状態で取り組むと公開notebookにも勝 てないケースも多いのでは 乗っかる公開notebookを選択し(重要)、必要な要素をうまく 自分自身のパイプラインに取り込む 要素=前処理、split、Dataset、モデル
  8. © 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:パイプライン構築
  9. © 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毎に結構ブレる
  10. © GO Inc. 16 仮説検証・試行錯誤 n Kaggleの仮説検証・試行錯誤のプロセスはかなり (SOTA狙いの)研究と似ている 但しKaggleでは新規性・納得性・貢献は不要、結果が全て n

    日々改善ネタを貯める 入浴中、通勤中、寝かしつけ中、コーヒーブレイク中、 discussion/code眺めながら n 必ず1つの仮説のみを検証 仮説=これが効くのではというネタの追加、ハイパラやバックボ ーン変更等、あらゆる変更
  11. © 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も教えてく れる、スマホでも見れる(中毒者)
  12. © 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しきい値を調整
  13. © 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機械学習!
  14. © GO Inc. 21 参加者がアノテーションを行っていたケース n Benetech - Making Graphs

    Accessible 複数種類のグラフ画像からの情報抽出 Benetechコンペ参戦記(1st solution) https://speakerdeck.com/yumeneko/benetechkonpecan-zhan- ji?slide=25 500枚アノテーション+10000枚半自動ラベリング
  15. © 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/
  16. © 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
  17. © GO Inc. 24 チームマージ n 信頼できそうな人・知り合いとマージしましょう! n マージ後やること Slackワークスペースの作成、現状のsolutionの共有、oofの共有、

    コードの共有、アンサンブルsub Oofの共有とweight最適化は必ずやりたい Oofのフォーマットやweight最適化の手順を決めておくと良い 多様性重要 パイプラインが違うだけで多様性がありアンサンブルでgainがある 他の人と違うアーキテクチャ重要(1D, 2D, 2.5D, 3Dモデル等) (余談)基本的にみんなgreedyに最適化しているので、効いた・効 かないがバラバラ
  18. © GO Inc. 25 初期マージ vs. 終盤マージ n 初期マージ 手分けしたいコンペ

    様々なパイプラインが考えられる 1D, 2D, 2.5D, 3D マルチモーダルなデータ データの種類ごとにモデルを作るほうが良さそう コードコンペ n 終盤マージ クソデカモデルアンサンブルゲー csvコンペ
  19. © GO Inc. 26 LeakとShakeは… n Shake 無理ゲー(モデルの推論がほぼrandom guessに近い) Public

    testとprivate testの分布が違う Hostからの言及・ほのめかしがあった 不意打ち
  20. © GO Inc. 27 最終日、最終submission選択、祈り n チームでもソロでも最終submissionをどうするかはある 程度事前に決めておいた方が良い 直前だとLBの状態とかに左右されがち n

    最終submission コンペの性質(CVが信頼できるのか等)によって決定 基本的にはCVスコアで1sub、後1つは攻めたsub 最終subをどうするか確証が持てるのは良いコンペ