7.1 KiB
ALBERT
概要
ALBERTモデルは、「ALBERT: A Lite BERT for Self-supervised Learning of Language Representations」という論文でZhenzhong Lan、Mingda Chen、Sebastian Goodman、Kevin Gimpel、Piyush Sharma、Radu Soricutによって提案されました。BERTのメモリ消費を減らしトレーニングを高速化するためのパラメータ削減技術を2つ示しています:
- 埋め込み行列を2つの小さな行列に分割する。
- グループ間で分割された繰り返し層を使用する。
論文の要旨は以下の通りです:
自然言語表現の事前学習時にモデルのサイズを増やすと、下流タスクのパフォーマンスが向上することがしばしばあります。しかし、ある時点でさらなるモデルの増大は、GPU/TPUのメモリ制限、長い訓練時間、予期せぬモデルの劣化といった問題のために困難になります。これらの問題に対処するために、我々はBERTのメモリ消費を低減し、訓練速度を高めるための2つのパラメータ削減技術を提案します。包括的な実証的証拠は、我々の提案方法が元のBERTに比べてはるかによくスケールするモデルを生み出すことを示しています。また、文間の一貫性をモデリングに焦点を当てた自己教師あり損失を使用し、複数の文が含まれる下流タスクに一貫して助けとなることを示します。その結果、我々の最良のモデルは、BERT-largeに比べてパラメータが少ないにもかかわらず、GLUE、RACE、SQuADベンチマークで新たな最先端の結果を確立します。
このモデルはlysandreにより提供されました。このモデルのjaxバージョンはkamalkrajにより提供されました。オリジナルのコードはこちらで見ることができます。
使用上のヒント
- ALBERTは絶対位置埋め込みを使用するモデルなので、通常、入力を左側ではなく右側にパディングすることが推奨されます。
- ALBERTは繰り返し層を使用するためメモリ使用量は小さくなりますが、同じ数の(繰り返し)層を反復しなければならないため、隠れ層の数が同じであればBERTのようなアーキテクチャと同様の計算コストがかかります。
- 埋め込みサイズEは隠れサイズHと異なりますが、これは埋め込みが文脈に依存しない(一つの埋め込みベクトルが一つのトークンを表す)のに対し、隠れ状態は文脈に依存する(1つの隠れ状態がトークン系列を表す)ため、H >> Eとすることがより論理的です。また、埋め込み行列のサイズはV x Eと大きいです(Vは語彙サイズ)。E < Hであれば、パラメータは少なくなります。
- 層はパラメータを共有するグループに分割されています(メモリ節約のため)。次文予測(NSP: Next Sentence Prediction)は文の順序予測に置き換えられます:入力では、2つの文AとB(それらは連続している)があり、Aに続いてBを与えるか、Bに続いてAを与えます。モデルはそれらが入れ替わっているかどうかを予測する必要があります。
参考資料
AlbertConfig
autodoc AlbertConfig
AlbertTokenizer
autodoc AlbertTokenizer - build_inputs_with_special_tokens - get_special_tokens_mask - create_token_type_ids_from_sequences - save_vocabulary
AlbertTokenizerFast
autodoc AlbertTokenizerFast
Albert specific outputs
autodoc models.albert.modeling_albert.AlbertForPreTrainingOutput
autodoc models.albert.modeling_tf_albert.TFAlbertForPreTrainingOutput
AlbertModel
autodoc AlbertModel - forward
AlbertForPreTraining
autodoc AlbertForPreTraining - forward
AlbertForMaskedLM
autodoc AlbertForMaskedLM - forward
AlbertForSequenceClassification
autodoc AlbertForSequenceClassification - forward
AlbertForMultipleChoice
autodoc AlbertForMultipleChoice
AlbertForTokenClassification
autodoc AlbertForTokenClassification - forward
AlbertForQuestionAnswering
autodoc AlbertForQuestionAnswering - forward
TFAlbertModel
autodoc TFAlbertModel - call
TFAlbertForPreTraining
autodoc TFAlbertForPreTraining - call
TFAlbertForMaskedLM
autodoc TFAlbertForMaskedLM - call
TFAlbertForSequenceClassification
autodoc TFAlbertForSequenceClassification - call
TFAlbertForMultipleChoice
autodoc TFAlbertForMultipleChoice - call
TFAlbertForTokenClassification
autodoc TFAlbertForTokenClassification - call
TFAlbertForQuestionAnswering
autodoc TFAlbertForQuestionAnswering - call
FlaxAlbertModel
autodoc FlaxAlbertModel - call
FlaxAlbertForPreTraining
autodoc FlaxAlbertForPreTraining - call
FlaxAlbertForMaskedLM
autodoc FlaxAlbertForMaskedLM - call
FlaxAlbertForSequenceClassification
autodoc FlaxAlbertForSequenceClassification - call
FlaxAlbertForMultipleChoice
autodoc FlaxAlbertForMultipleChoice - call
FlaxAlbertForTokenClassification
autodoc FlaxAlbertForTokenClassification - call
FlaxAlbertForQuestionAnswering
autodoc FlaxAlbertForQuestionAnswering - call