6th Place Solution
6th Place Solution
pre-process
- メール内の一番最初の改行コードを[SEP]に置換
- メールのタイトルと本文をBERTに区別して入力
- 文頭の"Subject: "は除去しなかった
modeling
- Stratified 5-Fold
- models
- BERT
- RoBERTa
- Electra
- 上記3つの出力の平均をとってアンサンブル
- 各層の[CLS]のhidden stateの重み付き平均を出力
- 重みが合計1になるように制約をかけて,訓練可能なパラメータとした
- Google QUEST Q&A Labeling 1st place より
- 各層ごとにlearning rateを設定
- 出力から遠い層ほど小さくなるように設定
- How to Fine-Tune BERT for Text Classification? より
- multi-sample dropout
- Multi-Sample Dropout for Accelerated Training and Better Generalization より
- cosine_schedul_with_warmup
post-process
- 出力結果が7838:17000になるように最適化
- SIGNATE Sutudent Cup 2020 より
- タイトル,本文ともにnullであるメール('Subject: \r\n')を0と予測
what did not work
- 本文中に多く登場した'enron', 'ect', 'hou'をtokenizerの辞書に追加
- XLNet
- もっとしっかりチューニングをすれば効果的だったかもしれない
反省
- 前処理を蔑ろにしすぎました.せめてBeautiful Soupくらいは試すべきでした.
- preprocess用の関数は作っていましたが,どこからも呼び出されていないことに終盤で気づきました.
- 他の方の解法を見て気づきましたが,今回のようなスコアが高くなりやすいコンペではpseudo labelingを試すべきでした.
- テストデータのラベルの割合は使用して良いのか迷いましたが,ルール上大丈夫そうかなと判断しました.
- 実運用を考えると絶対に使えない手法なのであまり褒められた手法ではないですが…
謝辞
ProbSpaceの運営の皆様,本コンペの運営お疲れ様でした.ありがとうございました.次のコンペも楽しみにしています.
code