Blog

Kaggle - CommonLit Readability Prize 参加記

概要

先日までKaggleのCommonLit Readability Prizeに参加しており、若干のshakedownをしてしまったものの最終的に132位で銀メダルを獲得することができました。

簡単にいうと、本コンペの目的は与えられた文章の「読みやすさ(Readability)」を予測することです。目的変数は連続値で、人間(現役教師)に2つの文章の比較を行ってもらった結果を元にこちらのDiscussionのような方法で計算されています。タスクのタイプとしては回帰であり、評価指標はRMSEでした。

コンペの詳細はリンクを参照していただくとして、ここでは自分の取り組みと上位陣のSolutionをまとめたいと思います。

自分の解法

CV

KFold

モデル

以下のモデルたちのNetflix Blending

Public LBへのoverfitを避けるためNetflix blendingの正則化は大きめに設定した(0.01)

学習

うまく行ったこと

うまく行かなかったこと

1st place solution

CV

6-fold crossvalidation or bootstrapping

External data

Pseudo-labeling

学習

モデル

2nd place solution

CV

targetをbinningしてStratified KFold

モデル

post process

3rd place solution

External data

Pseudo-labeling

学習

以下のサイクルを繰り返した

モデル

4th place solution

CV

モデル

学習

5th place solution

CV

KFold without shuffle

モデル

学習

6th place solution

CV

Stratified 5-fold

モデル

QAタスクでpretrainされたモデルがよかった。いろんな事前学習モデルを試すべき

学習

External data

trainデータのurlからスクレイピング

Pseudo-labeling

9th place solution

CV

モデル

12th place solution

モデル

学習

以下の手順で行った

  1. wikipediaデータでMLM事前学習
  2. trainでモデル作成
  3. wikipediaデータをpseudo-label
  4. pseudo-labled dataのうち正しそうなもののみ抽出
  5. MLMとpseudo-labelでさらに事前学習
  6. trainで学習

re-initialization of top 5 layersが効いた

まとめ

私にとって初めてのTransformersを使ったNLPコンペでした。初めは右も左もわからない状態でしたが、公開Notebookや論文を読んだりするなかでTransformersの仕組みや基本的な使い方がわかるようになり、参加して非常によかったと思っています。Top solutionを読んでの感想は以下です。

本コンペで得た知見を他のNLPコンペや業務に生かせたらと思います。

Follow me

誤りやコメントなどがあればご連絡ください。