Slide 1

Slide 1 text

全国医療AIコンテスト 1st place solution 2021/03/27   チズチズ  abap34 team: 🦾😢

Slide 2

Slide 2 text

自己紹介 越智優真(チズチズ) ● 千葉大学教育学部附属中学校 3年 ● Kaggle Expert ● 医学素人、機械学習素人 ● 最近は量子コンピュータとギターにお熱 ● 専攻分野 なんでも

Slide 3

Slide 3 text

自己紹介 abap34 - 東海高校二年生(春から受験生) - 機械学習に興味, 色々開発(コンペ少し) - 医学素人機械学習素人

Slide 4

Slide 4 text

モデリングのTips、全体的なアプローチ ● Global Average Pooling ○ 時間軸でたたむ ● Multiple Input ○ 年齢、性別 ○ concat→Dense ● SWA ○ 重みを平均化(≠局所最適) ● SAM ○ ロバスト性が高まる(≠局所最適) ● 多様性を意識 ○ アンサンブルを想定 ○ 色々なアーキテクチャ 最終層でage, sexを入力

Slide 5

Slide 5 text

最終的なアンサンブルに使ったモデル - ResNet的機構を導入したConv1Dモデル(https://arxiv.org/abs/1805.00794v1) - それのoptimizerにSWAを適用したバージョン - それのPseudoLabelingなどを適用したバージョンのモデル - LSTM - よりResNet的なConv1dモデル - WaveNet

Slide 6

Slide 6 text

A Deep Transferable Representation Model(?) ● ECG分類用に作られたアーキテクチャ ● Kaggle Notebookにて発見 ● ResNet的なブロックがある ● 深さ Is All You Need (Baselineがマッチョになったイメージ) https://arxiv.org/abs/1805.00794v1 + Pseudo Labeling, Label Smoothing(後述)でPrivate 4位相当のスコア

Slide 7

Slide 7 text

LSTM ● 終盤、アンサンブルのため急遽作成 (多様性のあるモデル作りの一貫 ) ● あまり詰め切れていない (が、それなりのスコアが出たのでアンサンブルに採用 )

Slide 8

Slide 8 text

ECG分類のためのコード(ResBlock) ● 今回と同じ12誘導心電図を使ったモデル ● とてもResNetっぽい ● Paper with codeで漁ってたら発見 kernel size:12 → 5 層の数を数百まで減らしたらよく適合した https://www.nature.com/articles/s41467-020-15432-4

Slide 9

Slide 9 text

work approach - Cross Validation - Label Smoothing - WaveNet - Pseudo Labeling

Slide 10

Slide 10 text

label-type train test

Slide 11

Slide 11 text

CV構築 ~label typeと年齢の関係 label typeによる分布の変化

Slide 12

Slide 12 text

label typeと性別 train-auto test train-human vs

Slide 13

Slide 13 text

CrossValidation - testデータは全てlabel_type==”human”(手動ラベリング) => これにvalidationを近づけたい - trainをauto/humanで分離 - validationはhumanのみから取り出す human auto train ここをStratifiedKFold 常にtrain

Slide 14

Slide 14 text

label smoothing - autoでつけられたラベルは多少Noisyであると予想 => label smoothingでロバストなモデルに(↑0.002, 0.005)

Slide 15

Slide 15 text

結果 shake up!

Slide 16

Slide 16 text

WaveNet - 層が深くなるにつれて、「とびとびで」畳み込みを行うネットワーク https://qiita.com/MasaEguchi/items/cd5f7e9735a120f27e2a

Slide 17

Slide 17 text

WaveNet モデル全体 入力付近 出力付近(age, sex入力部)

Slide 18

Slide 18 text

WaveNet - 単モデルでPublic5位/Private3位相当のスコア - 学習の安定性、速度、精度どれも良く、非常に強力

Slide 19

Slide 19 text

Pseudo Labeling ● 0.05を閾値に ○ 約6000データ を追加 ● 0.003程改善 0.05 0.95 Pseudo あり Pseudo なし private public

Slide 20

Slide 20 text

Not worked ● NN以外のアプローチ ○ tsfresh ○ その他特徴抽出 ● フィルタ ○ 平滑化 ○ 微分 ○ 画像アプローチ (12方向からのデータを扱うのが難しい + 事前学習済みモデル使用不可) => NN以外は難しかった :ランダムフォレスト

Slide 21

Slide 21 text

役割分担など コンペの進め方 - 寝たら、多分負ける => 常に通話を繋ぎっぱなしにして作業 連続的に相互に役割を割り振る - お互い機械学習・医学系の専門的な教育を受けているわけではない => とにかく実験(理由づけは後からでも良い ) 反省点 - 最終盤の流れだけは「きっちりと」決めておくべきだった (最終的にアンサンブルが雑になってしまった ) - コードを共有する仕組みは短期間コンペでも整えておいた方が良い (バグを解決する一番の方法は、チームメイトに見せることかも )

Slide 22

Slide 22 text

まとめ - NNが強かった - 信頼できるCVで高速な実験 - ロバストモデル + pseudo labeling + 多様性のあるモデリング + でshake up!