大規模言語モデル、ALBERT – 自己教示学習用のLite BERT
大規模言語モデルALBERTのLite BERT:自己教示学習のための効果的な探求
BERTアーキテクチャの選択肢を理解し、コンパクトで効率的なモデルを作るための重要な技術を理解する
導入
近年、大規模言語モデルの進化は爆発的な勢いで進んでいます。BERTは、高い精度でさまざまな自然言語処理タスクを解決することができる最も人気のある効率的なモデルの1つとなりました。BERTの後には、その他のモデルも登場し、驚くべき結果を示しました。
明白な傾向は、時間とともに大規模言語モデル(LLM)が複雑になっており、パラメータやトレーニングデータが指数関数的に増加していることです。ディープラーニングの研究によれば、このような技術は通常、より良い結果につながることが示されています。残念ながら、機械学習の世界では、LLMに関するいくつかの問題に取り組む必要があり、拡張性は効果的なトレーニングや保存、使用の面で最も重要な障害となっています。
その結果、最近は拡張性の問題に対処するために新しいLLMが開発されました。本記事では、BERTのパラメータを大幅に削減することを目的として2020年に考案されたALBERTについて説明します。
- 「オープンソースLLMsの歴史:初期の日々(パート1)」
- 「ChatGPTの高度な設定ガイド – Top P、Frequency Penalties、Temperatureなど」
- 「GoでレストAPIを構築する:時系列データのデータ分析」
ALBERT
ALBERTの基礎となるメカニズムを理解するために、その公式論文を参照します。ほとんどの場合、ALBERTはBERTと同じアーキテクチャを派生させています。以下でアーキテクチャの選択肢に関する3つの主な違いについて説明します。
ALBERTのトレーニングおよびファインチューニング手順はBERTと同様です。BERTと同様に、ALBERTは英語のWikipedia(2500M語)およびBookCorpus(800M語)で事前トレーニングされます。
1. パラメータ埋め込みの分解
入力シーケンスがトークン化されると、トークンごとにボキャブラリーの埋め込みの1つにマッピングされます。これらの埋め込みはBERTの入力に使用されます。
Vをボキャブラリーサイズ(可能な埋め込みの総数)とし、Hを埋め込みの次元とすると、V x Hの埋め込み行列にはHの値を保持するためにV個の埋め込みが必要です。実際には、この行列は通常非常に大きなサイズを持ち、メモリの大量消費が必要です。さらに重要な問題は、埋め込み行列の要素の大部分がトレーニング可能であり、モデルが適切なパラメータを学習するために多くのリソースを必要とすることです。
たとえば、BERTベースモデルを取ると、30,000のトークンからなるボキャブラリーがあり、各トークンは768次元の埋め込みで表されます。合計で、ストレージおよびトレーニングには23Mの重みが必要です。さらに大きなモデルでは、この数はさらに大きくなります。
この問題は行列の因数分解を使用することで回避できます。元のボキャブラリー行列V x Hを、サイズがV x EおよびE x Hの小さな2つの行列のペアに分解することができます。
結果として、O(V x H)のパラメータではなく、分解によりO(V x E + E x H)の重みのみが必要となります。明らかに、H >> Eの場合にこの方法は効果的です。
行列の因数分解のもう1つの素晴らしい点は、トークン埋め込みの取得プロセスが変わらないということです:左側の分解行列V x Eの各行は、元の行列V x Hと同じ単純な方法でトークンをそれに対応する埋め込みにマッピングします。これにより、埋め込みの次元はHからEに減少します。
ただし、分解された行列の場合、BERTの入力を得るために、マッピングされた埋め込みを隠れたBERT空間に射影する必要があります。これは、左側の行列の対応する行を右側の行列の列と乗算することで行われます。
2. 層間パラメータの共有
モデルのパラメータを減らす方法の一つは、共有可能にすることです。つまり、すべてのパラメータが同じ値を共有するということです。ほとんどの場合、これは単に重みを保存するのに必要なメモリを減らすだけです。ただし、バックプロパゲーションや推論のような標準のアルゴリズムは、引き続きすべてのパラメータで実行する必要があります。
パラメータ共有を効率的に行う方法の一つは、モデルの異なるが類似したブロックに配置することです。これにより、順伝播や逆伝播中の共有可能なパラメータのほとんどの計算が同じになる確率が高くなります。これにより、効率的な計算フレームワークの設計にさらなる機会が生まれます。
このアイデアは、ALBERTに実装されており、同じ構造を持つ一連のトランスフォーマーブロックから成り立っているため、パラメータの共有がより効率的に行われます。実際、トランスフォーマーの各レイヤーでパラメータを共有する方法はいくつかあります:
- 注意機構のパラメータのみを共有する;
- 順伝播ニューラルネットワーク(FNN)のパラメータのみを共有する;
- すべてのパラメータを共有する(ALBERTで使用)。
一般的に、すべてのトランスフォーマーレイヤーをN個のサイズMのグループに分割し、各グループでパラメータを共有することが可能です。研究者たちは、グループサイズMが小さいほど結果が良くなることを発見しました。しかし、グループサイズMを減らすことは、総パラメータ数の大幅な増加を引き起こします。
3. 文の順序予測
BERTは、事前学習時に2つの目的に重点を置いています:マスクされた言語モデリング(MSM)と次の文予測(NSP)。一般的に、MSMはBERTの言語的な知識を向上させるために設計されており、NSPの目標はBERTの特定の下流タスクでのパフォーマンスを向上させることです。
しかし、複数の研究は、MLMと比較してNSPの目的の単純さのためにNSPを削除することが有益である可能性があることを示しています。この考えに沿って、ALBERTの研究者はNSPタスクを削除し、文の順序予測(SOP)問題で置き換えることを決定しました。SOPの目標は、両方の文が正しい順序または逆の順序に配置されているかを予測することです。
トレーニングデータセットに関して、入力文のすべての正のペアは、同じテキストパッセージ内で連続的に収集されます(BERTと同じ手法)。ネガティブな文の場合、原則は同じですが、両方の文が逆の順序になる点が異なります。
NSPの目的で訓練されたモデルは、SOPのタスクを正確に解決することができませんが、SOPの目的で訓練されたモデルは、NSPの問題については良いパフォーマンスを示します。これらの実験は、ALBERTがBERTよりもさまざまな下流タスクを解決するためにより適応していることを証明しています。
BERT vs ALBERT
BERTとALBERTの詳細な比較は、以下の図に示されています。
- 隠れ層のサイズの増加でも同様の現象が起こります。4096より大きな値を使用すると、モデルのパフォーマンスが低下します。
結論
ALBERTは、下流タスクでオリジナルのBERTモデルを上回るため、初めから望ましい選択肢のように思われます。ただし、ALBERTはより長い構造を持つため、計算量が大幅に増加します。例えば、ALBERT xxlargeは235Mのパラメータと12層のエンコーダレイヤーを持っています。これらの235Mの重みのほとんどは、1つのトランスフォーマーブロックに属しています。その重みは、12層ごとに共有されます。したがって、トレーニングや推論中には、20億を超えるパラメータでアルゴリズムが実行される必要があります!
これらの理由から、ALBERTは、速度を犠牲にしてより高い精度を達成する場合に適しています。最終的に、NLPの領域は絶えず新しい最適化技術に向けて進化しています。ALBERTの速度は、近い将来改善される可能性が非常に高いです。論文の著者たちは、”疎なアテンション”や”ブロックアテンション”などの手法をALBERTの高速化のための潜在的なアルゴリズムとして既に言及しています。
参考資料
すべての画像は、特記がない限り著者によるものです。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles