Skip to content

Hiroki29/kaggle2021-CommonLit-Readability-Prize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

スクリーンショット 2021-05-12 10 47 07

kaggle2021-CommonLit-Readability-Prize

https://www.kaggle.com/c/commonlitreadabilityprize コンペのリポジトリ

Task

機械学習は、文章の適切な読解レベルを特定し、学習意欲を高めることができるのか?読書は、学業の成功に不可欠なスキルです。適切なレベルの課題を提供する魅力的な文章に触れることができれば、生徒は自然にリーディングスキルを身につけることができます。

現在、ほとんどの教育用テキストは、伝統的な読みやすさの方法や市販の計算式を使って読者に合わせています。しかし、それぞれに問題があります。Flesch-Kincaid Grade Levelのようなツールは、テキストのデコーディング(単語あたりの文字数や音節数など)や構文の複雑さ(文章あたりの単語数など)の弱い指標に基づいている。そのため、構成要素や理論的妥当性に欠けています。また、Lexileのように市販されている計算式は、コストが高く、適切な検証研究が行われておらず、計算式の特徴が公開されていないため、透明性の問題があります。

CommonLit, Inc.は、非営利の教育技術団体で、2,000万人以上の教師と生徒に、3年生から12年生までの無料のデジタルリーディングとライティングのレッスンを提供しています。アトランタにあるR1の公立研究大学であるジョージア州立大学と共同で、読みやすさの評価方法を改善するためにカグラーに挑戦しています。

このコンペティションでは、3年生から12年生のクラスで使用するために、読み物の複雑さを評価するアルゴリズムを構築します。そのためには、様々な年齢層の読者と、様々な分野から集められた大量のテキストを含むデータセットに、自分の機械学習スキルを組み合わせます。受賞モデルには、テキストのまとまりとセマンティクスが必ず組み込まれます。

成功すれば、管理者、教師、生徒の助けになるでしょう。パッセージを選ぶリテラシーカリキュラムの開発者や教師は、教室で使う作品を迅速かつ正確に評価できるようになります。さらに、これらの計算式は誰もが利用しやすくなります。おそらく最も重要なことは、生徒が自分の作品の複雑さや読みやすさについてのフィードバックを受けることができ、本質的なリーディングスキルをはるかに容易に向上させることができるということです。

evaluation

投稿作品は、平均平方根誤差(RMSE)で採点されます。RMSEは次のように定義されます。 スクリーンショット 2021-05-12 10 49 54

提出ファイル

id,target
eaf8e7355,0.0
60ecc9777,0.5
c0f722661,-2.0
etc.

Result

  • public: x.xxx
  • private: x.xxx
  • rank: xx/xx

Setting

  • directory tree
kaggle2021-Molecular-Translation
├── README.md
├── data         <---- gitで管理するデータ
├── data_ignore  <---- .gitignoreに記述されているディレクトリ(モデルとか、特徴量とか、データセットとか)
├── nb           <---- jupyter lab で作業したノートブック
├── nb_download  <---- ダウンロードした公開されているkagglenb
└── src          <---- .ipynb 以外のコード

Info

train.csv colomn infomaiton

2834件

name Explanation
id 一意のID
url_legal URLのソース
license 素材のライセンス
excerpt 読みやすさを予測するテキスト
target 読みやすさ
standard_error 各抜粋の複数の評価者間のスコアの広がりの尺度

test.csv colomn infomaiton

name Explanation
id 一意のID
url_legal URLのソース
license 素材のライセンス
excerpt 読みやすさを予測するテキスト

Log

20210512

Kaggle日記始動

20210604

本格的に始める

参考になりそうなEDA

所感

  • 非常にシンプルなタスクなため差が付きにくそう
  • まずは一つのモデルをしっかりとさせることに注力する!!!
  • アンサンブルは二の次である
  • 様々なBertのアンサンブルが良さそう

20210611

  • まずはアンサンブルより単一なモデルの精度向上を目指す

  • Robertaの仕組みがどうなっているのかを理解する

  • Bertの新たな知見

    • MLM,NSPに加えて同じドメインでの事前学習行うスクリーンショット 2021-06-11 5 42 24
  • 新たな良さげnotebook

  • なぜマルチヘッドアテンションを使うのか?

    • Self-Attentionでは, ある単語が単独で, 他の単語との注意スコアよりもはるかに多くの注意を引くことが観察される
    • これは, モデルが文脈を理解するのを妨げる可能性がある. そこで, self-Attentionのスコアを複数回測定することで, この問題を少しでも減らすことができる
  • まずはしっかりスクラッチで自分のコードを書く,その際コピペはせずちゃんと書く

  • 1実験1スクリプトで行う!参考(荒井さん)

