一覧へ

TransformersとEmbedding:セルタイプ空間への単語のマッピング

トークン、Embedding、位置エンコーディング、残差結合、およびLayerNormの目的と原理。scRNA-seq UMAP空間におけるセルタイプの配置のアナロジーを用いて、Embedding空間の形状を理解します。

入門
|
22
|
検証済み (2026-07)
進捗0/15 (0%)

TransformerとEmbedding:単語を細胞タイプ空間にマッピングする

このトピックを修了すると

第2部から第4部では、基本的に3362万個のパラメータを持つ「ダイヤル」であり、そのトレーニング方法について見てきました。このパートでは、これらの機械を言語を意識したアーキテクチャに再構築するTransformerについて学びます。以下の5つの主要コンポーネントについて順に説明します。トークン化、Embedding、位置エンコーディング、残差接続、およびレイヤー正規化です。

主要な動作原理であるアテンションは、第6部で別途説明します。ここでは、アテンションがどこに配置されるかを簡単に示し、残りの構造に焦点を当てます。


画像とは異なる、言語の3つの難題

第2部では、病理スライド(画像)用のニューラルネットワークを見てきました。画像は、ニューラルネットワークが比較的扱いやすいデータです。ピクセル値はすでに実数であり、画像は自然な2次元グリッド構造を持ち、近傍関係も明確です。

言語は本質的に異なり、3つの難題があります。

第一に、離散的であることです。 単語「猫」は実数ではなく、単一の離散的な記号です。これをニューラルネットワークで処理するには、数値で表現する必要があります。ただし、任意の「猫=0.42、犬=0.51」のような実数を割り当てると、「猫は犬の82%に相当する」のような意味のない関係が生じてしまいます。

第二に、順序が重要です。 「犬が人を噛んだ」と「人が犬を噛んだ」は、全く異なるニュース記事です。単語の順序を変えるだけで、意味が逆転します。画像は回転や移動に対してある程度ロバストですが、言語はわずかな順序の変更でも破壊されてしまいます。

第三に、意味は文脈によって変化します。 第1部で述べたように、単語「肝臓」は、「肝臓(臓器)」、「塩味の強さ」、または「-ed(過去形)」など、複数の意味を持つ可能性があります。意味は周囲の文脈によって決まります。

Transformerは、以下のコンポーネントを使用して、これらの3つの問題を解決します。

  • 離散性 → トークン化 + Embedding
  • 順序 → 位置エンコーディング
  • 文脈依存性 → アテンション(第6部)

このパートでは、まず最初の2つの問題について説明します。


トークン化:言語を離散的な単位に分割する

言語をニューラルネットワークに投入する前に、まず「単位」を定義する必要があります。これはトークン化と呼ばれます。

最も簡単な方法から始めましょう。

オプションA:単語ベース。 「The cat likes fish」を[The, cat, likes, fish]に分割します。問題点:言語の語彙は、数十万個にもなります。さらに、新しい単語(新語、専門用語、タイプミス)が絶えず出現します。トレーニング中に未知の単語が出現すると、処理できません。

オプションB:文字ベース。 [T, h, e, , c, a, t, , l, i, k, e, s, , f, i, s, h, ...]に分割します。語彙は小さくなります(数十万個、一般的な漢字を含む)。しかし、各文字はほとんど意味を持たないため、シーケンスが非常に長くなります。計算コストが爆発的に増加します。

オプションC:サブワードベース - 現代の標準。頻繁に出現するサブワードのパーツを1つのトークンとして扱い、珍しい単語はさらに分割します。もし「cat」が頻繁に出現する場合、それは1つのトークンであり、もし「metarepresentationism」が珍しい場合、それは[meta, representation, ism]に分割されます。

オプションCを自動的に学習するアルゴリズムは、Byte Pair Encoding(BPE)またはSentencePieceです。ほとんどのLLMは、実際にはこのファミリーを使用しています。語彙サイズは通常、30,000から150,000です。

生物学的アナロジー: ゲノムを分析する際にも、同様の問題があります。もし、単一のヌクレオチド(A、T、G、C)単位で扱うと、シーケンスが長くなりすぎ、もし遺伝子単位で扱うと、新しい遺伝子を処理できません。実際には、k-mer(例:6〜8ヌクレオチドのフラグメント)をサブシーケンス単位として使用します。これは、トークン化におけるオプションCと全く同じアイデアです。実際、最近のゲノム言語モデル(例:Nucleotide Transformer)は、k-merトークン化を正確に使用しています。

