Transformerモデルには重み行列がたくさんある

LLMのトランスフォーマーモデル全体では、いくつもの重み行列を用意します。主な部分を以下に示します。

1. エンベディング層の重み行列

  • まず、各トークン(単語など)を数値のベクトルに変換するための重み行列です。これによって、単語が埋め込みベクトルとして表現されます。

2. クエリ、キー、バリューの重み行列 \((W_Q, W_K, W_V)\)

  • Self-Attentionにおいて、入力トークンの埋め込みベクトルをクエリ(Q)、キー(K)、バリュー(V)に変換するために使う重み行列です。トランスフォーマーのエンコーダとデコーダの各層でそれぞれ別々に重み行列を学習します。

3. マルチヘッドアテンションの重み行列

  • マルチヘッドアテンションでは、通常複数のアテンションヘッドを使います。それぞれのヘッドでクエリ、キー、バリューの重み行列を持っており、それらを組み合わせることで全体のアテンションを形成します。各ヘッドには独自の重み行列があるため、ヘッドの数に応じて複数の重み行列が存在します。

4. フィードフォワードネットワークの重み行列

  • 自己アテンションの後にはフィードフォワードネットワークがあり、これにも学習可能な重み行列があります。この層は各トークンごとに独立に適用され、より複雑な関数を学習するために使用されます。

5. 出力の結合のための重み行列

  • マルチヘッドアテンションの各ヘッドから得られた出力を結合した後に、再び線形変換を行うための重み行列 \(W_O\) も存在します。この重み行列は、すべてのヘッドからの情報を統合して次の層に渡すために必要です。

全体としてのまとめ

トランスフォーマーモデル全体では、エンベディング層Self-Attention(複数のヘッド)、フィードフォワードネットワークなどで、層ごとに重み行列が用意されています。特に、各層にある複数のヘッドごとに重み行列が独立に存在するため、トランスフォーマーの全体では非常に多くの重み行列を保持しています。これにより、入力の文脈情報を多様な観点から効果的に捉えることができます。