📝

Kaggle 2024 HMS 全体的な解法のまとめ

2024/05/18に公開

2024/04 Kaggle HMS 全体的な解法のまとめ

概要

2024/01/10~2024/04/09で行われたHMS - Harmful Brain Activity Classificationの解法のまとめです

お題

コンペティションの目的

  • 脳の損傷を引き起こす可能性のある発作やその他の活動を検出し、迅速かつ正確に治療を行えるようにしたい
  • 今回は脳波から有害な活動の種類(異常のクラス)を分類する
    • 発作、特定の箇所における放電やデルタ活動、その他等の6つのパターンがある

分野における課題

  • 脳波(EEG)の監視は神経内科医の手動の分析のみに依存している
  • 時間・コストがかかっており、疲労によってミスもしやすく、神経内科医であってもレビューの信頼性に問題がある
    • 今回は脳波に対して複数人で行ったラベル付けについて、ラベル付けされたクラスの割合を学習・予測する
      • 例:ある脳波について10人がラベル付けを行った際、それぞれのクラスに[0, 3, 6, 0, 1, 0]人がラベル付けをした場合、学習・予測したいラベルは[0.0, 0.3, 0.6, 0.0, 0.1, 0.0]

コンペティションについて

データ

以下の二種類が提供。

  • EEG

    • wikipedia参照
    • 脳波を測定した19か所からの時系列データ
    • それぞれの箇所について50秒間、1秒当たり200サンプル
  • Spectrogram

    • 10分間のEEGデータを使用して作成された脳波の波形画像

ターゲット

  • ある脳波について、分類したい6つのラベルそれぞれに投票された数

評価指標

制約

  • コード形式、GPU/CPUで9時間
  • 実行時間には余裕があった

解法

全体的なアーキテクチャ

全体的なアーキテクチャは、大体以下の2通りに分類できそうだった。ただし、脳の位置を基準として信号を左右対称に扱えるようにした4位、特徴量をContrastiveに扱った9位などはアーキテクチャが異なる。詳細はそれぞれの元のDiscussionを参考。

注)詳細が記載されていなかったため、推測して判断・分類したものを含む。詳細は個別のDiscussionを参照。

個別のエンコーダ

概要

前半部分で時系列、または画像認識モデルを用いてシグナルから特徴量を抽出する。その後、特徴量についてReshapeし、結合することで画像として扱う。

以下は具体的な次元の例。

  1. 生データ

    • シグナル1つごとに元の入力の次元は(系列長, )

    • 一次元の時系列の場合はそのままか、秒数を変えてClipし、(幅, )を得る

    • 二次元の画像の場合はスペクトログラムに変換し、シグナル1つごとに(幅, 高さ, )を得る

  2. エンコーダ

    • シグナル1つごとの入力の次元は上記

    • 一次元の時系列の場合はシグナル1つごとに(系列長, 特徴量の長さ, )または(特徴量の長さ, )を得る

    • 二次元の画像の場合は(畳み込んだ幅, 畳み込んだ高さ, 特徴量の長さ, )または(特徴量の長さ, )を得る。

  3. Reshapeと結合はモデルや解法によって以下のパターンに分かれる。最終的に得られる画像は、やや横長か正方形に近い長方形になる。

    • Reshapeせず、縦に積み重ね、(任意の長さ, シグナル数)を得る
    • (任意の長さ, ...)を(縦, 横)にReshapeし、縦に積み重ね、(縦 x シグナル数, 横)を得る
    • (任意の長さ, ...)を(縦, 横)にReshapeし、縦・横にタイル状に並べ、(縦 x 縦に積んだ数, 横 x 横に積んだ数)を得る

3.において積み重ねる順番は性能に影響する。また、特定の位置における画像情報(脳の特定の部位・時間のシグナルがどうなっているか?)も大事であるためか、3.の後段の画像認識モデルには位置情報を残しやすいViT系が普段より使われた。

派生形・Aux Target
概要

先ほどのものに加え、前段部分でも学習を行うパターン。Aux Targetの予測内容は後段のモデルの予測内容と同一であるため、予測に使える。

また、このケースでは前段のエンコーダから得られる特徴量がAux Targetにより影響されているためか、後半のEmbeddingに対するモデルは軽量な傾向か。

一つのエンコーダ

概要

早い段階でシグナルの結合を行い、一つのエンコーダ・モデルで学習を行うパターン。変換の方法が1つのみのケースもこちらに含めた。結合・Reshapeの方法は後段の「アーキテクチャの構成要素の差異::Reshape / 結合」参考。

アーキテクチャの構成要素の差異

変換

シグナルを画像に変換する場合、変換方法が色々とある。

シグナルの統合

電極のシグナルを特定の位置の組合せ・計算方法を用いて統合する場合があり、これには様々なパターンが存在する。詳細はmontages & technicalitiesなどを参考。

変換処理
  • bandpass filter
  • STFT
  • CWT
  • メルスペクトログラム
  • その他
    • superlets
    • MFCC、LFCC、RMS

Reshape / 結合

1次元のシグナルや特徴量をReshapeして結合する場合、主に2通りある。

  • Reshapeしない + 縦積み
  • Reshapeして画像とする + タイリング(縦と横に並べる)

また、シグナルを結合させる順番、つまりどのシグナルとどのシグナルが隣り合うかが性能に影響した。

3位解法では基本的に各ノードの脳の左側と右側を一緒に見るような順番にしたとのこと。

学習

多段階の学習とデータの選択

  • 初回は全てのデータで、2回目にラベル付けを行った回数(以下、Vote数)が一定以上のデータで学習を行う

    • 論文においてテストデータがVote数が10個以上のものでフィルタリングされていた
      • 全体的なアノテーターが119人、エキスパートが20人おり、2群の間でラベルの分布が大きく異なる。投票数が10個以上のサンプルを用いることで後者を見つけることができる。
    • 論文通りの10個以上が多く、それ以外のパターンもあった
  • 初回はVote数が10個未満のデータ、2回目に投票数が10個以上のデータで学習を行う

  • Vote数に応じて重みづけ(Vote数が少ないほど小さく、多いほど大きく)を行い学習する

  • Vote数に応じてPseudo labelを用いる。場合によって重みづけして元のラベルと混合する。

  • Vote数に応じてHeadを分けて学習する。

Validation

  • 患者ごとのGroupKFoldが殆どか

Loss

  • 投票数を投票割合に変換する前に、各票に固定値を加える。これにより、投票数が少なく信頼度が低い場合により強い正規化が適用される
  • 投票数に応じてlossに重みづけを加える

予測

アンサンブル・スタキング

アンサンブルにより訓練データにオーバーフィットさせた場合、CVとpublic LBの相関は維持される傾向があった。そのため、FC層によるStackingが多かった印象。

参考文献

順位 ディスカッション コード
1位 1st place solution, team Sony train / inference
2位 2nd place solution
3位 3rd place solution GitHub / inference
4位 4th place solution /
Details in 1D model in 4th place solution (bilzard's part)
GitHub / train / inference
5位 5th place solution, team KTMUD
6位 6th Place Solution for the HMS - Harmful Brain Activity Classification Competition GitHub / train / inference
7位 7th Place solution
8位 8th Place Gold - One Mega Model inference
9位 9th Place Solution
10位 10th solution, good input image can generate a good single model (Opensource single model with LB233 PB287) inference
11位 11th Place Solution
14位 14th Place Solution
15位 15th Place Solution

Discussion