Slide 1

Slide 1 text

2022.07.07 立松 郁也 株式会社 Mobility Technologies kaggle PPPMコンペ反省会

Slide 2

Slide 2 text

2 はじめに

Slide 3

Slide 3 text

3 自己紹介 ● 氏名 ○ 立松 郁也 ● 経歴 ○ 2017年3月 大学院入学 ■ ナーススケジューリング問題の研究 ○ 2019年4月 電機メーカー入社 ■ 需要予測モデル開発 ■ 最適在庫の分析 ○ 2021年3月 MoT入社 ■ DRIVE CHARTの分析業務 ● SNS ○ twitter : https://twitter.com/monnu0621 ○ kaggle : https://www.kaggle.com/fuumin621

Slide 4

Slide 4 text

4 本日の内容 kaggleのPatent Phrase to Phrase Matchingコンペに参加し24位でした。 本日はコンペの反省会として概要や上位陣の解法、自チームの解法等を紹介します。

Slide 5

Slide 5 text

5 項目 01|PPPMコンペについて 02|公開カーネルの解法 03|上位陣の解法 04|自チームの解法

Slide 6

Slide 6 text

6 01 PPPMコンペについて

Slide 7

Slide 7 text

7 PPPMコンペについて| 概要 米国特許に関するフレーズのペアに対し、類似度を予測するNLPコンペ ● 米国の特許に関するフレーズのペアが与えられる ○ 例 : "television set"と"TV set" ● 類似度が5段階でラベル付けされており、その類似度を予測するコンペ ○ 類似度は0, 0.25, 0.5, 0.75, 1のいずれか ● コンペのモチベーションは特許の検索や審査を高度化すること ● 予測精度は相関係数で評価 ● codeコンペ(モデル+ 推論コードを提出)

Slide 8

Slide 8 text

8 PPPMコンペについて| 提供データ anchorとtargetという2種類のフレーズとcontext(特許分類区分)が与えられる これらを用いてanchorとtargetの類似度を予測する問題 train.csv : 36,473件 test.csv : 約12,000件 https://www.kaggle.com/code/remekkinas/eda-and-feature-engineering

Slide 9

Slide 9 text

9 PPPMコンペについて| 特徴① openな外部データの使用は許可されている 米国特許に関するopenデータは結構転がっており、活用の余地がありそうな雰囲気 https://developer.uspto.gov/data# https://patentsview.org/download/data-download-tables

Slide 10

Slide 10 text

10 PPPMコンペについて| 特徴② データセットには同一のanchorに複数のtargetが存在 trainデータ 36,473件のうちanchorのユニーク数はわずか733件(targetは29,340件) https://www.kaggle.com/code/utcarshagrawal/usppm-complete-eda-pytorch-baseline

Slide 11

Slide 11 text

11 02 公開カーネルの解法

Slide 12

Slide 12 text

12 公開カーネルの解法 | 1文に連結してbertへ投入 anchor,target,contextをsepトークンで1文に連結してbertモデルに入力 backboneはdeberta-v3-largeが多くのカーネルで利用され、精度も最良 df['text'] = df['anchor'] + '[SEP]' + df['target'] + '[SEP]' + df['context_text'] https://www.kaggle.com/code/yasufuminakama/pppm-deberta-v3-large-baseline-w-w-b-train 入力text

Slide 13

Slide 13 text

13 03 上位チームの解法

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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….)

Slide 16

Slide 16 text

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 ○ 精度向上よりは高速化に寄与

Slide 17

Slide 17 text

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)

Slide 18

Slide 18 text

18 04 自チームの解法

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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の除外 ○ アノテーションミスっぽいサンプルはあったので除外してみたが効果なし

Slide 21

Slide 21 text

21 まとめ・反省点 まとめ ● magicの発見で全てが決まるコンペだった ● modelのアンサンブルは他のNLPコンペと同様に効果的だった ○ 単体ではdeberta-v3-largeが直近コンペでは最強な感じ ● 外部データの活用は、今回は成功しているチームはいなさそう 反省点 ● transfomerは賢いので、とりあえず雑に突っ込んでもよさそう? ○ magicをみていると、他のtargetを連結しただけでよしなに学習してくれてそう ○ 2位解法ではoofスコアを文字列として突っ込むだけで学習してくれたらしい ● 不連続なLBの上がり方を見たら、magicの存在を疑う ○ 今回は締め切り1ヶ月前くらいに、LBが異常に高い人が現れた ○ そうなるとチューニング的な改善では一生追いつけない..