20210612

実際にinferenceして提出してみた

  • roberta-base score : 0.517
  • roberta-large score : 0.594

気づき

  • 作成したモデルはubuntuPCからkaggleに保存したほうが良い
  • 提出するときはinternet接続できないからinputに入れておかないといけない

これからすること

  • 学習率についての理解を深める
  • epoch数はこのままでいいのか
  • max_lengthについて
  • アンサンブルの仕方(単に結果の平均を取るのか?)
  • 最後に単なるlinearでよいのか
  • 過去に優勝したNLPコンペをまとめる必要ありそう
  • スクリーンショット 2021-06-12 10 49 43
    • I calculated the validation score for every 40 steps (batch size: 8) and saved the model with the best validation score.(40ステップ(バッチサイズ:8)ごとに検証スコアを計算し、最高の検証スコアでモデルを保存しました。)
    • per 20 steps. 20ステップなどで評価するようにするスクリーンショット 2021-06-12 10 51 57
  • I'm using a batch size 8スクリーンショット 2021-06-12 10 53 16

学習率について

  • 現状
AdamW (
Parameter Group 0
    betas: (0.9, 0.999)
    correct_bias: True
    eps: 1e-06
    lr: 1e-05
    weight_decay: 0.003

Parameter Group 1
    betas: (0.9, 0.999)
    correct_bias: True
    eps: 1e-06
    lr: 1e-05
    weight_decay: 0.0
)

20210612

今日やること

My Experience So Far and Further Improvements このノートブックが非常に有益である スクリーンショット 2021-06-13 6 27 21

  • Further Improvements - There are many ways to improve the score further and I will be implementing some and sharing them very soon.

      1. Dynamic Padding / Sequence Bucketing
      2. Stochastic Weight Averaging(確率的重み平均)
      3. Utilizing Different Layers - There are many ways to do this concat, mean pooling, max pooling, attention, lstm, hierarchical or parallel aggregation.
      4. Unsupervised Data Augmentation
      5. MIXOUT - At each training iteration, each model parameter is replaced with its pre-trained value with probability p.  
      https://arxiv.org/abs/1909.11299  論文
      6. Pretraining + Multi-Task Training + Fine-tuning(複数のタスクを同時に微調整) - Multi-Task Learning : Finetuning on multiple tasks simultaneously. Using OneStop English and Weebit Corpus.
      7. Pretraining + STILTs Training(複数のタスクを順番に微調整) - STILTs Training: Finetuning on multiple tasks sequentially. Using OneStop English and Weebit Corpus.
      8. LLRD(最上層には高い学習率を適用し、最下層には低い学習率を適用) - Layer Wise Learning Rate Decay - Introduced in (Howard & Ruder, 2018). Applies higher learning rates for top layers and lower learning rates for bottom layers. The 4th notebook which does something similar where instead grouping of layers is done.
      9. Training Encoder and Head Separately(エンコーダーとヘッドを別々にトレーニングする?)
      10. Backtranslation Augmentation(逆翻訳を用いたデータの拡張)
      11. Larger and More Models(他の大きなモデル) - RoBERTa Large, XLNet, T5, Electra, Albert these models are comparatively trained on larger datasets than other models and thus might perform better.
      12. Ensembling Techniques(アンサンブル) - Like every other Kaggle competition this will be the key.
    
  • 前処理について
    You can see example code here: https://github.com/moizsaifee/kaggle-jigsaw-multilingual-toxic-comment-classification-3rd-place-solution

20210613

行ったこと

20210614

やることリスト

  • SVMの勉強
  • trainでinferenceをできるようにする infer/など?
  • アンサンブルの仕方検証

発見

20210615

やることリスト

20210624

やることリスト

20210625

やることリスト

  • ゼロ作で最適化、BNについて復習 コード動かす
  • schedulerについて勉強
  • layer毎にschedulerどのように変えているのかを調べる
  • optimizer毎に損失関数を可視化するべき こんな感じに スクリーンショット 2021-06-25 12 20 34

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages