HUOXIU

大規模言語モデルの探究:自己注意の理解

出典: JDテクノロジー

01  
背景情報


今年のアジャイルチーム構築中に、Suite Executorを使ってワンクリックで自動ユニットテストを実装しました。Suite Executorの他に、JuintにはどんなExecutorがあるのでしょうか?こうして、私のRunner探求の旅が始まりました!
ChatGPTの世界的な成功を受けて、大規模言語モデルの学習と応用は急速にホットなトレンドとなっています。プログラマーとして、私たちはその表面的な外観だけでなく、その根底にある原理を理解する必要があります。ChatGPTがこれほど優れた質問応答性能を実現できるのは、一体なぜでしょうか?自己注意メカニズムの巧妙な統合は、間違いなく重要な要素の一つです。では、自己注意とは一体何であり、どのようにしてこれほど驚くべき結果を生み出すのでしょうか?今日は、このメカニズムの背後にある原理を一緒に探っていきましょう。


人類は数百万年にわたる進化の過程で、環境の変化を素早く観察する能力を発達させ、利益を最大化し、損害を最小限に抑える能力を身につけました。この能力は「注意」として知られています。機械学習の分野では、バイオニクスの原理も広く活用されています。ニューラルネットワークや遺伝的アルゴリズムと同様に、注意メカニズムは1980年代初頭から関連研究に登場していました。初期の段階では、画像から重要な情報を識別・抽出するために、注意メカニズムがよく利用されていました。例えば、下の画像では、注意アルゴリズムを用いて画像から「一時停止の標識」を抽出しています。

ディープラーニングアルゴリズムの進歩に伴い、シーケンス入力処理においてアテンションメカニズムが広く応用されるようになりました。中でもTransformerモデルのセルフアテンションメカニズムは顕著な例です。各シーケンス入力を無差別に処理するアルゴリズムと比較して、セルフアテンションは入力コンテンツ間の相関関係を抽出できるため、優れた性能を発揮します。品詞タグ付けを例に挙げましょう。「I saw a saw」という文を考えてみましょう。この文には「saw」という単語が2つ含まれています。1つ目は「見る」という意味の動詞で、2つ目は「saw」という意味の名詞です。各単語を個別に分析すると、アルゴリズムは名詞か動詞かを判断できません。したがって、目的の結果を得るには、両方の単語を同じコンテキスト内で分析する必要があります。これを実現するために、連続したコンテキストを捉えるためのウィンドウを設定します。ウィンドウの長さは計算コストに正比例します。したがって、テキストが長くなるほど、アルゴリズムが消費するリソースは多くなります。大規模モデルでは、自己注意メカニズムはウィンドウの長さとテキストの長さの相関関係を断ち切るように設計されています。

自己注意を用いたモデルは、前の文字の結果に依存せずに、現在の文字の結果を直接計算できます。これにより並列計算が保証され、ウィンドウ制限が排除されます。そのため、非常に長いシーケンスを処理する際に、大幅な効率向上が期待できます。



02  
 

注意メカニズムを理解する

(注意メカニズム)

  


プロセスの理解:まず、MCubeはテンプレートキャッシュの状態に基づいて、ネットワークから最新のテンプレートを取得するかどうかを判断します。テンプレートが取得されると、そのテンプレートをロードします。ロードフェーズでは、出力がビューツリー構造に変換されます。変換後、式エンジンが式を解析し、正しい値を取得します。イベント解析エンジンはユーザー定義イベントを解析し、イベントバインディングを完了します。解析、値の割り当て、イベントのバインディングが完了したら、ビューがレンダリングされ、最終的に…

注意メカニズムは、人間の注意をシミュレートするアルゴリズムです。2つのベクトル間の相関を計算する関数として理解できます。2つのベクトル間の相関が高いほど、注意スコアが高くなります。下の図は、ベクトルIのベクトルNへの注意の計算を示しています。ベクトルIは、i番目の入力トークンを単語に埋め込むことによって得られます。ベクトルNは、n番目の入力トークンを単語に埋め込むことによって得られます。ベクトルOは、結果、つまりベクトルIのNへの注意スコアを表します。Oを処理(たとえば、多値の場合のソフトマックス処理)した後、それは入力Nに対するIの重みと考えることができます。注意計算後、ベクトルIとNのスコアが高いほど、IとNの相関が高くなります。これにより、後続の計算は注意スコアの高いベクトルのみに集中できるため、計算効率が最適化されます。

注意関数は定義済みの関数であり、次の章で詳しく説明します。簡単に言うと、アルゴリズムレベルでは、注意とは2つのベクトル間の類似度を計算することです。2つのベクトルの類似度が高い場合、入力ベクトルの重みが大きくなります。より抽象的に言えば、入力ベクトルはより多くの注意を受け取ります。


03  
 

理解する

自己注意

  


