1 of 6

全国医療AIコンテスト 2021

Conpass link

Code is available here

京都大学薬学研究科

井ノ上雄一

2 of 6

Task

  • 心電図から心筋梗塞かどうかを判定
  • データサイズ:Train 2000, Test 8000
  • Trainは半分が医師がつけたラベル、半分は自動でつけられたラベル
  • Testはすべて医師がラベル
  • Meta dataとして年齢、性別が与えられていた。
  • 心電図は12種類の誘導があった(12 channelの時系列データ)

3 of 6

Best single model

Input: (800, 12)のRaw Data

Global Max Pooling

Dense x 2

Sigmoid -> BCE

Conv1D kernel=3

channel=128

Conv1D kernel=11

channel=128

Conv1D kernel=21

channel=128

Conv1D kernel=31

channel=128

Concat: (800, 512)

Conv1D kernel=1, channel 512

Transformer

Encoder

Multi head=2

Layer=1

CV5: 0.96731

Public: 0.96192

Private: 0.96522

  • Layerを増やすとだめ
  • Kernel sizeこれ以上増やすのも微妙
  • Kernel size減らしたらCV良くなるけどPublic/Privateは悪い

4 of 6

Final score, ensemble of 5 models

Input: (800, 12)のRaw Data

Global Max Pooling

Dense x 2

Sigmoid -> BCE

Conv1D kernel=3

channel=128

Conv1D kernel=11

channel=128

Conv1D kernel=21

channel=128

Conv1D kernel=31

channel=128

Concat: (800, 512)

Conv1D kernel=1

Transformer

Encoder

Multi head=2

Layer=1

CV5: 0.97392

Public: 0.96434 (1位)

Private: 0.96607 (2位)

Multi head = 4

kernel=3, 5, 7, 11

Add LSTM before and after Transformer

5 of 6

What didn’t work

  • Human labelにWeightをかけて学習 (loss, human:auto=1:0.5)�Weightかけないほうが普通に精度良かった。
  • Denoising AEで全データを使ってPretrain (Open Vaccineのコンペ参照 Link)�CVは良くなったけど、LBはかなり悪化
  • Transformerなし、LSTMのみ

6 of 6

Next steps...

  • メタ情報を入れる。
  • Pseudo labeling
  • 全然違うArchitectureのモデル(2DCNNとか)
  • Human, Autoをうまく使い分ける。