😗
大規模言語モデル
はじめに
- 勉強会で、担当者がいなかったので、土日に本3章分読んで、立候補した。なので、話すメモかく。その後ちゃんとした記事にしたい
気になった点(面白かったところとか)
- transformers使うと、いろんなタスクがすぐできる
- word2vecのskip-gramでは、中央単語の埋め込みと周辺単語の埋め込みの内積を最大化する必要があるとのこと > これは、損失関数内で、内積を最大化するようにこの本ではしていた。
- 上記は、単に周辺トークンを予測できればいいから、そのようなネットワークでは内積が最大化するようにしなくていいと思う。内積を最大化するのは、周辺が真ん中と似ている必要があるが、それは、分布仮説がなりたつのに必要ないように見えるし、直感的に似ている必要ないと思えるので、どっちが性能いいかの論文みたくなった。AIに聞いてみるか~
- 位置埋め込みを異なる位置で内積とると遠いほど小さくなるようになる
- 次単語予測を学習することは、つまり文法、知識、感情、推論を学習することになる
- バイト対符号化 : 文字やバイトからはじまり、頻度の高いものを語彙に追加していく
- wordPiece : サブワードを作るときに、頻度でなく、スコアをもとに行う
toransfomerの3分類
- GPT(decorder) : FTするのにhead追加、特殊トークン埋め込みは乱数で初期化されモデルに追加される。損失関数は、事前学習とFT時のものと組み合わせ
- BERT,RoBERTA,SpanBERT(Encorder) : 特殊トークンは事前学習時から使用。BERTではセグメント埋め込みも使用。事前学習は、マスク言語モデリング(マスク率重要)と次文予測(poolingしている)。SpanBERTでは、マスクするときに、スパン単位で!。
- T5(encorder-decorder) : 入力テキストと強く関連する生成等に強い。位置埋め込みとして、キーとクエリーの相対位置でのスコアがアテンションで計算されるのみ。マスクのスパンを固有表現、日付に対応等すると性能up確認。マルチタスク学習も(接頭辞を使用)
Discussion