プロセスの理解:まず、MCubeはテンプレートキャッシュの状態に基づいて、ネットワークから最新のテンプレートを取得するかどうかを判断します。テンプレートが取得されると、そのテンプレートをロードします。ロードフェーズでは、出力がビューツリー構造に変換されます。変換後、式エンジンが式を解析し、正しい値を取得します。イベント解析エンジンはユーザー定義イベントを解析し、イベントバインディングを完了します。解析、値の割り当て、イベントのバインディングが完了したら、ビューがレンダリングされ、最終的に…

Transformerフレームワーク(自己注意に基づく深層学習モデル)で使用される注意メカニズムは、自己注意(または内部注意と呼ばれることもあります)と呼ばれます。前のセクションを踏まえ、この注意メカニズムは、連続する入力コンテンツを文脈的関連性に基づいて強化することで、注意メカニズムが入力全体における他の入力トークン間の相関関係をより適切に認識できるようにし、より多くの情報を抽出するための条件を作り出します。まさにこの自己注意こそが、Transformerフレームワークを用いたGPTモデルがコンテンツ生成において非常に効果的である理由です。

下図に示すように、入力はベクトルa1~a4の集合であり、出力は自己注意計算後のベクトルb1~b4の集合です。入力ベクトルa1は、単語埋め込み後の元の入力ベクトルの集合である場合もあります。また、入力ベクトルa1は、前の隠れ層の出力である場合もあります。つまり、自己注意計算の結果は通常、他の層の入力として使用され、モデルの後続部分が入力ベクトル集合内の相関の高いベクトル関係をよりよく理解するのに役立ちます。

上の図では、出力ベクトルb1は入力ベクトルa1に対し、全ての入力ベクトルとの関連性を考慮した結果です。では、a1とa(n)の関連性αはどのように計算するのでしょうか?これは前章で説明した計算方法です。では、アテンション関数で実行される具体的な計算を見ていきましょう。

まず、a1に𝑊𝑞を乗じてベクトルqを生成し、a(n)に𝑊𝑘を乗じてベクトルkを生成します。次に、 ベクトルqとkのドット積を計算し、a1とa(n)の相関係数𝛼𝑛を求めます。全体の処理を下図に示します。ここで、 𝑊𝑞 𝑊𝑘は、モデルの学習によって学習された2つの行列であり、注目点(または知識)を表す固定定数と解釈できます。

アテンション関数の選択に決まった公式はありません。例えば、TransformerはScaled Dot-Product Attentionと呼ばれるアルゴリズムを使用しています。そのため、アテンション関数に適切なアルゴリズムを選択することは未解決の問題であり、各自の理解に基づいて様々なアルゴリズムを試すことができます。

TransformerのSelf Attentionに施された最適化を詳しく見てみましょう。Self Attentionでは、Attention関数はクエリ情報とキーバリューデータセットの関連性を計算するプロセスとして抽象化されています。計算された出力は、キーバリューデータセット内の各要素ペアのクエリに対する重み値です。ここで、クエリ、キー、値、出力はすべてベクトルです。この関数はScaled Dot-Product Attentionと呼ばれます。

入力 a1 ~ a4 を例として、Transformer での Scaled Dot-Product Attention の計算プロセスを分解してみましょう。

1. a1 にqを掛けてベクトル q1 を取得します。

2. K にそれぞれ a1、a2、a3、a4 を掛けて、k1、k2、k3、k4 を取得します。

3. q1とk(n)を点ごとに掛け合わせて𝑎1 , 𝑛を得る

4. 𝑎 1,1 𝑎 1,2 𝑎 1,3 𝑎 1,4に対してソフトマックス計算を実行し𝑎 1,1 𝑎 1,2 𝑎 1,3 𝑎 1,4を取得します。ここでソフトマックスを使用するのは代替アプローチであり、 ReLU などの他の関数も使用できます

5. 𝑊 𝑣 にそれぞれ a1、a2、a3、a4 を掛けて、v1、v2、v3、v4 を取得します。

6. 最後に、v(n) に𝑎 1,( 𝑛 )を掛けて、行列 b1、b2、b3、b4 を得ます。計算手順は同様で、入力 a1 をそれぞれ b2、b3、b4 に置き換えるだけです。

上記のプロセスは次の図で説明できます。

a1、a2、a3、a4をベクトル行列𝐴𝑖𝑛𝑝𝑢𝑡として自己注意機構に一括入力すると、以下の式に示すように、対応する行列Q、K、Vが得られます。ここで、 𝑊𝑞𝑊𝑘𝑊𝑣 モデル学習中に学習された定数係数です。

