DrDavis's picture
Upload folder using huggingface_hub
17c6d62 verified

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