大きな言語モデル:TinyBERT – 自然言語処理のためのBERT蒸留

最新の自然言語処理モデル:TinyBERT - BERT蒸留の革新的な技術

トランスフォーマー蒸留がLLMでのパワーを解き放つ

はじめに

近年、大規模な言語モデルの進化が急速に進んでいます。BERTは、高い精度でさまざまなNLPタスクを解決することができる最も人気のある効果的なモデルの一つとなりました。BERTの後にも、その後に多くのモデルが登場し、素晴らしい結果を示しました。

明らかにわかる傾向は、時間の経過とともに、大規模な言語モデル(LLM)はパラメータとトレーニングデータの数を指数関数的に増加させることで複雑化しているということです。深層学習の研究によれば、このようなテクニックは通常、より良い結果をもたらします。ただ残念なことに、機械学習の世界では既にLLMに関連するいくつかの問題に取り組んでおり、スケーラビリティが効果的なトレーニング、格納、使用の障害となっています。

この問題を考慮に入れると、LLMの圧縮のために特別な方法が開発されました。この記事では、Transformer蒸留に焦点を当て、TinyBERTという小さなBERTのバージョンの開発につながりました。さらに、TinyBERTの学習プロセスとTinyBERTを堅牢にするいくつかの微妙な点についても理解していきます。この記事は、公式のTinyBERTの論文を基にしています。

メインアイデア

最近、私たちはすでにDistilBERTで蒸留がどのように機能するかをカバーしました。短い言葉で言えば、損失関数の目的は、生徒と教師の予測を類似させるように変更されます。DistilBERTでは、損失関数は生徒と教師の出力分布を比較し、また両モデルの出力埋め込みも考慮します(類似性の損失のため)。

大規模言語モデル:DistilBERT — より小さく、高速で、安価で、軽量

BERT圧縮の秘密を解き放つ:最大の効率のための生徒・教師フレームワーク

towardsdatascience.com

TinyBERTでの蒸留フレームワークは、DistilBERTとそれほど変化しません。損失関数は再び変更され、生徒が教師を模倣するようになります。ただし、TinyBERTの場合はさらに一歩進みます: 損失関数は、両モデルが何を生成するだけでなく、予測がどのように行われるかも考慮しています。論文によると、TinyBERTの損失関数は、両モデルの異なる側面をカバーする3つの要素で構成されています。

  1. 埋め込みレイヤーの出力
  2. Transformerレイヤーから派生した非表示状態と注意行列
  3. 予測レイヤーのロジット出力

Transformer distillation losses

両モデルの非表示状態を比較するポイントは何ですか? 非表示状態と注意行列の出力を含めることで、生徒が教師の非表示層を学習し、教師の層と類似した層を構築することが可能になります。これにより、蒸留モデルは元のモデルの出力だけでなく、その内部の振る舞いも模倣することができます。

教師の振る舞いを再現することはなぜ重要ですか? 研究者らは、BERTが学習した注意の重みが言語の構造を捉える上で有益であると主張しています。そのため、別のモデルへの蒸留も生徒に言語知識を獲得する機会を与えます。

レイヤーマッピング

TinyBERTは、より小さなBERTバージョンを表します。BERTレイヤーの数をN、TinyBERTレイヤーの数をMと定義しましょう。レイヤーの数が異なるため、蒸留損失を計算する方法は明確ではありません。

この目的のために、特別な関数n = g(m)が導入され、TinyBERTの対応するレイヤーmにその知識を蒸留させるために使用されるBERTレイヤーnが定義される。選択されたBERTレイヤーは、トレーニング中の損失計算に使用されます。

導入された関数n = g(m)には2つの理論的制約があります:

  • g(0)= 0。これは、BERTの埋め込みレイヤーがTinyBERTの埋め込みレイヤーに直接マッピングされることを意味します。
  • g(M + 1)= N + 1。この方程式は、BERTの予測レイヤーがTinyBERTの予測レイヤーにマッピングされることを示しています。

その他のTinyBERTレイヤー1 ≤ m ≤ Mに対して、対応する関数値n = g(m)をマッピングする必要があります。今のところ、そのような関数が定義されていると仮定します。TinyBERTの設定については、この記事の後半で詳しく調べます。

トランスフォーマーの蒸留

1. 埋め込み層の蒸留

モデルに生の入力が渡される前に、まずトークン化され、学習済みの埋め込みにマップされます。これらの埋め込みは、モデルの最初のレイヤーとして使用されます。すべての可能な埋め込みは、行列の形式で表現できます。生徒と教師の埋め込みがどれだけ異なるのかを比較するために、それぞれの埋め込み行列E上で標準の回帰メトリックを使用することができます。例えば、トランスフォーマーの蒸留ではMSEを回帰メトリックとして使用します。

生徒と教師の埋め込み行列のサイズが異なるため、MSEを使用して要素ごとに比較することはできません。そのため、生徒の埋め込み行列に学習可能な重み行列Wを乗算して、結果の行列を教師の埋め込み行列と同じ形状にします。

埋め込み層蒸留損失

生徒と教師の埋め込み空間が異なるため、行列Wも生徒の埋め込み空間を教師の埋め込み空間に線形に変換する重要な役割を担っています。

2. トランスフォーマーレイヤーの蒸留

トランスフォーマーレイヤー蒸留損失の可視化

2A. アテンションレイヤーの蒸留

トランスフォーマーのマルチヘッドアテンションメカニズムは、豊富な言語知識を含むいくつかのアテンション行列を生成します。教師からアテンションの重みを転送することで、生徒も重要な言語コンセプトを理解することができます。このアイデアを実装するために、損失関数を使用して生徒と教師のアテンションの重みの差を計算します。

TinyBERTでは、すべてのアテンションレイヤーが考慮され、各レイヤーの結果の損失値は、それぞれの生徒と教師のアテンション行列のMSE値の合計です。

アテンションレイヤーの蒸留損失

アテンションレイヤーの蒸留に使用されるアテンション行列Aは、そのsoftmax出力softmax(A)ではなく正規化されていないことに注意してください。研究者によると、この微妙な違いは収束を早め、パフォーマンスを向上させるとされています。

2B. 隠れ層の蒸留

豊富な言語知識を捉えるというアイデアに従い、蒸留はトランスフォーマーレイヤーの出力にも適用されます。

隠れ層の蒸留損失

重み行列Wは、埋め込み層の蒸留について上記で説明したものと同じ役割を果たします。

3. 予測層の蒸留

最後に、生徒に教師の出力を再現させるために、予測層の損失を考慮します。これは、両モデルによって予測されたロジットベクトル間のクロスエントロピーを計算することで構成されています。

予測層の蒸留損失

予測されるロジットベクトルは、出力分布の滑らかさを制御する温度パラメーターTで除算されることもあります。TinyBERTでは、温度Tは1に設定されています。

損失方程式

TinyBERTでは、タイプに基づいて各層に独自の損失関数があります。いくつかの層に重要性を付けたり、重要性を下げたりするために、対応する損失値は定数aで乗算されます。最終的な損失関数は、すべてのTinyBERT層の損失値の重み付き合計となります。

TinyBERTの損失関数

数々の実験で、3つの損失成分のうち、トランスフォーマーレイヤーの蒸留損失がモデルのパフォーマンスに最も大きな影響を与えることが示されました。

トレーニング

重要な点として、ほとんどのNLPモデル(BERTを含む)は2つのステージで開発されていることに注意してください:

  1. モデルは大規模なコーパスのデータ上で事前学習され、言語構造の一般的な知識を得ます。
  2. モデルは微調整されたデータセット上で、特定の下位タスクを解決するために使われます。

同じパラダイムに従って、研究者たちはTinyBERTの学習プロセスも2つのステージで構成されるフレームワークを開発しました。 両方のトレーニングステージでトランスフォーマーの蒸留が使用され、BERTの知識がTinyBERTに転移されます。

  1. 一般的な蒸留。TinyBERTは、微調整せずに事前学習されたBERT(教師として)から言語構造の豊富な一般的な知識を得ます。このステージの後、少ない層とパラメーターを使用するため、TinyBERTは一般的にBERTよりも性能が低下します。
  2. タスク固有の蒸留。今度は、微調整されたBERTのバージョンが教師の役割を果たします。パフォーマンスをさらに向上させるために、研究者たちによって提案されたデータ拡張手法がトレーニングデータセットに適用されます。結果は、タスク固有の蒸留の後、TinyBERTがBERTに比肩する性能を達成することを示しています。
トレーニングプロセス

データ拡張

タスク固有の蒸留のために特別なデータ拡張技術が開発されました。これは、与えられたデータセットからシーケンスを取り、次の2つの方法のいずれかで単語の一部を置換することで構成されます:

  • 単語が同じ単語にトークン化される場合、この単語はBERTモデルによって予測され、シーケンス内の元の単語の代わりに予測された単語が置換されます。
  • 単語が複数のサブワードにトークン化される場合、それらのサブワードは最も類似したGloVe埋め込みに置き換えられます。

モデルサイズが相当に削減されているにもかかわらず、説明されたデータ拡張メカニズムはTinyBERTのパフォーマンスに大きな影響を与え、より多様な例を学習させることを可能にします。

拡張の例

モデル設定

14.5Mのパラメーターしか持たないTinyBERTは、BERT baseよりも約7.5倍小さいです。詳細な比較は、以下の図に示されています:

BERT base vs TinyBERTの比較

層マッピングに関して、著者は各TinyBERTレイヤーを各BERTレイヤーの3倍のマッピング関数によってマッピングする均一な戦略を提案しています: g(m) = 3 * m。他の戦略も研究されました(たとえば、すべての下部または上部のBERTレイヤーを採用するなど)、しかし均一な戦略が最も良い結果を示しました。これは転送情報をより多様化させるため、異なる抽象化レイヤーからの知識の転送を可能にするため、論理的です。

異なる層マッピング戦略。GLUEデータセットのパフォーマンス結果が表示されています。

トレーニングプロセスについては、TinyBERTは英語のWikipedia(2500M語)で訓練され、そのハイパーパラメータのほとんどはBERTベースと同じです。

結論

Transformer蒸留は自然言語処理における大きな進展です。Transformerベースのモデルは現在、機械学習において最もパワフルなものの一つですので、効果的に圧縮するためにはTransformer蒸留を適用することができます。最も優れた例の一つがTinyBERTですが、それはBERTベースから7.5倍の圧縮を実現しています。

パラメータの大幅な削減にもかかわらず、実験ではTinyBERTがBERTベースと比較可能なパフォーマンスを示しており、GLUEベンチマークで77.0%のスコアを達成しています。TinyBERTはBERTのスコアが79.5%であることからもわかるように、非常に素晴らしい成果です!最後に、量子化やプルーニングなどの他の人気のある圧縮技術もTinyBERTに適用することができ、さらに小さくすることができます。

参考文献

著者によるすべての画像(それ以外の場合を除く)

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more