Q = 𝑊 𝑞 𝐴 𝑛𝑝𝑢𝑡
K = 𝑊 𝑘 𝐴 𝑛𝑝𝑢𝑡
V = 𝑊 𝑣   芸術
位置エンコーディング
前述の自己注意モデルでは、トークンに対応する位置情報を持つ入力は存在しません。しかし、シーケンス入力の場合、位置情報も非常に重要な情報を含んでいます。例えば、先ほどの「私はのこぎりを見た」という例で位置情報を削除すると、2つの「のこぎり」の具体的な意味を判断できなくなります。Transformerモデルが位置情報に注目できるように、モデル設計者は位置を符号化し、ベクトル化しました。これは位置符号化と呼ばれます。
モデル設計者は、下図に示すように、正弦関数と余弦関数を用いて位置を符号化しました。ここで、posは現在の位置、iは次元を表します。各次元の位置予測は、 2k から10000 2k までを持つ正弦波です。_i_t ...

位置エンコーディングに有限振幅周期振動の正弦関数と余弦関数を選択する理由は、モデルがトレーニング テキストの最大長を超えるコンテンツを予測できるようにし、より優れた一般化結果を実現するためです。

上記で説明した位置エンコーディング関数は、Transformerモデルで使用されているもののみです。エンコーディング関数の選択もまた、明確な解決策のない問題です。モデル設計者は、位置に関する独自の理解に基づいて、異なる位置エンコーディング関数を設計できます。実際、いくつかの論文(https://arxiv.org/abs/2003.09229)では、モデルの学習を用いて位置エンコーディング情報を動的に生成する手法が既に用いられています。



04  
 

理解する

マルチヘッドアテンション

  


プロセスの理解:まず、MCubeはテンプレートキャッシュの状態に基づいて、ネットワークから最新のテンプレートを取得するかどうかを判断します。テンプレートが取得されると、そのテンプレートをロードします。ロードフェーズでは、出力がビューツリー構造に変換されます。変換後、式エンジンが式を解析し、正しい値を取得します。イベント解析エンジンはユーザー定義イベントを解析し、イベントバインディングを完了します。解析、値の割り当て、イベントのバインディングが完了したら、ビューがレンダリングされ、最終的に…

異なる次元にまたがる入力ベクトルからの特徴の並列抽出を可能にするために、Self-Attention を基盤とする Transformer アーキテクチャは、マルチヘッド アテンションの概念を導入しています。たとえば、以前のトレーニングでは、モデルは品詞次元と意味次元の両方の特徴を学習し、それぞれΩ <sub>s</sub>Ω <sub> s</sub> と表記されています。ここで、 Ω = ( <sub>i</sub> , <sub>i </sub> , <sub> i </sub> ) です。これは、それぞれが異なるアテンション次元で特徴を抽出するために使用される 2 つのヘッドで構成されていると理解できます。マルチヘッド アテンションは次の図で表され、それぞれが異なる特徴値を計算するために使用される h 個のヘッドで構成されます。最後に、Concat メソッドによって特徴がマージされ、次のレイヤーに送られてさらに処理されます。



05  
  要約  


プロセスの理解:まず、MCubeはテンプレートキャッシュの状態に基づいて、ネットワークから最新のテンプレートを取得するかどうかを判断します。テンプレートが取得されると、そのテンプレートをロードします。ロードフェーズでは、出力がビューツリー構造に変換されます。変換後、式エンジンが式を解析し、正しい値を取得します。イベント解析エンジンはユーザー定義イベントを解析し、イベントバインディングを完了します。解析、値の割り当て、イベントのバインディングが完了したら、ビューがレンダリングされ、最終的に…

自己注意の概念は、画期的な論文「Attention is all you need」(https://arxiv.org/abs/1706.03762)で初めて提唱され、注意メカニズムの理解における大きな飛躍的進歩となりました。自己注意は従来の注意アルゴリズムの性能限界を克服し、大規模データセットの処理効率を大幅に向上させます。その結果、大規模データセットにおけるモデルの学習効率は、投入されたハードウェアリソースに大きく依存し、その効果は割り当てられたリソースに正比例します。同時に、自己注意の並列処理特性はGPUの並列計算能力を補完し、学習効率をさらに向上させます。そのため、時間の経過とともに学習リソースへの継続的な投資が進むにつれて、自己注意メカニズムを採用した大規模言語モデルのパラメータサイズは着実に増加しています。

さらに、本論文ではTransformerに関連する自己注意メカニズムのみを紹介しており、より古典的な注意メカニズムについてはあまり触れていません。しかし、注意メカニズムの発展を理解することは、自己注意の理解を深める上で役立ちます。そのため、関心のある読者は、注意メカニズムの発展の歴史を具体的に紹介した論文「ニューラルネットワークにおける注意メカニズム:その起源と終焉」(https://arxiv.org/pdf/2204.13154)を読むことをお勧めします。

記事リンク

BERT: 言語理解のための深層双方向変換の事前学習
整合と翻訳を共同学習するニューラル機械翻訳
連続動的モデルを用いたTransformerの位置エンコード学習
NTUビデオリンク:
https://b23.tv/jBK3VXe

‍‍