Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
鳥コンペ反省会資料
Search
Hidehisa Arai
September 26, 2020
Technology
6.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
鳥コンペ反省会資料
6位の解法です。
Hidehisa Arai
September 26, 2020
More Decks by Hidehisa Arai
See All by Hidehisa Arai
世界モデルにおける分布外データ対応の方法論
koukyo1994
7
2.4k
生成AIの二大潮流と自動運転
koukyo1994
22
25k
ICML2021論文読み会資料
koukyo1994
2
1.7k
【2019-06-19】アルゴリズム勉強会 - 最小全域木
koukyo1994
0
320
Kaggle昔?話
koukyo1994
2
2.6k
コンペ中のコード、どうしてる?
koukyo1994
3
2.4k
変数間の関係を捉えたいあなたへ
koukyo1994
3
1.9k
脱! Deepでポン🎶ハイパラチューニング芸人を卒業するために
koukyo1994
7
4.9k
鳥蛙コンペ反省会資料
koukyo1994
3
1.5k
Other Decks in Technology
See All in Technology
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
140
OR学会2026年秋期大会_機械学習と数理最適化の融合による、配合レシピ最適化システム開発事例
brainpadpr
0
130
Running Kotlin + Quarkus with Lambda
nealle
1
450
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
340
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
2.2k
Classmethod Company Deck
satoshi7
0
130
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
370
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
310
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
130
全PRの83%が AIレビューだけでマージできるようになった開発組織は その後どうなったか @2026/10
athug
0
140
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
300
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
1.6k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
220
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
560
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
400
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
530
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
430
Transcript
⿃コンペ反省会 6位解法 チーム「Deepでポン」 Hidehisa Arai 1
⾃⼰紹介 @kaggle_araisan https://www.kaggle.com/hidehisaarai1213 かつてKaggle Masterのアライさんという名前 でKaggleをやっていたアライグマ 東⼤航空宇宙の修⼠3年⽣をしながらNABLAS という会社でパートタイムResearcherをして いる Audioデータは昨年のFreesound
Audio Tagging 2019のコンペティションが初めてで その後業務でチョットダケ扱っていた 2
結果 Public 2nd (0.628) → Private 6th (0.668) 3
解法概要 4 • 3ステージの学習によって段階的にラベルのノイズを除去 • Sound Event Detection(SED)スタイルの学習および推論 • 全データで学習
+ EMAのモデル11個の重み付き和でアンサンブル
コンペの主課題 Train/Testの乖離 (Domain Shift) WeakかつNoisyなラベル 1. ⾳データの出⾃ • Train: Xeno
Cantoに収録者がアップ ロード • Test: (おそらく)野外設置型マイクロ フォンで取っている 2. アノテーション • Train: アップローダがつけた⾳クリッ プごとのラベル • Test: アノテータがつけたchunk(⼩区 間)ごとのラベル Trainのラベルはクリップごとにしか存在しな い(weak label)上に、主ラベルは1つのみ secondary_labelsという副ラベルがある場合も あるが信頼性はまちまち(noisy label) secondary_labelsはアップローダがつけていな い場合もあり、複数種の⿃が鳴いていてもつい ていない場合もある(missing label) nocallクラスはTestにしか存在しない 5
モチベーション ‒ domain shift Domain Shiftを分解して考える : ⼊⼒、: ラベル、∗: 真のラベル(観測できない)
"#$": "#$" → "#$" を推定するのが今回のタスク !"#$% ≠ (!&'! ) TrainとTestでは⼊⼒の性質が 異なる • 集⾳環境の違いに由来 • Testは遠くの⽅で⿃が鳴い ていることが多くSNRが⼩ さめ • ⿃の声以外の⾳イベントの 頻度や種類・傾向なども異 なる(と考えられる) !"#$% ∗ ≠ (!&'! ∗ ) TrainとTestでは真のラベルの 出現頻度が異なる • 集⾳場所の違いなどに由来 • 集⾳地点の⿃の分布や鳴き ⽅の差が反映されて分布差 が出る • Testはパッシブなため、 nocallが多いことも分布差に つながっている !"#$% ≠ !&'! TrainとTestでは⼊出⼒の対応 関係がそもそも違う • アノテーション⽅法の違い に由来 • Trainはアノテータが投稿者 なのでアノテーションには ⼤きなばらつきがある • Testはアノテーションがコ ントロールされている上、 chunk levelでラベルがある 6
モチベーション ‒ domain shift TrainとTestでは⼊⼒の性質が 異なる • 集⾳環境の違いに由来 • Testは遠くの⽅で⿃が鳴い
ていることが多くSNRが⼩ さめ • ⿃の声以外の⾳イベントの 頻度や種類・傾向なども異 なる(と考えられる) TrainとTestでは真のラベルの 出現頻度が異なる • 集⾳場所の違いなどに由来 • 集⾳地点の⿃の分布や鳴き ⽅の差が反映されて分布差 が出る • Testはパッシブなため、 nocallが多いことも分布差に つながっている !"#$% ≠ !&'! TrainとTestでは⼊出⼒の対応 関係がそもそも違う • アノテーション⽅法の違い に由来 • Trainはアノテータが投稿者 なのでアノテーションには ⼤きなばらつきがある • Testはアノテーションがコ ントロールされている上、 chunk levelでラベルがある Data Augmentationであり得 るバリエーションを網羅 ラベル⽐率を変えたデータで学 習させたモデルをアンサンブル ラベルの修正を⾏なって!"#$% を!&'! に近づける 7 !"#$% ≠ (!&'! ) !"#$% ∗ ≠ (!&'! ∗ )
モチベーション ‒ label noise Label Noiseを分解して考える Weak labelはnoisy label ラベルがクリップごとにしか存
在しないこと⾃体がnoisy Labelにある⿃の声がない場合がある 主ラベルは概ね信じていいが、⾳ クリップ上でまばらな場合が多い 副ラベルはよりまばらでほとんど 聞こえない場合もある Labelにない⿃の声がある場合もある 2/3の学習データは副ラベルが ない 副ラベルをつけるかどうかは投 稿者に委ねられているため、 missing labelもある 8 ラベル: aldfly, leafly, amered, canwar ラベル: warvir
モチベーション ‒ label noise 9 Weak labelはnoisy label ラベルがクリップごとにしか存 在しないこと⾃体がnoisy
Labelにある⿃の声がない場合がある 主ラベルは概ね信じていいが、⾳ クリップ上でまばらな場合が多い 副ラベルはよりまばらでほとんど 聞こえない場合もある Labelにない⿃の声がある場合もある 2/3の学習データは副ラベルが ない 副ラベルをつけるかどうかは投 稿者に委ねられているため、 missing labelもある 学習を⻑いchunkで⾏うことで chunkにラベル中の⿃の声が⼊ るようにする 蒸留により信頼度の低いラベル を排除 学習させたモデルで副ラベルが ないデータからmissing label を発⾒
Sound Event Detection (SED) 10 今回のタスクを解くには⼤きく⼆つの⽴場がある Audio Tagging Sound Event
Detection ⼊⼒の⾳クリップ単位でラベルづけを⾏う ⼊⼒に時間情報込みでラベルづけを⾏う 時間⽅向に集約 (max, mean, attention,…) Feature Extractor 特徴マップ ⼊⼒ (waveform,melspec,…) 特徴抽出 CNNなど Feature Extractor 特徴マップ ⼊⼒ (waveform,melspec,…) 特徴抽出 CNNなど Pointwise Classifier Classifier Clip-level予測 Frame-level予測 時間⽅向に集約 (max, mean, attention,…) 出⼒はClip-level予測と Frame-level予測の2つ
Stage 1 11 5fold PANNsでmissing labelを⾒つける • PANNsのCnn14DecisionLevelAtt • ⼊⼒は30sでクロップしたchunk←Weak
label対策 • Data Augmentation ←()のシフト対策 • Gaussian Noise • Pitch Shift • Volume Up/Down • Lossはclipwise outputとframewise outputの両⽅ にかける • 5fold学習し、Out-of-Foldの予測でTrain全体の予 測を作る • 副ラベルがないデータに絞って確率が>0.9かつ主 ラベルではないクラスを副ラベルに追加←missing label対策 Attention map 要素積をとった後時 間⽅向に潰して集約 Feature Extractor Segment-wise予測 Clip-level予測 (maxで集約) Clip-level予測 (attentionで集約) ℒ = , ( !"" + 0.5(, ( #!$) Attention map → 0.578(public) / 0.619(private) (銀圏)
Stage 2 12 5foldのSEDモデルでラベルの蒸留 • PANNsのアーキテクチャを継承 • CNNをResNeSt50に変更 • Stage1で⾒つけた追加ラベル使⽤
←missing label 対策 • ⼊⼒は20sでクロップしたchunk←Weak label対策 • Data Augmentation ←()のシフト対策 • Gaussian Noise • Pitch Shift • Volume Up/Down • 3channel input (melspec, pcen, melspec ** 1.5) • Lossはclipwise outputとframewise outputの両⽅ にかける • 5fold学習し、Out-of-FoldのFrame-wise予測を得 る • 元のラベルをoofの予測で修正 ←noisy label対策 264 n_frame(≠len(y)) クロップされたchunk Frame-wise予測 元のClipごとのラベル Chunk内の予測(確率値)を frame⽅向にmaxで集約し 閾値をかける np.logical_and 修正されたラベル 閾値を変えることで修正の度合いを変 化させモデルに多様性を与えられる → 0.601(public) / 0.655(private) (⾦圏)
Stage 3 13 ラベル修正の度合いを変化させた複数のモデルをAll data + EMAで学習しアンサンブルの種を⽤意 • PANNsのアーキテクチャ +
ResNeSt50/EfficientNet-B0 • Train Dataset/Train ExtendedのAll data training • Stage1で⾒つけた追加ラベル使⽤ ←missing label対策 • ⼊⼒は20sでクロップしたchunk←Weak label対策 • Data Augmentation ←()のシフト対策 • Gaussian Noise • Pitch Shift • Volume Up/Down • 3channel input (melspec, pcen, melspec ** 1.5) • Lossはclipwise outputとframewise outputの両⽅にかけ る(EfficientNetはFocalLossを使⽤) • 元のラベルをoofの予測で修正 ←noisy label対策 • Oof予測にかける閾値を0.3-0.7で変えてラベル修正の度 合いを変化させる ←(∗)のシフト対策 • 合計11個のモデルの重み付け平均(重みはpublic LB参考 に⼿動調整) ※ All data + EMA: Foldを切らずに全データを Trainに使い、重みのExponential Moving Averageをとったモデルを使うこと → 0.628(public) / 0.668(private) (⾦圏) librosa.power_to_db(librosa.feature.melspectrogram(y, )) librosa.pcen(librosa.feature.melspectrogram(y)) librosa.power_to_db(librosa.feature.melspectrogram(y) ** 1.5)
なぜ負けたのか? 14 優勝したいなら圧倒的な差をつけないと厳しいコンペだった ラスト2週間の戦略の失敗 • 新しいことを試さず、アンサンブルの種を ずっと作っていた • 学習時間が2倍強になるためExtendedデー タセットをギリギリまで使わなかった
• Stage2とStage3でprivate scoreはほとんど 変わっていなかった・・・(丸1ヶ⽉無駄に) 締め切り前⽇に気付くアライグマ
その他諸々 15 その他反省点 • Seedを固定する関数にバグがあり再 現性が取れなくなった、しかも気が ついたのがStage3の学習をしていた とき • パイプラインが複雑化した結果、新
しく加えた変更で過去の実験が再現 できなくなった • 結局1実験1scriptが⼀番わかり やすい(CPMPも⾔ってる) • Augmentationをエイヤで決めたのがた またまワークしてしまったので使い 続けていたが、pitch shiftが死ぬほ ど遅かったので削れば1.5倍くらい実 験ができたはず・・・ • 優勝者の解法でおそらくhard voting がかなり効いていたが、試しもせず 可能性を排除してしまった 効かなかったこと • Mixup • Logとる前に混ぜる(2nd,36th) • ラベルはUnionをとる(3rd ,36th) などが効いたらしい • Calltype classification • 実は⿃の鳴き声は複数パターンある • ⼤雑把に⾔ってもCallとSongはかな り異なるので別のクラスとして扱う • Calltypeというカラムがあったので ⼿作業で綺麗にして871クラス分類 するも変わらず • Larger model • 5thのOlegによると局所受容野が⼤き すぎるとダメらしい 時間があればやりたかったこと • モデルを増やす • ラベルの修正を繰り返す • Locationとelevation予測を分類の修 正に使う • ⿃の共起情報をもとに予測を後処理で 修正 • 背景雑⾳を混ぜ込む
Goldメダルはどうやれば取れるのか? • コンペの主題(メインの課題)を正確に把握すること • Bengaliのようにあまりはっきりと書かれていない場合もある • 最近はnoisy labelやdomain shiftが多かった(MLの研究の場でもホットな話題) •
Discussion / Notebookには⼀通り⽬を通す • 公開情報で役に⽴つことは全てやるのが前提 • 「みんながやっていること」は全部やった上でやっている⼈が少なさそうなことを試す • Notebookはノイズも多いのでDiscussion重視⽬(特にGMとか強そうなMasterが集まってるところ) • 難しいタスクは案外⽳場 • とりあえず⼿をつけやすいタスクは乱戦模様になりがち • 0.000xを競うタスクは⼿数の勝負になることもある • 2sub/dayはソロの味⽅ • Discussion/Notebookを投稿すると⾃分に有利になることもある • 議論が進む • コンペの流れを⽀配できる 16