0
0

ファインチューニングをするときに EOS token は入れた方がいいのか?

Posted at

ファインチューニングをするときに EOS token は入れた方がいいのか?

tokenizer.eos_token

はじめに

はじめまして。現在、私は大学院生(修士課程)です。

この記事では、言語モデルをファインチューニングをするときに end-of-sequence (EOS) token を入れるべきかどうかを考えたいと思います。
タスクやモデルによって、性能(精度)に EOS token を入れるとどうなるかは一概ではないと思っています。そのため、この問題に正解があるとは思っていません。あくまで @Natu_ja はこんな風に考えているんだな程度に見ていただきたいです。また、皆さんの意見も聞いてみたいので、よろしければコメントを残していただけると嬉しいです。

この記事が、自然言語処理を勉強・研究する人の参考になれば幸いです。

EOS token とは

文の終わりを表現する特殊トークンです。

EOS token は必要?

Causal Language Model では必要?

Causal Language Model の代表例としては、GPT があります。

個人的には、原則 EOS token は入れた方がいいと思っています。

EOS token は、文章の終わりを決める役割を担っています。Causal Language Model (CLM) は、自己回帰モデルという過去の出力を考慮して、次のトークンを予測します。
訓練データに EOS Token が含まれている場合、どのタイミングで文の終わりかを学習することができます。つまり、「文章の流暢さ」や「表現の豊かさ」などがどうかは除けば、「。」などの文としては、成立した形で生成される可能性が高いです。
一方、訓練データに EOS Token を含まない場合、どのタイミングで生成を終えればいいかの判断がつきません。そのため、指定したモデルの最大長まで出力します。大抵の場合、これは文の途中で生成が終わってしまうことを指します。

Masked Language Model では必要?

Masked Language Model の代表例としては、 BERT があります。

個人的な感覚としては、CLM ほど EOS token の重要性は高くないと思っています。

BERT の学習法として、双方向に文全体を処理することで、トークンの文脈を前後から理解できます。
BERT などでは、CLS token という文の全体の表現として利用されます。また、SEP token という文を分離するトークンがあります。
これらの理由から、EOS token の重要性は高くないと考えます。

おわりに

この記事では、言語モデルをファインチューニングをするときに end-of-sequence (EOS) token を入れるべきかどうかを考えました。

実際、性能(精度)がどうなるかはデータセットやモデルによって変わると思います。

この記事が、自然言語処理を勉強・研究する人の参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0