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

Kaggle LEAP Competition Solution解説&振り返り

ABEJA
August 07, 2024

Kaggle LEAP Competition Solution解説&振り返り

Kaggleで行われたLEAP - Atmospheric Physics using AI (ClimSim)において3位に入賞したpaoによるコンペのSolution解説及び振り返り資料です。
こちらの資料は下記のイベントにて発表された資料です。
https://abeja-innovation-meetup.connpass.com/event/326148/

ABEJA

August 07, 2024
Tweet

More Decks by ABEJA

Other Decks in Technology

Transcript

  1. • pao @pppaaaooo @名古屋 • ABEJA CTO室 データサイエンティスト ◦ 2024/06

    マネージャーらプレイヤーに • コンペ周り ◦ Kaggle Grandmaster ◦ atmaCup 1st x 3 ◦ Kaggledays world championship 1st • 特技:短期間コンペ、⿇雀 ⾃⼰紹介 2
  2. • ホスト: LEAP ◦ the Learning the Earth with Artificial

    Intelligence and Physics ◦ ⽶国国⽴科学財団 (NSF) の科学技術センター • 天候シミュレーションの結果を機械学習で予測する ◦ シミュレーターの計算コストが⾼すぎるので軽量版としてMLを使う • タスク:特定地点の複数⾼度の情報から、20分後の天候変化を予測 • 周囲の情報や時系列情報は与えられない。(使っちゃダメ) LEAPコンペについて 3
  3. • 説明変数 ◦ Seq変数(60⾼度) ▪ 気温、湿度、雲の⽔分量 / 氷分量、⾵(東⻄、南北⽅向それぞれ) 、オゾン/メタン等の 含有量

    ◦ Scaler変数 ▪ 地表気圧、太陽放射、表⾯フラックス、表⾯応⼒、アルベドなど • ⽬的変数 ◦ Seq変数 (60⾼度) ※20分後の変化量 ▪ 気温、湿度、雲の⽔分量 / 氷分量、⾵(東⻄、南北⽅向それぞれ) ◦ Scaler変数 ▪ 地表⾯での熱反射関連のフラックス(6種類)、降⾬率、降雪率 データカラム 4 ※計368個 全て連続値(回帰問題)
  4. データカラム補⾜ 5 温度 ⽐湿 雲中の⽔分量 雲中の氷の量 東⻄⽅向の⾵ 南北⽅向の⾵ … ⾼さlevel

    0 state_t_0 state_q0001_0 state_q0002_0 state_q0003_0 state_u_0 state_v_0 … ⾼さlevel 1 state_t_1 state_q0001_1 state_q0002_1 state_q0003_1 state_u_1 state_v_1 … … … … … … … … ⾼さlevel 59 state_t_59 state_q0001_59 state_q0002_59 state_q0003_59 state_u_59 state_v_59 … ⾼さlevel 59 ⾼さlevel 0
  5. • train: 約1000万件、 test: 62.5万件 ◦ Public 20%, Private 80%

    • さらにtrain⾃体も元データのサブサンプル • 元データはhuggingface上で約5000万件 • 更に⾼解像度なデータもhuggingfaceに存在 ◦ 恐ろしくて触っていない データ量 6
  6. コンペ初期時点での考え 8 • データ量が多い, Targetカラム多い, ⽋損無し, 時系列要素あり → 勾配ブースティングよりNN •

    ⾼さ毎の説明変数‧⽬的変数 →シーケンシャルなNN系(1d CNN, LSTM, Transformer)で良さそう • 各地点での1レコード1予測 (周囲の情報や時系列情報使えない) →出来ることは割と限られている
  7. 1. CNN + LSTMでベースライン作成 2. ⾊々調整しながら20位くらいに到達。ここでk_matさんとチームマージ 3. k_matさんが20%のデータで今の順位ということが判明。全データ使うと⾦圏に! 4. Camaroさんも合流し、情報交換しながら⼆⼈でk_matさんを追いかける

    5. 私の後処理でミスが判明。直したら⼀気にスコア伸びる!アンサンブルで⾦圏。 6. 終盤に⼊り、5倍ある全データの学習に⼿を出す。どのチームもこのへんで伸びだす。 7. 全データ学習でCamaroさんモデルが急激に伸びる(最終Camaroさんだけで5位相当) コンペ中の流れ(ざっくり) 11
  8. • 特徴量 ◦ 相対湿度(相対湿度 = ⽔蒸気圧 / 飽和⽔蒸気圧) ◦ 全特徴量の⾼さ⽅向の⼀次微分(diff)、⼆次微分(diffのdiff)

    ▪ ⊿state_t = state_t(n) - state_t(n-1) • 学習 ◦ Huber Loss, AdamW ◦ Cosine annealing 1e-3 → 1e-5, 10 epoch ◦ ⾼さ⽅向のTargetのdiffも補助ロスとして予測 • モデル ◦ CNN+Transformer + LSTM (詳細は次ページ) コンペ解法(paoパート) 13
  9. コンペ解法(paoパート)モデル詳細 14 ×4 • Feature Scale ◦ 各特徴量に対してax + bで変換

    ◦ aとbは学習可能パラメーター ◦ カラムごとの正規化で⾼さ間でスケー ルが変わったものをモデルで修正して 欲しい気持ち • Other features proj ◦ scaler特徴量を⾼さ毎に異なるLinear 層で変換 ◦ 地表⾯からの⾼さによって影響変わる 部分を学習してほしい気持ち
  10. 最近流⾏りのSqueeze former Conv層とMulti-head-attention層を組み合わせた Sqeezeformer Blockを繰り返している 元々⾳声認識⽤のモデルだが、シーケンス系のデータ でよく使われている Stanford Ribonanza RNA

    Folding: 2nd, 3rd Google - American Sign Language Fingerspelling Recognition: 1st HMS - Harmful Brain Activity Classification: 3rd 参考: SqueezeFormer 15 Squeezeformer: An Efficient Transformer for Automatic Speech Recognition https://arxiv.org/abs/2206.00888
  11. • ドメイン特徴量いろいろ(流体⼒学の知識とかもあって強かった) • 複数の正規化⼿法を組み合わせ • モデルは、FiLM ConvのUnet • ScalerのTargetはUnetのbottomで予測 •

    予測のHeadを種類毎に分ける(温度系、⽔蒸気系、⾵系) • ⽔蒸気系のTargetが(-Input / 1200) になるデータが⾒られた ◦ Targetが、(-Input / 1200)になるかどうかをHeadで予測。確度が⾼い ものは(-Input / 1200)を利⽤ チームメイトのモデル(k_matさん) 16
  12. • 特徴量はK_matさんベース • ⾼さ⽅向のTargetのdiffも補助ロス • モデルは、Transformer onlyとTransformer + CNN •

    TransformerはCLIPのencoderを利⽤ • Transformer + CNNは、(Conv1d x 3 + TransformerLayer)の繰り返し • 全データ学習で、このTransformerが激強 チームメイトのモデル(Camaroさん) 17
  13. • Model: Squeeze former • Loss: MAE • Auxiliary loss:

    時間と場所をサブタスクで予測 • Confidence head ◦ 誤差の範囲を複数binに分ける ◦ そのうちどれに⼊るかを予測して、cross entropy loss • データのSoft clipping • 3つの正規化を全て結合 ◦ (カラム単位の標準化, カラム種別単位の標準化, 対数化) • 過去コンペのSolutionめっちゃ研究してる 1st ソリューション 22
  14. • Model: LSTM baseで⾊々 ◦ residualなLSTM ◦ LSTM with cnn,

    mamba, transformerなど • Loss: smoothl1 loss • Auxiliary diff loss: level間の差をサブタスク(私と同じ) • LR scheduler: CosineAnealingWithRestarts(2cycle) • TargetをGroupに分けて、最後にGroup毎にfinetuning ◦ Group毎に1epoch最後に回す 2ndソリューション 23
  15. • Model: ◦ Convnext, transformer ◦ 1D Unet-based model ◦

    LSTM • Loss: smoothl1 loss • 学習率のスケジューラ調整がシビアだった • 特徴量: 相対湿度、特徴量の⼀次‧⼆次微分、q0002 / (q0002 + q0003)、 (q0002 + q0003)、q0002/q0003が0の場所を⽰すembedding等 • アンサンブル: 1d CNNでのStacking 4thソリューション 24
  16. • 全データflattenにしてMLPしてからLSTM (5th) • clipや⼀部の期間のデータで最初学習してから全データ学習(11th) • TransformerにBEiT-v2ブロックを追加(9th) • 予測headの前にfno1d (Fourier

    Neural Operator )レイヤーを追加(9th) • Confidence-Aware MSE Loss (10th) ◦ This idea was variant of the @ryomak 's previously shared solution[2]. • Drop hard example (10th) その他Solution抜粋 25
  17. • モデルはLSTM, Transformer, CNN様々 ◦ どのモデルでもちゃんと育てれば戦えた? ◦ ただ1位が使ってるようにSqueezeFormer(transformer)は強かった? ◦ ⼤量のデータを学習できる表現⼒があればよい?

    • LossをMSEではなくMAEやSmoothL1, Huberに変えるのは⼤事だった • 特徴量や補助ロスなど学習の⼯夫の積み重ねはありそう • ActivationはGELUが多め • どのチームもモデルの学習に複数⽇かかるくらい回してる... Solutionの全体傾向 26
  18. LEAPコンペのリーク問題について 27 • 元々ホストより、周囲の情報や時系列情報は与えられず、1レコードごと の学習‧予測をしてほしいという旨があった • データから位置情報‧時系列情報を復元できることが判明 ◦ →復元できないように、Testデータを⼊れ替え。コンペ2週間延⻑. •

    終了直前、別⽅法で位置情報‧時系列情報を復元できることが判明 ◦ ディスカッションが⼤荒れ☔ • 再延⻑の案などもあったが、上位のソリューションで使っていないか?を ホストがチェックする(使ったら失格)形で幕を閉じる
  19. LEAPコンペのリーク問題について2 28 • 最終どのチームもリークは使っていないとは思う ◦ Master/GMも多く失格になる/信頼を失うリスク‧デメリットが⼤きすぎる ◦ Prize以外はチェックは⼊らないので可能性はゼロではない • 揉めポイント

    ◦ ホストが「1レコードごとの学習‧予測をしてほしい」と⾔いつつ、終了直前まで 禁⽌するルールが明⽰されなかった。 ◦ 競技上の解釈を参加者に求められ、チームによって違う解釈、参加者同⼠での意⾒ 対⽴が発⽣してしまった(リークのあった過去コンペでもある話)
  20. • データセットのサイズで、改善策が効くかどうかが変わりうる ◦ ⼩さいので試して良ければ⼤きいデータ...だけではない ◦ 早めに⼤きいデータも試しておいたほうが良い • Web Dataset便利 ◦

    ⼤規模データでは幅広く使える • 過去コンペからのSolution理解は学習(改めて) • どこがコンペのポイントかの⾒極め重要(改めて) ◦ 今回はドメイン知識と思いつつ、いかにモデルの表現⼒⾼められるかが重要だった ◦ それはたまたまとも⾔えるし、ここを探し当てられるかが勝つための肝 ◦ ドメイン知識はほぼ役⽴たず... その他コンペでの学び 29