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

Kaggle Tokyo Meetup2023 CommonLit Solutionの紹介と考え方 - Fulltrain戦略と(Seed/Model)Ensembleの可視化 -

chu majin
November 25, 2023

Kaggle Tokyo Meetup2023 CommonLit Solutionの紹介と考え方 - Fulltrain戦略と(Seed/Model)Ensembleの可視化 -

2023/11/26(日) : Kaggle Tokyo Meetup2023 招待講演3
CommonLit Solutionの紹介と考え方 - Fulltrain戦略と(Seed/Model)Ensembleの可視化 -
#kaggle_tokyo

chu majin

November 25, 2023
Tweet

Other Decks in Technology

Transcript

  1. 2 Kaggle Tokyo Meetup 2023 本日のお話 • 自己紹介 : chumajinです。よろしくお願いします

    • CommonLit2の概要と4位Solutionを説明します - 特に fulltrainについてと、 (Seed/Model)Ensembleの可視化について話します。 • Kaggleの勝ち方(chumajin編)とおまけの話
  2. 3 Kaggle Tokyo Meetup 2023 Outline ・ 自己紹介 ・ CommonLit2概要

    - Fulltrain戦略 ・ Kaggleでの勝ち方(chumajin編) - Single model ・ Solution紹介 - (Seed/Model) Ensembleの可視化 - このコンペのイメージ - Solutionまとめ
  3. 4 Kaggle Tokyo Meetup 2023 Outline ・ 自己紹介 ・ CommonLit2概要

    - Fulltrain戦略 ・ Kaggleでの勝ち方(chumajin編) - Single model ・ Solution紹介 - (Seed/Model) Ensembleの可視化 - このコンペのイメージ - Solutionまとめ
  4. 5 Kaggle Tokyo Meetup 2023 自己紹介 - chumajin private特徴量 -

    ・ 仕事 : 半導体メーカーで、 欠陥検査装置担当 → データサイエンスグループ立ち上げ ・ 麻雀 (もと天鳳6段) ・ サッカー : カレーさんkagglerサッカー部所属 ・ モンハン(昔は勲章コンプリート。今は闘技場だけは、毎回全部Sランクに) ・ 海外旅行 ( 30か国くらい ? 1人でも) ・ 読書 kaggleで、影響を受けた漫画 : ちはやふる、天牌、アオアシなど 本 : エッセンシャル思考、神時間術 など ・ Splatoon : kagglerのamaebinさんdiscord所属
  5. 6 Kaggle Tokyo Meetup 2023 自己紹介 – chumajin Kaggle 特徴量

    - … excelのVBAで仕事していた 2019.7 初めてpython覚える 2020.1 NFL Big Data Bowlで初 … 2021.8 Commonlit 1で初 … 2022.6 U.S. Patent で初 2022.7 Kaggle days予選通過(solo) 2022.8 Amexで2枚目 2022.10 Kaggle days final最下位 2022.11 Feedback3 2023.3 LECR で3枚目初solo 2023.6 火山コンペで4枚目solo 初prize 2023.10 Commonlitで5枚目 prize ×4 ×7 コンペGMになれて、現在54位。 11/25(土) yukiCup 2023 Autumn 2nd place !!
  6. Kaggle Tokyo Meetup 2023 7 自己紹介 – kuro_Bさん Kaggle 特徴量

    - 2021.8 Commonlit 1で初 2022.1 Petfinder2で初solo 2022.3 Feedback Prize1で 初 prize , 2枚目solo 2022.5 H&M 2022.8 Amexで3枚目 2023.1 Otto 2023.10 Commonlitで4枚目 prize 現在、コンペGMリーチ
  7. 8 Kaggle Tokyo Meetup 2023 Outline ・ 自己紹介 ・ CommonLit2概要

    - Fulltrain戦略 ・ Kaggleでの勝ち方(chumajin編) - Single model ・ Solution紹介 - (Seed/Model) Ensembleの可視化 - このコンペのイメージ - Solutionまとめ
  8. 9 Kaggle Tokyo Meetup 2023 CommonLit2の概要 Florida, the "Land of

    Flowers," the enchanted ground wherein it has been said Ponce de Leon sought for the "fountain of perpetual youth," is not far away; the fountain, quite likely, is as remote as ever, but the land which it was said to bless with its ever flowing and rejuvenating waters, can be reached after a journey of a few days from New York, by steamship if the traveler is not unpleasantly affected by a sea-voyage, or, if the apprehension of "rough weather off Hatteras" should make a different route preferable, then by rail to Charleston, thence by steamer over waters generally smooth to Fernandina, stopping on the way at Savannah just long enough to look about and obtain a general idea of the place. Fernandina, situated on Amelia Island, is the principal town upon the east coast of Florida, and of importance, being the eastern terminus of a line of railway, which connects the Atlantic Ocean with the Gulf of Mexico. Its population is not far from fifteen hundred. At first sight it is not prepossessing, but a walk about the place reveals many buildings of pleasing architecture hidden among the trees. Within a small enclosure not far from the landing, "the ...forefather of the hamlet sleeps." Upon a marble stone may be seen the name of 原文の例※ (Commonlitではないところの著作権フリーの適当な文章) https://etc.usf.edu/lit2go/52/american-naturalist-rambles-in-florida/1003/rambles-in-florida-part-1/ Florida is easily accessible from New York, offering a sea route for those who enjoy it, or an alternative rail and steamer path via Charleston and Savannah for those who prefer calmer travels. Fernandina on Amelia Island is the main eastern town in Florida and a significant railway terminus, with a modest population and attractive architecture nestled among trees. It also features a notable grave of a local forefather. 要約 生徒 A 採点 Content(内容) :-1.73点~3.9点 Wording(文法) :-1.96点~4.31点 生徒 B 生徒 C 生徒 D … 生徒 ZZ 3 年生から 12 年生の生徒が書いた要約を自動的に評価するコンペ ターゲット : ContentとWordingのそれぞれの点数(回帰問題) 指標 MCRMSE : ContentとWordingそれぞれのRMSEの平均値 アノテーター ※ trainデータは原文1個につき、 要約文(生徒数)がそれぞれ1000-2000個 DALL-E 3で作成 Code competition
  9. 11 Kaggle Tokyo Meetup 2023 なぜこのコンペはやばいか ? Train dataには4つの原文しかないが、testデータには122個の原文がある… (code

    competitionなので、隠されている) trainデータ(原文4個で要約文(生徒数分)がそれぞれ1000-2000個) Public LB (13%) 全部で7165個 Private LB (87%) 全部で17000個 原文1個 : 要約文2020個 原文121個 : 要約文15000個 ※ CVの分け方は Groupkfoldになります
  10. 12 Kaggle Tokyo Meetup 2023 - どれくらいやばいかのイメージ共有 - 関西Kaggler会コンペ2023秋 大阪を除く関西の都道府県(黄色)の住宅価格から、大阪の住宅価格(赤色)を当てる

    というコンペ 今回のCommonlitは 大阪を除く関西の都道府県(黄色) から 日本全国の住宅価格(灰色)を当てる という感覚に近い…
  11. 13 Kaggle Tokyo Meetup 2023 Outline ・ 自己紹介 ・ CommonLit2概要

    - Fulltrain戦略 ・ Kaggleでの勝ち方(chumajin編) - Single model ・ Solution紹介 - (Seed/Model) Ensembleの可視化 - このコンペのイメージ - Solutionまとめ
  12. 14 Solutionのまとめ □ 1 fulltrain × 7 modelのアンサンブル 自分の初期の手法 9

    hours 4-fold(4 weights) 4-fold(4 weights) 4-fold(4 weights) Inference time 1fulltrain 1fulltrain 1fulltrain 1fulltrain 1fulltrain 1fulltrain 1fulltrain 最終sub ・ 4-foldを1 fulltrainに圧縮することにより、推論時間を稼ぎ、 多くのモデルを入れる(これで、cvだけでなく、robust性も上げる。) ・ 7 modelは4-foldで計算したcvを使って hill climb(アンサンブル時にcvスコアが上がればそのモデルを採用する手法) で選出 (これでcvを上げる)
  13. 15 Kaggle Tokyo Meetup 2023 Outline ・ 自己紹介 ・ CommonLit2概要

    - Fulltrain戦略 ・ Kaggleでの勝ち方(chumajin編) - Single model ・ Solution紹介 - (Seed/Model) Ensembleの可視化 - このコンペのイメージ - Solutionまとめ
  14. 16 Kaggle Tokyo Meetup 2023 これまでのコンペと今回のコンペの違い これまでうまくいった例 今回最初にtryしたこと 要約文 原文やその他情報

    [SEP] これがなぜかうまくいかず… (batchsize, token数, hidden_states) ex. (16,512,1024) (batchsize, hidden_states) ex. (16, 1024) (batchsize, targets) ex. (16, 2) 情報1 情報2
  15. Kaggle Tokyo Meetup 2023 17 なので、今回のコンペではPublic notebookからこんな手が流行 要約文やその他情報 のみ使う 要約文と原文から

    Feature engineering GBDTで 2nd stage 最終予測 共通の単語数やngram、 原文の文字数や他libraryを使った採点など これだけだと、途中で頭打ちになっている人が多かった印象 (Public 0.433くらいのイメージ) やはり、transformerに原文を使わないと伸びなかった 2個の特徴量 例えば30-40個の特徴量 1st stage 情報1 情報2 原文を1st stageで使わない
  16. Kaggle Tokyo Meetup 2023 18 何が正解だったか ? 上位入賞者で多かった手 要約文 原文やその他情報

    [SEP] 原文をやっぱり使う。けど、poolingのところを要約文の箇所のみに工夫 + Maxlen※を長くする 2nd SolutionはここからさらにLSTM追加。 9th SolutionはここからさらにDeberta層追加してLSTM追加。 これまでのコンペでの手法 今回 ~勝手なイメージ~ 言葉間のself attentionは要約文と原文の箇所も使って、最後のpoolingのところは、要約文のところだけを使う (アノテーターは原文などみていないし、それを基に採点していないので、原文のembeddingは情報なし。) 情報1 情報2 原文を使う
  17. Kaggle Tokyo Meetup 2023 19 Team : kuromajinの他のモデル1 これまでのコンペでの手法 今回

    冒頭に[CLS]だけを使用 + Maxlenを長くする 要約文 原文やその他情報 [SEP] 情報1 情報2 原文を使う
  18. Kaggle Tokyo Meetup 2023 20 Team : kuromajinの他のモデル2 これまでのコンペでの手法 今回

    冒頭にoriginal promptを作成して、そこのpoolingだけを使用 + Maxlen※を長くする Evaluating the summarized text and calculating content and wording score : 情報1 情報2 原文を使う
  19. 21 Team : kuromajin 最終モデル Model no InfNo model training

    maxlen inference maxlen input pooling 2nd loss preprocess cv of 4kfold earlystop original prompt cls attention mean 1 91 deberta-v3-large 768 1500 ✓ 0.4818 2 22 deberta-v3-large 1050 950 ✓ ✓ 0.4855 3 63 deberta-v3-large 850 1500 ✓ 0.4984 4 72 deberta-v3-large 868 1024 ✓ Arcface ✓ 0.4919 5 2,3 deberta-v3-large 868 868 ✓ 0.488 6 259 deberta-v3-large- squad2 768 1500 ✓ 0.4952 7 331 deberta-v3-large- squad2 1050 950 ✓ ✓ 0.4993 Pretrain modelやpoolingなどを変えて7個のモデルを選択 Training maxlenと推論時のmaxlenを変えるとcvもlbも良くなるケースもあった (悪くなるケースもあったので、最終sub3つ目はこれを揃えた)
  20. 22 Kaggle Tokyo Meetup 2023 Outline ・ 自己紹介 ・ CommonLit2概要

    - Fulltrain戦略 ・ Kaggleでの勝ち方(chumajin編) - Single model ・ Solution紹介 - (Seed/Model) Ensembleの可視化 - このコンペのイメージ - Solutionまとめ
  21. Kaggle Tokyo Meetup 2023 23 Fulltrain とは・・・ ・ Fulltrainとは、kfoldなどで分けずに、全データを使って学習を行うこと メリット

    : ・ 訓練データを増やせるので (特に訓練データが少ないときに)精度up デメリット : ・ CVの管理などが難しい ? ・ どこで止めればいいかわからない ? ・ 特に今回のコンペで、序盤でトップだった、Rajaのdiscussion投稿でFulltrainは 序盤から意識されたが、他のコンペでも使われている。 ※ 最近、chumajinが記憶にあるもののみ - Feedback2 : h2o - psiのtwitter [NLP] - LECR : h2o, chumajin - Feedback3 : gezi, h2o [画像] - くじら : Preferred Dolphin - 火山 : chumajin [Table] - PSP : Jack 詳しく解説あり
  22. Kaggle Tokyo Meetup 2023 24 Fulltrain 作り方,cv,inference ← 結局は人それぞれ ・

    4kfoldなどでハイパーパラメータ最適化して、そのパラメーターで全学習データで作りこむ。 ・ 1 foldだけで調整して、全部流す □ 作り方の例 □ CV ・ アーリーストップ無しで最後のoofをcvにする ・ 通常の4kfoldと同じアーリーストップありでのoofをcvにする ・ 1 fold調整の場合はその1foldのoofをcvにする チーム内で統一できていれば いい気がします。 一例 : early stopなしで、4epoch決め打ちで、最後が 良くなるようにパラメーター最適化 Fold 0 用訓練データ 1 2 3 4 epoch 1 2 3 4 Fold 1 用訓練データ Fold 2 用訓練データ Fold 3 用訓練データ 全学習データ ここのoofをcv □ inference ・fulltrainのみでinferenceを出す (1個 or seed ensemble) ・4kfold + fulltrainで5個出す など 今回のコンペでの我々の選択 Earlystopなしで 4 epochまで訓練 ※ 使いこなすには少し慣れが必要かも
  23. Kaggle Tokyo Meetup 2023 25 このコンペでのfulltrainの疑問点 ・ 過去のh2oのsolutionでは3個seed ensembleしていたが、どれくらいすればよいのか ?

    ・ discussionに1fulltrain(Seed ensemble無し)でsubして、 seedを変えただけで、lb 0.482と0.459が得られた とあるが、どれくらいtestデータ(public/private)がばらつくのか ? ・ そもそも、publicとprivateの関係性は ?
  24. 26 Kaggle Tokyo Meetup 2023 Outline ・ 自己紹介 ・ CommonLit2概要

    - Fulltrain戦略 ・ Kaggleでの勝ち方(chumajin編) - Single model ・ Solution紹介 - (Seed/Model) Ensembleの可視化 - このコンペのイメージ - Solutionまとめ
  25. Kaggle Tokyo Meetup 2023 27 検証方法 : hold outして、Seedだけを変えてmodelを15個作成 □

    コンペでのfulltrainでのsub 学習データ (4つの原文) 39c16e 814d6b ebad26 3b9047 public private 1つの原文 121個の原文 □ 今回の検証 学習データ(2つの原文) ebad26 3b9047 仮想public (1つの原文) 仮想Private (1つの原文) 39c16e 814d6b ・ Seedのみ15条件変えて※、publicのばらつき、seed ensembleの効果と、 public, privateの関係を見る fulltrain fulltrain ※ Seedが変わると、いろいろ変わるが、dataloaderの順番(学習する順番)が変わる のをイメージするとイメージしやすいと思います。
  26. Kaggle Tokyo Meetup 2023 28 ・ discussionに1fulltrain(Seed ensemble無し)でsubして、seedを変えただけで、 lb 0.482と0.459が得られたとあるが、どれくらいテストデータ(public/private)がばらつくのか

    ? 疑問その1 1. Seedによるpublic/private lbのばらつき 仮想Public : 0.481 ~ 0.519 σ : 0.01056 仮想Private : 0.640 ~ 0.681 Seed ensembleしないで、1 modelでsubすると、かなりばらつく Seed1 Seed2 Seed3 Seed15 ※ 今回のコンペでの話です 金圏boarderから下に 考えると14位~44位 に入る範囲 こっちに いくほど良い
  27. Kaggle Tokyo Meetup 2023 29 疑問その2 2. Seed Ensembleの可視化 仮想Public

    : 0.481 ~ 0.519 仮想Private : 0.640 ~ 0.681 はっきりと個数は出なかった。3個ensembleしてもσ : 0.006程度平均からずれる (金圏borderから下に考えると14位~28位)が、多ければ多いほど安定する(当然なのですが…) ・ 過去のh2oのsolutionでは3個seed ensembleしていたが、どれくらいすればよいのか ? 15個平均したら、ほぼ収束 15個のseedから50パターンくらいシャッフルして N個選択 → seed ensembleした結果 Seed ensemble 5個までを表示 15個平均したときの収束ポイント 仮想Public : 0.481 ~ 0.519 σ : 0.01056 5個平均で 約半分のばらつき 仮想publicの 平均個数と σの関係 こっちに いくほど良い ※ 今回のコンペでの話です
  28. 仮想Public : 0.481 ~ 0.519 Model 1 Kaggle Tokyo Meetup

    2023 30 3. Model ensembleの可視化 仮想Private : 0.640 ~ 0.681 他のarchitecture はどうなっているか ? Model ensembleしたら この図はどうなる ? Model 1 Model 2 Ensemble 仮想Public 仮想Private ・ architectureを変える(model2)は、model1とは離れた位置に収束 ・ ensembleすると2つのmodelの中心より、少し良い方向に行く(ensembleの効果) こっちに いくほど良い ※ 今回のコンペでの話です
  29. Kaggle Tokyo Meetup 2023 31 3. 【補足】Model ensembleの効果 Model 1

    Model 2 Ensemble 仮想Public 仮想Private 今回の実験 この場合はアンサンブルすると、 public/private両方良くなることはなかった (両方良くなって欲しかった) 最終sub結果 (検証結果では なく、real結果) 7個ensembleすると、publicもprivateも 良くなっていた。 Model1 Model2 Model3 Model4 Model5 Model6 Model7 ensemble こっちに いくほど良い ※ 今回のコンペでの話です
  30. 32 Kaggle Tokyo Meetup 2023 Outline ・ 自己紹介 ・ CommonLit2概要

    - Fulltrain戦略 ・ Kaggleでの勝ち方(chumajin編) - Single model ・ Solution紹介 - (Seed/Model) Ensembleの可視化 - このコンペのイメージ - Solutionまとめ
  31. Kaggle Tokyo Meetup 2023 33 Private LB (87%) 原文121個 :

    要約文15000個 Grand Truth モデルが多くて、cvが良ければ、 1つ1つがGrand Truthに近づくだけでなく ばらつきも小さくできそう → score良い モデルが少ないとcvが良くても、 かなりばらつきが大きく飛び値などもありそう このコンペのイメージ CVだけでなく、robust性も大事 1原文の予測値
  32. 34 Kaggle Tokyo Meetup 2023 Outline ・ 自己紹介 ・ CommonLit2概要

    - Fulltrain戦略 ・ Kaggleでの勝ち方(chumajin編) - Single model ・ Solution紹介 - (Seed/Model) Ensembleの可視化 - このコンペのイメージ - Solutionまとめ
  33. 36 Kaggle Tokyo Meetup 2023 Solutionのまとめ Model 1 Model 2

    Ensemble Seed ensembleしなくても、 modelの数を増やせば、平均化(robust性を上げる)は 勝手にできると考えた。 Randomに1点選ばれる Randomに1点選ばれる Fulltrain1個でも 良い感じに 真ん中らへんに 収束してくれるはず こっちに いくほど良い
  34. Kaggle Tokyo Meetup 2023 37 結果 – shake downあまりせずにpublic 3位

    → private 4位でprize !! Public Private Shake激しい
  35. Kaggle Tokyo Meetup 2023 38 最終subのまとめ ・ kuromajinの最終sub 3つ Best

    lbにはGBDT役だったが、 Privateはダメ Best cv/ best private にはGBDTは 役に立たなかった。 3つsubが選択できたので、 1つ目はbest lb (2nd stageのGBDT使用も含む) 2つ目はbest cv (2nd stageのGBDT使用しない。推論長拡大を使用) 3つ目は保険 (2nd stageのGBDT使用しない。推論長拡大を使用しない。) 全部、金圏だったが、sub2だけprize ※ Sub3は、cvもpublic lbも悪かったが、privateが良かった → やっぱりrobust性が効いたのでは ? という結果になった。
  36. 39 Kaggle Tokyo Meetup 2023 まとめ ・ CommonLitコンペはTrain dataには4つの原文しかないが、 testデータには122個の原文があるやばいコンペだった。

    ・ Single modelは、原文も入れて、要約文のところのみをpoolingして使うと強力だった。 ・ モデル数が少ないと、いくらcvが良くても飛び値が存在しそうなイメージを持った ・ 最終的には、1 fulltrain × 7 modelでhill climbでcvを上げつつ、robust性も出す戦略で 4thでした。 https://docs.google.com/presentation/d/1cjZTtvBDiHci1Hlc33UH9LVJXyj2t5Hh9ZiHnp3BgVk/edit#slide =id.g27f7967cd30_0_712 ・ charmさん関東kaggler会発表資料の 事例の1つになった気がします (これはかなり意識しました)
  37. 40 Kaggle Tokyo Meetup 2023 Outline ・ 自己紹介 ・ CommonLit2概要

    - Fulltrain戦略 ・ Kaggleでの勝ち方(chumajin編) - Single model ・ Solution紹介 - (Seed/Model) Ensembleの可視化 - このコンペのイメージ - Solutionまとめ
  38. 41 Kaggle Tokyo Meetup 2023 Kaggleの勝ち方(chumajin編) ・ 継続と復習( + outputする)

    → できること(武器)を増やす ・ 運動する(アイデアだし) ・ 出会い → できる人に聞いた。 → twitter/solutionを見る。試す。 ・ 吹っ切れる → cheat以外勝つためなら ・ コンペにかける時間 → たぶん、他の人より長い (凡人が天才に勝つ方法 ?) 銅メダル → 銀メダル → 金メダルと 徐々にできるようになっていった