Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

kaggle PPPMコンペ反省会

kaggle PPPMコンペ反省会

社内勉強会での発表資料です。
kaggleの"Patent Phrase to Phrase Matching"コンペティションにて、参加したチームが24位でした。
コンペの振り返りとして、コンペ概要や上位陣の解法、我々の解法などご紹介したいと思います。

tatematsu

July 08, 2022
Tweet

More Decks by tatematsu

Other Decks in Technology

Transcript

  1. 3 自己紹介 • 氏名 ◦ 立松 郁也 • 経歴 ◦

    2017年3月 大学院入学 ▪ ナーススケジューリング問題の研究 ◦ 2019年4月 電機メーカー入社 ▪ 需要予測モデル開発 ▪ 最適在庫の分析 ◦ 2021年3月 MoT入社 ▪ DRIVE CHARTの分析業務 • SNS ◦ twitter : https://twitter.com/monnu0621 ◦ kaggle : https://www.kaggle.com/fuumin621
  2. 7 PPPMコンペについて| 概要 米国特許に関するフレーズのペアに対し、類似度を予測するNLPコンペ • 米国の特許に関するフレーズのペアが与えられる ◦ 例 : "television

    set"と"TV set" • 類似度が5段階でラベル付けされており、その類似度を予測するコンペ ◦ 類似度は0, 0.25, 0.5, 0.75, 1のいずれか • コンペのモチベーションは特許の検索や審査を高度化すること • 予測精度は相関係数で評価 • codeコンペ(モデル+ 推論コードを提出)
  3. 14 上位チームの解法 | magic 金メダル圏のほとんどのチームはあるトリック(magic)で大幅にスコアを向上させた 同一anchor,contextの異なるtargetの文字列を連結してbertに突っ込む 何をしているか? 1. 同一anchor,contextのtargetを文字列として連結(以下targetsと呼ぶ)  df.groupby(["anchor","context"])["target"].apply(lambda

    x :" ".join(list(x))) 2. targetsをinput textに連結 text = anchor[SEP]target[SEP]CPC_TEXT[SEP]targets どんな入力になるか? abatement [SEP] abatement of pollution [SEP] HUMAN NECESSITIES. FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE   MILLS; SUCTION CLEANERS IN GENERAL [SEP] abatement of pollution,act of abating,active catalyst,eliminating process,forest   region,greenhouse gases,increased rate,measurement level,minimising sounds,mixing core materials,multi pollution abatement device,noise reduction,pollution abatement,pollution abatement incinerator,pollution certificate,rent abatement,sorbent material,source items pollution abatement technology,stone abutments,tax abatement,water bodies                     https://www.kaggle.com/competitions/us-patent-phrase-to-phrase-matching/discussion/332273
  4. 15 上位チームの解法 | 1st place solution magicを色々なバリエーションで実施、LSTM head等で工夫してさらに改善 magicの活用方法 •

    anchor,contextでgroupbyしてtargetを連結(一般的なmagicの活用) • 連結したtargetをランダムにシャッフル • contextの1文字目のみ利用するパターン ◦ 例 : contextがA47の場合 Aのみでgroupby その他の工夫 • 多様なbackboneのアンサンブル ◦ deberta-v3-large,bert-for-patent,electra-large etc • AWPの利用(Adversarial Trainingの手法の1つ) • BI-LSTM headの追加 • embedding layerをFreeze (etc….)
  5. 16 上位チームの解法 | 2nd place solution magicの活用方法として2nd stage trainingしていた点が特徴的 magicの活用方法

    • stage1 ◦ 他の上位陣と同様、同一anchor+contextのtargetを連結して予測値を取得 • stage2 ◦ anchorのoofスコアを「target1 23、target2 47、…」のように文字列として入力 ◦ 同じようにinput textに連結して再度学習 その他の工夫 • 多様なbackboneのアンサンブル ◦ deberta-v3-large,bert-for-patent,deberta-large • FGM(Adversarial Trainingの手法の1つ) • Knowledge distillation ◦ 精度向上よりは高速化に寄与
  6. 17 上位チームの解法 | 3rd place solution magicの活用法はシンプル。lossのバリエーションやfgm等により改善。 magicの活用方法 • 他の上位陣と同様、同一anchor+contextのtargetを連結して予測値を取得

    その他の工夫 • 多様なbackboneのアンサンブル ◦ deberta-v3-large,bert-for-patent,electra-large, deberta-xlarge, etc.. • lossのバリエーション ◦ BCE, MSE, Pearson Correlation • model毎にLRチューニング • FGM(adversarial training)
  7. 19 自チームの解法 | うまくいったこと lossやbackboneの多様性や編集距離を特徴に加えたNN stackingが効いた Lossのバリエーション • ccc, mse,

    bce backboneのバリエーション • deverta-v3-large, • bert-for-patent • electra-large,funnel-large系 ◦ electra系は学習が安定しない。 ◦ LLR(層ごとにLRを変える)使うとマシになるとチームメイトが教えてくれた NNによるstacking • ahnchor,target間の編集距離をfeatureに追加してstacking ◦ Levenshtein,Jaro–Winkler
  8. 20 自チームの解法 | 試したけどダメだったこと 外部データの活用は効果なし。後処理でmagicと似たことはしていたが改善できず。 • 外部データの活用 ◦ US patent

    の abstractデータでMLM ◦ US patent の titleデータでMLM ◦ pseudo labeling作成 • 同じanchor同士のoofで集約特徴作成し、LGBによる2nd stgモデル ◦ magicと似た発想だったが、magicの方が直接的だった... • google-bigbird-patentというpretrained model ◦ 特許データでpretrainされているらしく、効きそうな気がしたがダメだった • Hard Exampleの除外 ◦ アノテーションミスっぽいサンプルはあったので除外してみたが効果なし
  9. 21 まとめ・反省点 まとめ • magicの発見で全てが決まるコンペだった • modelのアンサンブルは他のNLPコンペと同様に効果的だった ◦ 単体ではdeberta-v3-largeが直近コンペでは最強な感じ •

    外部データの活用は、今回は成功しているチームはいなさそう 反省点 • transfomerは賢いので、とりあえず雑に突っ込んでもよさそう? ◦ magicをみていると、他のtargetを連結しただけでよしなに学習してくれてそう ◦ 2位解法ではoofスコアを文字列として突っ込むだけで学習してくれたらしい • 不連続なLBの上がり方を見たら、magicの存在を疑う ◦ 今回は締め切り1ヶ月前くらいに、LBが異常に高い人が現れた ◦ そうなるとチューニング的な改善では一生追いつけない..