トークン化の結果は、整数のIDのシーケンスになります。

text
"The cat likes fish"
   ↓ トークン化
[The, cat, likes, fish]
   ↓ 語彙検索
[234, 1234, 5678, 9012]

次に、この整数のシーケンスを、ニューラルネットワークが処理できる実数値ベクトルのシーケンスに変換する必要があります。これがEmbeddingです。

埋め込み:細胞タイプ空間を構築しましょう

埋め込みとは、離散的なトークンを、高次元の実数値ベクトルにマッピングするプロセスです。各トークンには、学習されたベクトルが対応します。

数学的には、非常に単純です。語彙に V 個のトークンがあり、埋め込み次元が d (例:4096) の場合、サイズが V × d の埋め込み行列 E が存在します。トークンID i の埋め込みは、対応する行 E[i] です。

python
V = 100000 # 語彙サイズ
d = 4096 # 埋め込み次元
embedding = torch.nn.Embedding(V, d)
token_ids = torch.tensor([234, 1234, 5678, 9012])
vectors = embedding(token_ids) # shape: (4, 4096)

この埋め込み行列は、トレーニングの開始時にランダムに初期化され、バックプロパゲーションを通じてトレーニング中にニューラルネットワークとともに学習されます。トレーニング後、各トークンは、この4096次元空間内の特定の場所に存在します。

この空間の幾何学的な構造は驚くべきものです。十分に学習された埋め込み空間では、意味的に類似したトークンは互いに近い場所に配置されます。 そして、意味的な関係はベクトル演算によって再現されます。

生物学的アナロジー - scRNA-seqのUMAP空間。 シングルセルRNAシーケンシングを行った場合、各細胞について数万個の遺伝子の発現プロファイルが得られます。これを直接プロットすることは不可能ですが、UMAP、t-SNE、またはPCAを使用して2〜50次元の埋め込み空間にマッピングすることで、細胞は興味深い配置を形成します。

  • 同じタイプの細胞(例:CD8+ T細胞)は、互いに近い場所にクラスター化されます。
  • 発生経路上で近い細胞は、連続的な経路を形成します。
  • 細胞タイプ間の方向ベクトルは生物学的な意味を持ちます。たとえば、「ナイーブT細胞」から「エフェクターT細胞」への方向と、「ナイーブB細胞」から「形質細胞」への方向は類似しています。

LLMのトークン埋め込み空間は、まさに同じ構造です。細胞タイプの代わりに単語が配置され、遺伝子発現軸の代わりに、単語のセマンティック軸(具体性、性別、ポジティブ/ネガティブなど)が、埋め込み空間内の方向として現れます。

埋め込み空間における驚くべきベクトル演算の例(実際のword2vec/GloVe/LLM埋め込みで再現):

text
vec("queen") - vec("woman") + vec("man") ≈ vec("king")

「女王」から「女性」の成分を取り除き、「男性」の成分を加えることで、ほぼ「王」となるベクトルが得られます。これは、埋め込み空間が性別の軸を学習したためです。この学習されたベクトル演算は、プログラムされたものではないことが重要です。ニューラルネットワークは、トレーニングデータからこれらの関係を自律的に発見します。

生物学的アナロジー: scRNA-seq埋め込み空間でも、同様のベクトル演算が観察されます。

text
vec("helper T cell") - vec("CD4+") + vec("CD8+") ≈ vec("cytotoxic T cell")

T細胞埋め込み空間では、CD4/CD8マーカー発現が1つの軸を形成し、この軸に沿って移動することで、細胞タイプがヘルパーから細胞傷害性へと変化します。ニューラルネットワーク埋め込みと生物学的埋め込みが同じ概念的な構造を持つ理由は、どちらもトレーニングデータの統計的関係を低次元のユークリッド空間に圧縮するからです。

順序問題を解決する:位置エンコーディング

埋め込み処理の後、各単語はベクトルになります。しかし、残る大きな課題は、単語の順序です。

