Slide 1

Slide 1 text

CommonLit Solutionの紹介と考え方 - Fulltrain戦略と(Seed/Model)Ensembleの可視化 - Kaggle Tokyo Meetup 2023 1 Kaggle Tokyo Meetup 2023 chumajin (Japan) Kuro_B (Japan)

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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 !!

Slide 7

Slide 7 text

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リーチ

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

10 Kaggle Tokyo Meetup 2023 Commonlitの初見 このコンペやばい… DALL-E 3で作成

Slide 11

Slide 11 text

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になります

Slide 12

Slide 12 text

12 Kaggle Tokyo Meetup 2023 - どれくらいやばいかのイメージ共有 - 関西Kaggler会コンペ2023秋 大阪を除く関西の都道府県(黄色)の住宅価格から、大阪の住宅価格(赤色)を当てる というコンペ 今回のCommonlitは 大阪を除く関西の都道府県(黄色) から 日本全国の住宅価格(灰色)を当てる という感覚に近い…

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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を上げる)

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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で使わない

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Kaggle Tokyo Meetup 2023 20 Team : kuromajinの他のモデル2 これまでのコンペでの手法 今回 冒頭にoriginal promptを作成して、そこのpoolingだけを使用 + Maxlen※を長くする Evaluating the summarized text and calculating content and wording score : 情報1 情報2 原文を使う

Slide 21

Slide 21 text

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つ目はこれを揃えた)

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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 詳しく解説あり

Slide 24

Slide 24 text

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まで訓練 ※ 使いこなすには少し慣れが必要かも

Slide 25

Slide 25 text

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の関係性は ?

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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の順番(学習する順番)が変わる のをイメージするとイメージしやすいと思います。

Slide 28

Slide 28 text

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位 に入る範囲 こっちに いくほど良い

Slide 29

Slide 29 text

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の 平均個数と σの関係 こっちに いくほど良い ※ 今回のコンペでの話です

Slide 30

Slide 30 text

仮想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の効果) こっちに いくほど良い ※ 今回のコンペでの話です

Slide 31

Slide 31 text

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 こっちに いくほど良い ※ 今回のコンペでの話です

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Kaggle Tokyo Meetup 2023 33 Private LB (87%) 原文121個 : 要約文15000個 Grand Truth モデルが多くて、cvが良ければ、 1つ1つがGrand Truthに近づくだけでなく ばらつきも小さくできそう → score良い モデルが少ないとcvが良くても、 かなりばらつきが大きく飛び値などもありそう このコンペのイメージ CVだけでなく、robust性も大事 1原文の予測値

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

35 Kaggle Tokyo Meetup 2023 Solutionのまとめ 1 fulltrain × 7 modelで Seed ensembleしていない

Slide 36

Slide 36 text

36 Kaggle Tokyo Meetup 2023 Solutionのまとめ Model 1 Model 2 Ensemble Seed ensembleしなくても、 modelの数を増やせば、平均化(robust性を上げる)は 勝手にできると考えた。 Randomに1点選ばれる Randomに1点選ばれる Fulltrain1個でも 良い感じに 真ん中らへんに 収束してくれるはず こっちに いくほど良い

Slide 37

Slide 37 text

Kaggle Tokyo Meetup 2023 37 結果 – shake downあまりせずにpublic 3位 → private 4位でprize !! Public Private Shake激しい

Slide 38

Slide 38 text

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性が効いたのでは ? という結果になった。

Slide 39

Slide 39 text

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つになった気がします (これはかなり意識しました)

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

42 Kaggle Tokyo Meetup 2023 終わり 本資料の画像はDALL-E 3で作成