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

Student Cup 2020 反省会 21th solution LT

Student Cup 2020 反省会 21th solution LT

Student Cup 2020 反省会 で使用した解法LTスライドです。

Avatar for K Hashimoto

K Hashimoto

August 30, 2020

Other Decks in Technology

Transcript

  1. / ⾃⼰紹介 名前 : 橋本 翔 所属 : 東京⼤学⼤学院 機械⼯学専攻

    twitter:@dear_morality(mosamosa) アイコン画像はそのうち変わるかも 普段は機械学習とか全く関係ないことしていて,趣味で競プロとかコンペに出ています. Kaggleのコンペに出る時間と計算リソースが欲しい今⽇このごろです.
  2. / ⽬次 • ⾃⼰紹介 • モデル概要 • なぜ保守的戦略をとったのか • 保守的戦略とは

    • おまけ 1. モデル検討の諸々 • おまけ 2. モデルのスコアとSub選択 • おまけ 3. 効かなかった⼿法とか
  3. / 最終Subモデルの概要 Under sample (random seed 変えて×6) 学習データ 不均衡性対処 モデル

    blend Bert-base-uncased ↓ Dropout(0.5) ↓ Dense + SoftMax ↓ Xentropy ↓ Adam(lr=1e-5) ⼿法の役割に注⽬して図を書いたので,流れとしては⼀部不正確ですがご容赦ください. Count Vector SWEM-max (別モデル) train.csv Imbalanced-learn BalancedBaggingClassifier(n=30) LightGBM(初期パラメタ)
  4. / 最終Subモデルの概念図 Under sample (random seed 変えて×6) 学習データ 不均衡性対処 モデル

    blend Bert-base-uncased ↓ Dropout(0.5) ↓ Dense + SoftMax ↓ Xentropy ↓ Adam(lr=1e-5) ⼿法の役割に注⽬して図を書いたので,流れとしては⼀部不正確ですがご容赦ください. Count Vector SWEM-max (別モデル) train.csv Imbalanced-learn BalancedBaggingClassifier(n=30) LightGBM(初期パラメタ) モデルは超単純. 保守的戦略が成功した?
  5. / ⽬次 • ⾃⼰紹介 • モデル概要 • 保守的戦略をとった理由 • 保守的戦略とは

    • おまけ 1. モデル検討の諸々 • おまけ 2. モデルのスコアとSub選択 • おまけ 3. 効かなかった⼿法とか
  6. / 保守的戦略をとった理由 1. ご存知の通り,結構不均衡なtrainデータ. ・さらに,ディスカッションでtrainとtestのTarget分布違うのでは?という噂が出ていた. ・macroF1でtestが不均衡なデータってことはそうそうないだろうとも思っていた. →不均衡性対処は最重要課題. 2. trainとtestで使われている単語が結構違う. ・spacyによるlemmaだと,語彙数はtrain:test

    = 3558:2955. ・うち共通語彙は2028で1/3くらいは未知単語. → 全く古典的⼿法が効かないわけではなさそうだけど,BERT族有利と予想. → CV とLBの対応を取るのが難しい 3. SIGNATEは1Subしか選べない. ・去年もそうだったが結構shakeしがち. →他の問題と相まって保守的に⾏くことにした.
  7. / 保守的戦略をとった理由 1. ご存知の通り,結構不均衡なtrainデータ. ・さらに,ディスカッションでtrainとtestの分布違うのでは?という噂が出ていた. ・macroF1でtestが不均衡なデータってことはそうそうないだろうとも思っていた. →不均衡性対処は最重要課題. 2. trainとtestで使われている単語が結構違う. ・spacyによるlemmaだと,testはtrainの2倍以上の語彙(5374対11212).

    ・ただしtrainの語彙のうち8割程度はtestでも使われていた. → 全く古典的⼿法が効かないわけではなさそうだけど,BERT族有利と予想. → LBとCVの対応を取るのが難しく,Shakeしそう 3. SIGNATEは1Subしか選べない. ・去年もそうだったが結構shakeしがち. →他の問題と相まって保守的に⾏くことにした. 要はShakeしそうなコンペだった しかも⾃分にNLPの知識が無かった
  8. / ⽬次 • ⾃⼰紹介 • モデル概要 • なぜ保守的戦略をとったのか • 保守的戦略とは

    • おまけ 1. モデル検討の諸々 • おまけ 2. モデルのスコアとSub選択 • おまけ 3. 効かなかった⼿法とか
  9. / 保守的戦略とは 2. Class weightを使わない選択 ・class weightのチューニングは難しい. |-- 1. trainとvalidationのlossの対応付けがしにくい.

    |-- 2. 最適なweightの探索をCVに頼るのか,LBに頼るのか決めかねる. |-- 3. weightの探索にも時間を取られうる.今回は期間も短い. ・対してunder-sampleは学習時間が早くなるなどの点でやさしい. ・意外と性能も落ちない. ・2sub選べるなら1モデルはclass-weightにしたいけど… 1. Validationは均衡化. ・各flagごとにNサンプル(Nは50とか100) とってvalidationに,残りをtrainに ・testがよほど変な分布になっていなければ,⼤きく外すことはないと判断(保守的) ・前述したF1-macroだし…という読み
  10. / 保守的戦略とは 2. Class weightを使わない選択 ・class weightのチューニングは難しい. |-- 1. trainとvalidationのlossの対応付けがしにくい.

    |-- 2. 最適なweightの探索をCVに頼るのか,LBに頼るのか決めかねる. |-- 3. weightの探索にも時間を取られうる.今回は期間も短い. ・対してunder-sampleは学習時間が早くなるなどの点でやさしい. ・2sub選べるなら1モデルはclass-weightにしたいが… 1. Validationは均衡化. ・各flagごとにNサンプル(Nは50とか100) とってvalidationに,残りをtrainに ・ testがよほど変な分布になっていなければ,⼤きく外すことはないと判断(保守的) 1. 信じやすいValidationを作って 2. Tryの速度を早くしただけ
  11. / おまけ1. モデルの検討 ・ 考察の通り,古典的モデルも⼊れようと思った. ・https://qiita.com/nekoumei/items/1f5ec09e422a4be99810を参考. ・SWEM-maxとCountVectorでモデルを作った. ・Tf-idfはCountVectorとそこまで変わらないと考え⼊れなかった. ・ BERT族はよくわからないので全部試した.

    ・試してわかったが,freezeよりBERTごと学習したほうが良かった. ・blogに書いたが多分学習タスクと今回の問題の噛合が良くない. ・twitterで⾒かけたが,SciBERTとか使ったら違うかも. ・BERT=RoBERTa>XLNet >>>>> ALBERT って感じだった. ・BERT以外はcasedのモデル(多分)なのでそれも影響? モデル CV(約) pub. LB Priv.LB BERT-freeze 0.52 0.4533 0.4540 BERT 0.6 0.4731 0.4652
  12. / おまけ2. モデルのスコアとSub選択 モデル CV(約) pub. LB Priv.LB BERT-freeze 0.58

    0.4533 0.4540 BERT 0.6 0.4731 0.4652 RoBERTa 0.6 0.4473 0.4598 CountVector 0.55 0.4373 0.4593 SWEM 0.54 0.4152 0.4010 Count-SWEM blend 0.58 0.4418 0.4438 Count-SWEM- BERT blend 不明 0.4750 0.4801 モデルたちのスコア (実際はBlend⽐でもっとバリエーションがある) ・モデルの取捨選択 ・保守的なCV戦略は割と成功していて,CVとLBは結構相関していた ・Count-VectorとSWEMを混ぜるとスコアが上がった.(CV,Pub.) ・そこに更にBERTを混ぜると上がる(CV)のはふわっと確認していた. ・BERT-freeze,RoBERTaはBERT程スコアが良くなかった. (CV,Pub.) ・上記と多様性を考慮してBERT系はBERT本家のみに決めた. ・以上から,Count-SWEM-BERTのブレンドにした. ・混合⽐は検討できるほど時間とSubが残っていなかった. ・ちなみに最終subの混合⽐は最悪のを引いた.(Max.486あった) ・privateを⾒ると,RoBERTaとか混ぜたらもうちょっと伸びた気がする. ・SWEM⾜引っ張ってそうですね(CV,Pubだと良かったんですが) ・ensembleが結構効いてるのでチーム有効コンペだったかもと今思う.
  13. / おまけ3. 効かなかった⼿法とか ・前処理 ・CountVectorとSWEM-maxはspacyでlemmanizationと,品詞による絞り込み(名詞,動詞,形容詞のみ)をした ・ほかは何やっても効かなかった. ・BERTはpretrained tokenizer頼み. ・意味なかった⼿法 ・

    ⼀部をランダムにUnknownトークンに置き換えてtrain ・ XLNetとBERTのembeddingをpooling ・ XLNetとBERTのembeddingをconcat ・ BERTの先頭からnトークン分とる ・ Soft-Label ・ BERTのpooled-outputをLightGBM/SVCに⼊れる ・ 再翻訳によるDataAugmentation (全データをまとめて⼀つに) ・ Pseudo Labeling ・ pretrainedを使わずにBERT機構+classification headを学習→実はprivate0.47出てた.けどpublic 0.45だった ・やればよかったなと今思う⼿法 ・RoBERTaとかXLNetの結果も混ぜる. ・DataAugmentationで⾔語ごとモデルを作る.