Unagi2 / job_classification

Signate主催である,職種分類コンペのプロジェクト
https://signate.jp/competitions/724
0 stars 0 forks source link

CVとLBの乖離原因について #6

Open Unagi2 opened 2 years ago

Unagi2 commented 2 years ago

ひとつ考えられたのは、生成データはtrainの最初の3単語から続く文として生成されているため、この3単語のみで分類学習が行われている可能性。

なのでeval f1など各学習時のスコアは高く、testデータの分類の時は、最初の3単語に重みがあるためスコアが悪化。

文脈や関連性で分類されていない可能性。文頭のところでほぼほぼ分類が行われてるのかなと。

Unagi2 commented 2 years ago

解決方法としては2つある

1.まずは単純に生成データの最初の3単語を削除したものをデータセットにし、評価

2.削除した3単語について、Transformerで再生成したデータセットを評価

Kazunonda commented 2 years ago

過学習を抑制することも重要であると考えられる DropoutやSchedulerを調整するといった方法以外にも考案する必要があるが、最も重要なのはデータセットの水増しであろう GPT2だけでなくEDA(Easy Data Augmentation)を実装してみる

Unagi2 commented 2 years ago

実施内容と結果

1.文頭3単語の削除

実装内容

生成テキストから入力テキストである3単語を削除し,文頭が欠損している文をデータセットとして作成

結果

CVとLBの乖離の解消を確認.しかしLBが0.5付近と低い結果となった.

2.欠損した文頭3単語に対して,Fill-Maskedで穴埋め

実装内容

[Mask] [MASK] [MASK] ~ のように3つのマスクを一度に穴埋めはできないため,for文で一箇所ずつ穴埋め処理を行なった.

結果

文頭の欠損3単語分の穴埋めは可能であったが,穴埋めによる生成時間が長く非現実的であった. そのため,データセットを完成するには至らなかった.

3.生成時の入力単語の数を削減.単語の削除数を減らし3単語よりも文法の破壊を低減

実施内容

生成時の入力単語を従来の3単語から1単語に減らし生成.その後,文頭1単語を削除し文法の破壊を弱めることを目的とする.また,欠損1単語のMASK処理についても行なった.

結果

従来の3単語よりも,元の文の文脈の成分がないため類似度が低く,BERTの分類学習のスコアが低い結果となった. また,MASK処理についても依然処理時間が長く非現実的であった.

今後の方針

1.従来の3単語でデータセットのサイズを大きくする

-> 各ラベル10000データ以下 4000位で作成

2.text generatorとは別の手法実装

-> Paraphraseの導入検討

3.文頭3単語についてData Augmentetion [実装中]

Data Augmentetionからインスパイアを受けて,対象文を同義語・類義語に置換・拡張する方法を導入. 拡張された分は,文頭3単語が削除された部分に結合し,データセットとして作成.

Example

Original:(文頭3単語) Maintain and improve

Augmented Text:(拡張文) All maintain and improve

Unagi2 commented 2 years ago

方針