Transformer (後述のパート#6で詳細に説明します) は、入力シーケンスを順序を持たない集合として扱います。つまり、「犬が人を噛んだ」と「人が犬を噛んだ」が同じ結果になるリスクがあります。

これを防ぐために、埋め込みに位置情報を明示的に追加します。これは位置エンコーディングと呼ばれます。

最も単純な方法は、各位置に対して学習済みのベクトルを用意し、それを埋め込みに加えることです。

python
pos_embedding = torch.nn.Embedding(max_length, d)
positions = torch.arange(len(token_ids))
final = token_embed(token_ids) + pos_embedding(positions)

これは学習型位置エンコーディングと呼ばれます。この方法は、オリジナルのGPT-2で使用されました。

オリジナルのTransformer論文 (2017年) では、異なる方法が使用されています。それは正弦波位置エンコーディングです。各位置 p と各次元 i に対して、次のように計算します。

text
PE(p, 2i)   = sin(p / 10000^(2i/d))
PE(p, 2i+1) = cos(p / 10000^(2i/d))

これは、パラメータなしで決定論的に計算される波形です。位置 pp+k の関係は、三角関数の恒等式によって表現できるため、モデルが相対的な位置を学習しやすくなります。

生物学的なアナロジー - サーカディアンリズムの位相。 細胞生理学において、24時間周期で時刻を表す場合、sin(2πt/24)cos(2πt/24) の組み合わせを使用することがよくあります。これにより、正午と真夜中はベクトル空間上で反対方向に配置され、朝と午後は連続的に変化します。Transformerの正弦波PEは、まさにこの原理に基づいています。異なる周期(日、時間、分)を組み合わせることで、より正確な時間表現が可能になります。PEの異なる周期(10000^(2i/d) は各次元で異なります)は、このマルチ周期表現を自動的に実装します。

現代の標準 - RoPEとALiBi。 2020年以降に登場した新しい方法が、現在では標準となっています。

  • RoPE (Rotary Position Embedding) - 埋め込みベクトルを、位置に応じて特定の角度だけ回転させます。相対的な位置は、ベクトル角度の差として自然に表現されます。LLaMA、GPT-NeoX、Qwenなどの最新のLLMで採用されています。相対的な位置を区別できる点が優れています。
  • ALiBi (Attention with Linear Biases) - 注意スコアに、位置距離に比例したペナルティを適用します。学習中に見たコンテキストよりも長いコンテキストに対しても、ある程度汎化できるという利点があります。

どちらの方法も、学習中に見たコンテキストよりも長いコンテキストに拡張できるという利点があるため、正弦波PEよりも実用的に広く使用されています。GPT-3/4やLLaMAなどの大規模モデルのコンテキストウィンドウ(2K → 8K → 32K → 128K)の拡大は、この一連の位置エンコーディングによるものです。


Transformerブロックの骨格

埋め込みと位置エンコーディングの後、各単語は位置情報を含むベクトルになります。これらのベクトルは、Transformerブロックと呼ばれる階層構造を通過します。

Transformerブロックの骨格(Pre-LN構造、現代の標準):

text
Input x
   ↓
LayerNorm
   ↓
Multi-head Attention ←── (パート#6で詳細に説明)
   ↓
+ x                    ←── 残差結合
   ↓
LayerNorm
   ↓
FeedForward Network (FFN)
   ↓
+ (Previous result)          ←── 残差結合
   ↓
Output

このブロックは、GPT-2では12回、GPT-3では96回、最新の大規模モデルでは100回以上積み重ねられます。層が深ければ深いほど、より複雑なパターンを捉えることができますが、学習の安定性が難しくなります。残差結合レイヤー正規化が、この安定性を保証します。

残差結合 - 層を跨ぐショートカット

残差結合、またはスキップ結合とは、層の出力を層の入力に直接加える処理です。

text
output = F(input) + input

F は、層の実際の変換を表します(例:アテンション、FFN)。

なぜこれが重要なのでしょうか? これは、パート4で議論した勾配消失問題に対処します。

逆伝播中に、100層を通過する勾配は、各層での局所的な導関数で乗算されるため、指数関数的に減衰します。100回の乗算後、ほとんどの層の勾配は実質的にゼロになり、学習が妨げられます。

残差結合は、この問題をエレガントに解決します。

text
∂output/∂input = ∂F/∂input + 1  ←── "+ input" により、常に1が残る

この "+1" のおかげで、勾配は層を通過する際にも、少なくとも元の値を維持します。これにより、勾配は100層でも伝播できます。

オリジナルのTransformer論文、さらにその前のResNet (2015) の成功は、どちらもこのアイデアによるものです。これは、今日、100層以上のニューラルネットワークをトレーニングできる決定的な理由です。

生物学的なアナロジー - 細胞のホメオスタシス。 細胞は、外部の刺激にさらされた場合でも、すぐに完全に変化するわけではありません。細胞は、あるベースラインの状態を維持しながら徐々に調整するホメオスタシスシステムを備えています。この維持されるベースラインは、ニューラルネットワークの "+ input" と概念的に似ています。細胞が各刺激で完全に状態をリセットし、最初から再開すると、安定性を失ってしまいます。細胞シグナル伝達システムでは、強い信号もベースラインを維持しながら流れます。これは、Transformerにおける残差の流れの概念と一致します。

Transformerでは、各層がアテンションまたはFFNを通じて「変化」を生み出し、この変化が残差に加算されます。残差ストリームの視点から見ると、埋め込みは最初の層から最後の層まで単一のストリームを形成し、各層がこのストリームに情報を追加していると理解できます。この視点は、最近の解釈可能性研究における中核的なフレームワークです。

レイヤー正規化 – 活性化分布の安定化

レイヤー正規化 (LayerNorm) は、各ステップでレイヤーの活性化分布を正規化する操作です。

各ベクトルに対して:

text
normalized_vector = (vector - mean) / standard_deviation

次に、学習済みのスケール γ を乗算し、学習済みのバイアス β を加算します。

text
result = γ ⊙ normalized_vector + β

なぜこれが重要なのでしょうか。活性化が複数のレイヤーを通過するにつれて、その分布は予測不能にシフトし、拡大します。一部のレイヤーでは活性化が大きくなり、他のレイヤーでは小さくなります。この不安定性により、トレーニングが困難になります。

LayerNorm は、各レイヤーの活性化の平均を 0 に、分散を 1 に再調整することで、トレーニングを安定化させます。γβ は、必要に応じて再スケーリングとシフトを行うための柔軟性を提供します。

生物学的アナロジー – 細胞内 pH とイオンの恒常性。 細胞は、外部刺激にさらされても、細胞質 pH を約 7.2、ナトリウム濃度を 12mM、カリウム濃度を 140mM に維持します。この恒常性がなければ、各シグナル伝達経路は予期しない状態で機能し、細胞機能が阻害されます。ニューラルネットワークのレイヤーにおける LayerNorm の機能は、概念的にこれと一致します。これにより、各レイヤーが予想される活性化範囲内で機能し、一定の条件が提供されます。

Pre-LN 対 Post-LN。

  • Post-LN (元の論文): Output = LayerNorm(F(x) + x). 残差接続の後の正規化。
  • Pre-LN (最新の標準): Output = F(LayerNorm(x)) + x. レイヤーの前の正規化。

Pre-LN は、はるかに安定したトレーニングにつながることがわかっており、ほとんどの最新の LLM は Pre-LN を使用しています。これには、GPT-2、GPT-3、LLaMA、Qwen、Claude が含まれます。

RMSNorm。 LayerNorm のバリエーションです。平均の減算を省略し、RMS (二乗平均平方根) のみを使用して正規化します。計算速度がわずかに速く、パフォーマンスも同様であるため、LLaMA 以降の事実上の標準となっています。

text
RMSNorm(x) = γ ⊙ x / sqrt(mean(x^2) + ε)

全体像 – Transformer アーキテクチャ

これまでに説明したコンポーネントを組み合わせることで、Transformer の全体像が得られます。

text
トークン ID のシーケンス [8422, 15903, 421, 892]
   ↓
トークン埋め込み (V × d 行列でのルックアップ)
   ↓
+ 位置エンコーディング (または RoPE 回転)
   ↓
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Transformer ブロック 1
  LayerNorm → マルチヘッドアテンション → + 残差
  LayerNorm → FFN → + 残差
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Transformer ブロック 2
  ... (同じ構造)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Transformer ブロック 96 (GPT-3)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   ↓
最終 LayerNorm
   ↓
言語モデリングヘッド (d × V 行列)
   ↓
語彙サイズ V 上の確率分布 (次のトークンを予測)

各 Transformer ブロックは、このセクションで説明したコンポーネント (正規化、アテンション、FFN、残差接続) の組み合わせです。アテンションの本質は、パート 6 のトピックになります。 現在は、それを「各トークンが、コンテキストを意識した方法で他のトークンから情報を吸収できるようにするコンポーネント」として理解しておきましょう。

スケール。 最新の LLM では、各ブロックのパラメータの大部分は実際には FFN にあります。アテンションパラメータは比較的少なくなっています。たとえば、GPT-3 の各ブロックでは、アテンションパラメータは約 50M、FFN パラメータは約 200M です。言い換えれば、アテンションは 情報伝達 のためのコンポーネントであり、FFN は 情報の保存と処理 のためのコンポーネントです。最近の研究では、LLM の「知識」のかなりの部分が FFN パラメータに保存されていることが示唆されています。


生物学的応用シナリオ

シナリオ 1 – ESM プロテイン言語モデル

パート 4 で言及された ESM (Evolutionary Scale Modeling) は、まさにこのセクションで説明した Transformer アーキテクチャです。違いは次のとおりです。

  • トークン: 単語の代わりに、20 のアミノ酸を使用します。
  • 埋め込み: 各アミノ酸には、学習されたベクトルがあります。トレーニングが成功すると、このベクトルはアミノ酸の物理化学的特性 (疎水性、電荷、サイズ) を再現します。
  • 位置エンコーディング: シーケンス内の位置を表します。二次構造と三次構造の予測に不可欠です。
  • アテンション: シーケンス内で離れたアミノ酸間の相互作用を学習します (例: ジスルフィド結合、疎水性コア、活性部位)。

トレーニングされた ESM 埋め込み空間では、同様の機能を持つタンパク質がクラスター化され、シーケンス内で接触しているアミノ酸ペアは、アテンションで自然に強調されます。このアテンションマップは、AlphaFold のトレーニングで使用されます。

シナリオ 2 – Enformer ゲノムシーケンスモデル

DeepMind の Enformer は、ゲノムシーケンス (A/T/G/C) を入力として受け取り、細胞タイプ固有の遺伝子発現を予測する Transformer です。

  • トークン: DNA 塩基 (または k-mer)。
  • 位置エンコーディング: ゲノム内の位置を表します。プロモーター、エンハンサー、CTCF 結合部位などのローカル機能を学習するために必要です。
  • 長いコンテキスト: エンハンサーは、遺伝子から数百 kb 離れている場合があります。Enformer のコンテキストウィンドウは 100kb+ です。
  • 残差フロー: 非常に深いネットワーク (数十のブロック) で、勾配の流れを維持するために不可欠です。

シナリオ 3 – ChemBERTa 化学構造モデル

分子構造を SMILES 文字列として表現し、Transformer に入力するモデルです。トレーニング後、同様の化学的特性を持つ分子は、埋め込み空間でクラスター化されます。医薬品探索において、候補分子の検索や類似分子の生成に使用されます。

主要なポイント

  • 言語における3つの課題(離散性、順序、文脈)は、それぞれトークン化+埋め込み、位置エンコーディング、アテンションによって解決されます。
  • 埋め込みは、離散的なトークンを高次元の連続値空間にマッピングします。訓練が成功すれば、類似したトークンは互いに近くに配置され、意味的な関係はベクトル演算によって表現されます。これは、scRNA-seqデータのUMAP空間と似ています。
  • 位置エンコーディングは、ニューラルネットワークに単語の順序を伝えます。例としては、正弦波、学習型、RoPE、ALiBiなどがあります。RoPEが現在の標準です。
  • Transformerブロックは、アテンション、FFN、残差接続、LayerNormの組み合わせです。
  • 残差接続は、勾配消失問題を解決し、100層以上のネットワークの訓練を可能にします。これは概念的に細胞のホメオスタシスと似ています。
  • レイヤー正規化は、活性化分布を安定化させ、訓練の収束を助けます。Pre-LNとRMSNormが現在の標準です。
  • 大規模なLLMのほとんどのパラメータはFFNに存在し、そのパラメータに重要な知識が保存されているという証拠があります。

📐 付録 — 専門家向け数学的公式

難易度: 非常に難しい 対象読者: 線形代数、確率論、最適化理論に関する大学レベルの知識を持つ読者。

A.1 埋め込み層の数学

語彙サイズ V、埋め込み次元 d

埋め込み行列: E ∈ ℝ^{V × d}

トークン ID i → 埋め込みベクトル: e_i = E[i, :] (i 行目)

学習: E が学習可能なパラメータです。各行は、逆伝播を通じて個別に更新されます。

共有埋め込み (重み共有): 言語モデリングヘッド (最後の層 d → V) では、重みがしばしば E^T と共有されます。これにより、パラメータ数を削減し、学習の安定性を向上させます。

A.2 正弦波位置エンコーディング

オリジナルの Transformer 論文 (Vaswani et al., 2017):

text
PE(p, 2i)   = sin(p / 10000^(2i/d))
PE(p, 2i+1) = cos(p / 10000^(2i/d))

重要な性質: 位置 p+k における PE は、位置 p における PE の線形関数として表現できます。

text
PE(p+k) = M_k · PE(p)

M_k は、k にのみ依存する回転行列です。この性質により、モデルは相対的な位置を学習しやすくなります。

周波数スペクトル: 次元 i が増加すると、波形の周期が増加します (10000^(2i/d))。より低い次元は短い距離を、より高い次元は長い距離を表します。

A.3 RoPE (回転位置埋め込み)

各位置 p で、埋め込みベクトルは 2 次元ベクトルのペアに分割され、特定の角度で回転されます。

埋め込みベクトル x ∈ ℝ^d は、d/2 個の 2 次元ベクトルのペア (x_{2i}, x_{2i+1}) に分割されます。

各ペアは、位置に依存する角度 θ_{p,i} = p · 10000^{-2i/d} で回転されます。

text
[x'_{2i}  ]   [cos(θ_{p,i})  -sin(θ_{p,i})]   [x_{2i}  ]
[x'_{2i+1}] = [sin(θ_{p,i})   cos(θ_{p,i})] · [x_{2i+1}]

重要な性質: 2 つのベクトルの内積は、位置の差 p - q にのみ依存します。

text
⟨RoPE(x, p), RoPE(y, q)⟩ = f(x, y, p-q)

この性質により、注意スコアに相対的な位置情報を自然に表現できます。Attention #6 から続きます。

A.4 ALiBi (線形バイアスによる注意)

埋め込みに位置エンコーディングを追加する代わりに、注意スコアに位置距離のペナルティが追加されます。

Q, K 注意スコアを計算した後:

text
score(i, j) = ⟨q_i, k_j⟩ / sqrt(d) - m · |i - j|

m は、各注意ヘッドで異なる傾きです (例: 2^{-8/h}, h = ヘッド数)。

利点: 学習中に、元のコンテキストよりも長いコンテキストに一般化できます。計算コストは発生しません。

A.5 LayerNorm の公式

ベクトル x ∈ ℝ^d の場合:

text
μ = (1/d) Σ_i x_i                    (平均)
σ^2 = (1/d) Σ_i (x_i - μ)^2          (分散)
x̂_i = (x_i - μ) / sqrt(σ^2 + ε)      (正規化)
y_i = γ_i · x̂_i + β_i                 (スケーリングとシフト)

γ, β ∈ ℝ^d は学習可能なパラメータです。ε ≈ 1e-5 は、数値的安定性のために使用されます。

重要: 正規化は各ベクトルごとに行われ、バッチごとには行われません。これが BatchNorm との違いです。BatchNorm はバッチサイズに依存するため、シーケンスモデルには適していません。

A.6 RMSNorm の公式

平均の減算部分を省略した LayerNorm:

text
y_i = γ_i · x_i / sqrt((1/d) Σ_j x_j^2 + ε)

パラメータ数が半分になり (β はありません)、計算速度もわずかに向上します。LLaMA、Mistral、Qwen で採用されています。

A.7 残差接続の偏微分

ブロック y = F(x) + x

text
∂y/∂x = ∂F/∂x + I

I は単位行列です。常に 1 が残るという事実は、勾配消失問題を解決するための鍵となります。

複数のブロックを通過する場合:

text
y = F_L(F_{L-1}(...F_1(x)...)) + スキップパス

逆伝播中に、スキップパスは加算されるだけであり、乗算されないため、勾配が指数関数的に減衰することはありません。

A.8 Pre-LN 対 Post-LN

Post-LN (オリジナルの論文):

text
y = LayerNorm(F(x) + x)

Pre-LN (現代の標準):

text
y = F(LayerNorm(x)) + x

Pre-LN の利点:

  • 残差の流れは正規化を通らないため、常に元のスケールを維持します。
  • ウォームアップなしで、トレーニングが安定します。
  • 非常に深いネットワーク (100 層以上) のトレーニングが可能です。

Pre-LN の欠点:

  • パフォーマンスがわずかに低下する可能性があるという報告があります。最近では、DeepNet などのハイブリッドアプローチも登場しています。

A.9 FFN (フィードフォワードネットワーク) の公式

Transformer ブロック内の FFN。通常は 2 層の MLP です。

text
FFN(x) = W_2 · σ(W_1 · x + b_1) + b_2

W_1 ∈ ℝ^{4d × d}, W_2 ∈ ℝ^{d × 4d} (中間次元は 4 倍大きく)。GPT ファミリーの慣習です。

σ は活性化関数です。GPT-2 までは GELU が使用され、最近の大型モデルでは SwiGLU が使用されています。

text
SwiGLU(x) = (W_2 · x) ⊙ Sigmoid(W_1 · x) · V · x

2 つのゲートが乗算される構造です。LLaMA、PaLM、Qwen で採用されています。

A.10 パラメータ数の近似計算

埋め込み次元 d、層数 L、語彙サイズ V:

  • 埋め込み: V · d (重み共有を使用する場合は共有)
  • 各ブロックの注意: 4 · d^2 (Q, K, V, Out のそれぞれが d × d)
  • 各ブロックの FFN: 8 · d^2 (d → 4d → d)
  • 各ブロックの LayerNorm: 4d (ほとんど無視できる)

1 ブロックあたりの合計: ~12 · d^2

埋め込みを除く合計パラメータ: ~12 · L · d^2

GPT-3 175B: L = 96, d = 12288. 12 · 96 · 12288^2 ≈ 174B. その名の通りです。

トレーニングでは、オプティマイザの状態 (Adam はパラメータごとに 2 倍のメモリを必要とします) と活性値の保存を考慮する必要があり、実際の GPU メモリは約 8 ~ 16 倍のパラメータ数になります。

参考文献

このセクションで紹介したすべての内容、シナリオ、たとえ、図は、BioPlaygroundによって社内で作成されたものであり、以下の外部リソースは、これらの概念を学習するのに役立ちます。

  • オリジナルのTransformer論文: Vaswani et al., "Attention Is All You Need" (NeurIPS 2017)
  • RoPEオリジナルの論文: Su et al., "RoFormer: Enhanced Transformer with Rotary Position Embedding" (2021)
  • ALiBiオリジナルの論文: Press et al., "Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation" (ICLR 2022)
  • Pre-LN分析: Xiong et al., "On Layer Normalization in the Transformer Architecture" (ICML 2020)
  • RMSNormオリジナルの論文: Zhang & Sennrich, "Root Mean Square Layer Normalization" (NeurIPS 2019)
  • 残差結合オリジナルの論文: He et al., "Deep Residual Learning for Image Recognition" (CVPR 2016)
  • Word embeddingオリジナル: Mikolov et al., "Efficient Estimation of Word Representations in Vector Space" (word2vec, 2013)
  • 残差フローの解釈: Elhage et al., "A Mathematical Framework for Transformer Circuits" (Anthropic 2021)
  • 深層学習の可視化による教育: 3Blue1Brown "Deep Learning" 第5章・第6章 (YouTube) — 学習資料として
  • BPEオリジナルの論文: Sennrich et al., "Neural Machine Translation of Rare Words with Subword Units" (ACL 2016)
  • Enformer論文: Avsec et al., "Effective gene expression prediction from sequence by integrating long-range interactions" (Nature Methods 2021)

このセクションでは、Transformerの基本的な構造をまとめました。第6部では、その中核であるアテンションの仕組みについて詳しく説明します。

次の概念

  • 編 #6 attention-mechanism — Transformer の中核。単語が互いに情報を交換する仕組み。
  • 編 #7 prompt-engineering — 学習済みの Transformer を効果的に活用する方法。
  • 編 #12 pytorch-basics — このエピソードのコンポーネントをコードで実装します。

💬 質問・コメント

0件のコメント

ログインせずに投稿できます。ゲスト投稿は投稿者自身で編集・削除できません。

0/2000

読み込み中...