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

20240803_関東kaggler会_HMS振り返り&チームで取り組むkaggle

 20240803_関東kaggler会_HMS振り返り&チームで取り組むkaggle

※発言は会社を代表するもではなく個人的な意見です。

下記イベントで登壇した時の資料です。
https://connpass.com/event/290248/

yu4u氏の招待講演、カグル部立ち上げ話などはコチラ。
https://www.youtube.com/watch?v=aqyGkEU0Iww

suguuuuuすぐー

August 02, 2024
Tweet

More Decks by suguuuuuすぐー

Other Decks in Technology

Transcript

  1. 2024/08/03 第2回 関東kaggler会 2 自己紹介:小林 秀(こばやし すぐる) ◆ AI/組み込みソフトウェアエンジニア @

    ソニー株式会社 ➢ 一眼カメラ向けのAI開発や、AIを使った応用技術の開発 ◆ Kaggle Master ➢ https://www.kaggle.com/sugupoko ➢ 金2枚 (入賞1回)、年1枚くらいペース ◆ 専門は画像だけど、興味のあるコンペはなんでも出ちゃう ➢ LLMコンペ、とかとか。 ◆ 参加スタンス:社内結成チーム、おしゃべり好きなので。 普段のアイコンは コレ⇒
  2. 2024/08/03 第2回 関東kaggler会 3 題材とするコンペティションと今日の内容 1位でした! HMS – Harmful Brain

    Activity Classification https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification 開催期間:2024年1月8日 – 4月8日 脳波(EEG)から、発作など6種類の症状を判定するタスク ソニーメンバで構成される5名で参加、 コンペの振り返りをしつつ、チームでどのように取り組んだかをシェア
  3. 2024/08/03 第2回 関東kaggler会 4 どんなコンペ? EEGデータ(18種) 複数の専門家がどの症状かを判定 → 人数分の投票結果(≒どの症状らしいかの分布) 予測モデル

    ※これを作る 予測結果 分布が近くなるようにモデルを作る 扱うデータ:頭部にとりつけた複数の電極から得られる時系列データ 予測対象 :複数の時系列データから、6つの症状のどれらしいか
  4. 2024/08/03 第2回 関東kaggler会 6 基本的なアプローチは?(ベースライン解説) 以下のようなアプローチが公開 1. 周波数変換のアプローチ(EEG → スペクトログラム

    → 2D CNN など) • 画像用のモデル(Resnet, Efficientnetや、Vision Transformerなど)はライブラリで簡単に多種多様なものが使える 2. rawEEGを扱うアプローチ(EEG → 1D CNN など) • こちらのアプローチでは1D CNNのため独自実装が多め スペクトログラム計算 & タイル状に配置 ※実際は1つの電極からではなく、 近傍の電極同士の差分時系列から 2D Model (CNN, ViT) ※こちらも近傍の電極同士の差分時系列など 1D Model (1D CNN)
  5. 2024/08/03 第2回 関東kaggler会 8 ソリューションの重要ポイントは? 1. データの選定 ➢ CV strategy

    (vote >= 10) 2. 様々な信号表現を利用しアンサンブル ➢ 周波数変換のアプローチ (STFT, CWT, Superlets) ➢ raw EEGを使うアプローチ (1d, 2d), 3. Softmax から Entmaxへ 1st place solution紹介
  6. 2024/08/03 第2回 関東kaggler会 9 ソリューションの重要ポイントは? 1. データの選定 ➢ CV strategy

    (vote >= 10) 2. 様々な信号表現を利用しアンサンブル ➢ 周波数変換のアプローチ (STFT, CWT, Superlets) ➢ raw EEGを使うアプローチ (1d, 2d), 3. Softmax から Entmaxへ このコンペでおそらく一番のポイントだったところ 1st place solution紹介
  7. 2024/08/03 第2回 関東kaggler会 10 ベースラインの問題点と、ベースラインを越えるポイントは? 1. 周波数変換のアプローチ(EEG → スペクトログラム →

    2D CNN など) • 画像用のモデル(Resnet, Efficientnetや、Vision Transformerなど)はライブラリで簡単に多種多様なものが使える 2. rawEEGを扱うアプローチ(EEG → 1D CNN など) • こちらのアプローチでは1D CNNのため独自実装が多め スペクトログラム計算 & タイル状に配置 ※実際は1つの電極からではなく、 近傍の電極同士の差分時系列から 2D Model (CNN, ViT) ※こちらも近傍の電極同士の差分時系列など 1D Model (1D CNN) 1.の問題点:STFTだと非定常性の高い信号を捉えるのが難しい 2.の問題点:1D信号を使う場合、電極間の相関をうまく学習できていない ポイント:”非定常性の高い信号” & “電極間の相関” を学習できる方法への変更 1st place solution紹介
  8. 2024/08/03 第2回 関東kaggler会 11 なぜ、「非定常性の高い信号」と、「電極の相関」の学習が必要なのか? ◆ 脳症状の信号特性は、「側片性」 と 「周期性」が特徴的なため ➢

    側片性:脳の片側 or 全体で起きている特徴かどうか ➢ 周期性:リズミカルな信号か、鋭い信号か サンプル:片側に局在し、繰り返しパターンがある症状 電極の設置位置 この問題に対処した表現や、それぞれに特化した複数モデルのアンサンブルが必要 1st place solution紹介
  9. 2024/08/03 第2回 関東kaggler会 12 1. 周波数変換のアプローチ でのベースラインの超え方 ◆ 問題点:STFTだと非定常性の高い信号を捉えるのが難しい ➢

    Fourier変換 : 固定窓サイズで信号の時間周波数解析、定常性信号を捉えることが可能 ◆ 対策:連続ウェーブレット変換(CWT)やSuperlets変換を利用 ➢ Wavelet変換 : 多解像度分析が可能で、異なるスケールでの信号特性を捉えることで、非定常性信号を捉えられる ➢ Superlets変換:複数のウェーブレット変換を組み合わせることで、時間・周波数のトレードオフを解消 ※STFTで複数パラメータで生成することで対処も可能 1st place solution紹介 参考:Superlets: 時間-周波数解析における「超解像度」filterbank (zenn.dev)
  10. 2024/08/03 第2回 関東kaggler会 13 2. raw EEGベースのアプローチ でのベースラインの超え方 ◆ 問題点:1D信号を使う場合、電極間の相関をうまく学習できていない

    ◆ 対策: ➢ 1: 1D信号を2D画像として表現し2DCNNで学習 ➢ 2: 1DCNNでチャネルを増やし画像化2DCNNで学習 1D信号を2D画像として表現し2DCNNで学習 1DCNNでチャネルを増やし画像化2DCNNで学習 1st place solution紹介
  11. 2024/08/03 第2回 関東kaggler会 14 他チーム解法例の紹介 (他の解法にもいろんな表現があるので見て見てね) ◆2位解法 • 3Dモデルの利用 •

    公開ノートでよくあったアプローチ: 各電極から得られる複数のスペクトログラムをチャンネル方向に重ねて2Dモデルで処理 • 2位のアプローチ: 3Dモデルで処理することで電極の位置関係も加味した畳み込みになり性能向上 ◆8位解法 • 単一のBigモデルで推論 • 専門家が判断に使う情報も利用 • 波形データのプロット画像 各解法をまとめてらっしゃる方もいるので、是非見て見てください - Kaggle-HMSコンペ 上位解法まとめ(+参加振り返り) (zenn.dev) 8位解法 処理フロー
  12. 2024/08/03 第2回 関東kaggler会 15 ソリューションの重要ポイントは? 1. データの選定 ➢ CV strategy

    (vote >= 10) 2. 様々な信号表現を利用しアンサンブル ➢ 周波数変換のアプローチ (STFT, CWT, Superlets) ➢ raw EEGを使うアプローチ (1d, 2d), 3. Softmax から Entmaxへ 1位にたどり着けた工夫 1st place solution紹介
  13. 2024/08/03 第2回 関東kaggler会 16 softmax → entmax ID Seizur e

    LPD GPD LRDA GRDA Other 0001 0.8 0.04 0.02 0.02 0.02 0.1 0002 0.1 0.4 0.3 0.01 0.05 0.14 0003 0.05 0.05 0.05 0.3 0.05 0.5 ほぼ全参加者がモデルの出力にsoftmaxを用いて、6クラスの和を1.0へ softmaxの特性上、それぞれの確率は基本的に0.0にならない 一方で、正解データは有限の専門家(多くて十数人)の投票数から作成されているため、 投票0となるクラスが多数存在 このギャップを埋めるため、それが可能な手法がないか調査 → softmaxの代わりにentmaxと呼ばれる関数を利用 → よりスパースな出力に近づく(=より正解データに近い形になる) 再学習の時間が無く、推論時のみ適応だったが効果あり ID Seizur e LPD GPD LRDA GRDA Other 0001 3 0 0 0 0 0 0002 0 4 3 0 0 2 0003 0 0 0 1 0 3 モデル出力のイメージ(確率0.0のクラスがない) 正解データのイメージ(確率0.0のクラスが多数) ※比較時はこれを合計1に正規化
  14. 2024/08/03 第2回 関東kaggler会 18 ソニーチームについて Sony Kaggle Team 「カグル部」 とは?

    ◆ コミュニティの立ち位置 ➢ ソニーグループの横ぐしWGで発足 ⚫ カグル部って名乗ってるけど、チーム名ですね ◆ コミュニティの目的 ➢ グループ会社を越えた人材交流 ➢ 参加者のスキルの向上 ➢ 社内への知見の共有 ◆ 部員数 (24/4 時点) ➢ 現在 45人 (Kaggle master 7人) ◆ 実績 (23/7~24/4) ➢ Kaggle : 2枚, 5枚, 5枚 ➢ Signate: 1枚 ➢ Nishika: 1枚, 1枚
  15. 2024/08/03 第2回 関東kaggler会 19 チームでの取りくみ方の全体 1. ベースラインの立ち上げはコード共有しない・役割は作らない ➢ どこにバグ・ミスがあるか分からないため 2.

    Validationを早めにfix ➢ アンサンブルするコンペとは参加時点で分かっていたため ➢ Fold番号をcsvで共有 3. モチベ維持のため定期的にMTG ➢ 週2回実施(プライベート優先) ➢ 毎回、次の打合せまでの目標を設定(例:次までにスコアX.XX到達) 4. 効率よく情報共有 ➢ 全員が見えるOneNoteに個別ページを作成 ➢ 実験結果や情報はチャットで適宜シェア
  16. 2024/08/03 第2回 関東kaggler会 20 エピソード紹介:ベースラインの立ち上げはコード共有しないでよかったこと ◆ 起きたこと:同じようなアプローチなのに一方は全く性能が出ない ◆ 原因:AMPのON/OFF ➢

    Averaged Mixed Precision(AMP)とは ➢ PyTorch中の一部の計算を,通常float32で計算するところ,float16で計算して,高速化するための技術 ampの有無で全く性能が変わっていた・・・
  17. 2024/08/03 第2回 関東kaggler会 22 スコア遷移とチームの雰囲気 1/2 2月末~ 活動開始(残り1カ月半、金メダルとれたらいいなー) 公開ノートブックの延長であれこれお試し 行き詰まる(CV-LB

    discussionでsingle model 0.25と言われてる → 自分たちは0.3切らない、、) ここで諦めないように踏ん張る 3/15~ 入力データ処理の変更などをダメ元で色々試す Public LBでやっとスコア0.3を切る(いけるかも、と思い始める) 0.2 0.25 0.3 0.35 0.4 0.45 0.5 ベースライン構築 & 試行錯誤の嵐 モデル量産 & 後処理でスコア改善
  18. 2024/08/03 第2回 関東kaggler会 23 0.2 0.25 0.3 0.35 0.4 0.45

    0.5 スコア遷移とチームの雰囲気 2/2 ベースライン構築 & 試行錯誤の嵐 モデル量産 & 後処理でスコア改善 3/17~ モデル増産 Public LBで0.27, 順位上がる(調子づく) 4/1~ Public 1位! 4/4~ Public 2位(一度1位になれたのでベストなPublic LBの順位で終わりたい、、、!) モデル増産に限界(提出時間ぎりぎり) あらためてEDAなどしつつ考える 4/5~ 後処理でスコア改善、Public 1位に戻る 4/8 提出時間ギリギリまでモデルを増やしてCV/Publicのスコアを上げきる 順位が上がるたびチャットにスクリーンショットが飛び交う (皆プライズ圏での競争に慣れてないので一喜一憂、 もはや Public Leaderboardしか見てない)
  19. 2024/08/03 第2回 関東kaggler会 24 まとめ ◆ HMSコンペで優勝 ➢ あらゆるアプローチを試したことが効いた ⚫

    停滞/じりじりスコア向上 → いい方法が見つかってグンとスコア向上、の繰り返し ➢ チームに向いていたコンペだった ⚫ CV-LB相関が高い → 実験の手数が増やせる ⚫ 1モデルの提出時間が短め → 複数アンサンブル可能、作ったモデルをすべて活かせる ➢ レベル感が揃っているメンバだったので切磋琢磨できた ◆ 社内メンバーでのチーム参加について ➢ 密に議論しやすいのでモチベーション維持できる ➢ 仕事で関わり得る人たちなので、良いとこ見せたい・手抜きできない ➢ 雑談しながら遠い社内情報を聞けるので楽しい(話せる範囲で) ◆ 再現性を出せるようにこれからも頑張ります。 ➢ leapはボロボロで悔しかったです・・・
  20. 2024/08/03 第2回 関東kaggler会 25 紹介:「カグル部」立ち上げの流れは、コチラの外部イベントでも話しています ◆ 案内ページ: Kaggle Masterが語るMachineLearning -

    TechLovers #1 - connpass ◆ Youtubeリンク: Kaggle Masterが語るMachineLearning - TechLovers #1 (youtube.com) ◆ Yu4u氏の招待講演はコチラ:競技としてのKaggle、役に立つKaggle - Speaker Deck
  21. EOF

  22. Kaggle Winner Presentation Template 27 Features Selection/Engineering ~summary~ •What were

    the most important points? 1. CV strategy (vote >= 10) 2. Using various representations: raw EEG(1d, 2d), Spectrogram(STFT, CWT, Superlet) 3. Replacing Softmax with Entmax •How did you select features? • We checked CV score for selecting input representations and 2d backbones. •Did you make any important feature transformations? • Frequency transformation • Treating raw EEG as the 2D image •Did you use external data? (if permitted) • No, we didn't use any external data.
  23. Kaggle Winner Presentation Template 28 Features Selection/Engineering ~1. CV strategy

    (vote >= 10)~ GitHub - bdsp-core/IIIC-SPaRCNet Since the test data has more than 10 votes, it is necessary to adjust the validation data accordingly. # Most other participants also followed this assumption.
  24. Kaggle Winner Presentation Template 29 Features Selection/Engineering ~2. Using various

    representations~ The important point is the variety of input representations raw EEG(1d->2d) CWT (morlet) CWT (Paul) Superlets
  25. Kaggle Winner Presentation Template 30 Features Selection/Engineering ~3. Replacing Softmax

    with Entmax~ • Assumption • The output of softmax is not zero for every target variable, but many training data labels have zero probability classes -> Sparse output may improve the score • What we did • Replacing softmax with entmax only during inference • entmax is the function that is like softmax, but entmax can generate more sparse output • We use α = 1.03 • Improving both public and private LB score ~0.004 [-2, 0, 0.5] softmax [0.049, 0.359, 0.592] entmax (α=1.5) [0.0, 0.326, 0.674] entmax (α=2.0) [0.0, 0.25, 0.75 ] = entmax (α=1.0)