大規模言語モデル入門【Transformer:基礎理論A-4】

基礎理論

FFNと活性化関数:Transformerの知識を蓄える場所

前回は、Multi-Head Attentionの詳細なメカニズムを学びました。今回は、Transformerのもう1つの重要な部品であるFeed Forward Network (FFN) と活性化関数を解説します。

Feed Forward Network の役割:「知識の蓄積」

Multi-Head Attention で「トークン間の関係性」を把握した後、その情報をさらに洗練・変換するのが、Feed Forward Network (FFN) です。

Multi-Head AttentionとFFNの役割の違い

Transformerの全パラメータの約3分の2(66%)がFFNに集中しておりモデルが事前学習で獲得した「知識を蓄える主要な場所(知識メモリ)」として機能しています。

コンポーネント主な役割特徴
Multi-Head Attention関係性の把握トークン同士のつながり(文脈)を捉える。
FFN知識の蓄積・変換モデル全体の「ニューラルメモリ」として知識を格納する。

FFNの構造:シンプルな2層MLP

入力ベクトル x (次元 = d_model)
    ↓
[ 線形層 W_1: d_model → 4×d_model ]
    ↓
[ 活性化関数(ReLU, GELU等)]
    ↓
[ 線形層 W_2: 4×d_model → d_model ]
    ↓
出力ベクトル y

例えば、$d_{model} = 768$ の場合:

ステップ次元処理内容
入力768次元
拡張3072次元4倍に拡張
活性化3072次元非線形変換
圧縮768次元元に戻す

FFNが占めるパラメータ数の圧倒的な割合

GPT-3(総パラメータ数 175B)の場合:

コンポーネントパラメータ数割合
FFN約 115B66%
Multi-Head Attention約 60B34%

つまり、Transformerの 2/3以上のパラメータがFFN に集中 しています。これは、FFNが単なる補足的な部品ではなく、モデルの知識を蓄える主要な場所 であることを示唆しています。

FFN を知識メモリと解釈する

近年の研究(Geva et al. 2021)では、FFN が 「Key-Valueメモリのように機能している」 という解釈が有力です。

FFNが実現する知識の蓄積

学習と推論におけるFFNの挙動

訓練中(事前学習時):

「猫は動物である」という文を見た時、
FFN 内の重み W_1, W_2 が、
「『猫』というパターンが入力されたら、
  『動物という特性を持つ』という出力を返す」
という知識を学習・蓄積します。

推論中(テキスト生成時):

「猫は」という入力が来た時、
FFN が事前学習で蓄積した知識から
「次は『動物的な特性に関連した単語』が来そうだ」
という情報を出力します。

💡 ポイント
FFN は「モデル全体のニューラルメモリ」「事前学習で獲得した知識の格納庫」として機能しています。

活性化関数:非線形変換による表現力の増加

【活性化関数とは?】

【第7回】教師あり学習の基礎と代表的なアルゴリズム(後編)
第7回の目標第7回後編のブログでは、サポートベクターマシン(SVM)と多層パーセプトロン(MLP)に焦点を当て、これらのアルゴリズムの理論的背景と実装方法を詳しく解説します。SVMでは、ハードマージンとソフトマージンの概念、カーネル関数の役...

FFNの中間層に活性化関数を挟むことで、何が変わるのか?

活性化関数がない場合

出力 = W_2 × [ReLU(W_1 × 入力)]
      ↓ ReLUを削除すると
      = W_2 × (W_1 × 入力)
      = (W_2 × W_1) × 入力
      = 単なる行列乗算(線形変換)

線形変換だけでは、複雑な関係を表現できません。

ReLU 活性化関数

$$\text{ReLU}(x) = \max(0, x)$$

入力:[-2, -1, 0, 1, 2]
   ↓ ReLU
出力:[0, 0, 0, 1, 2]

負の値を0に、正の値はそのまま(非線形!)

GELU 活性化関数(より高度)

$$\text{GELU}(x) = x \cdot \Phi(x)$$

ここで $\Phi(x)$ は標準正規分布の累積分布関数です。

特徴ReLUGELUSwiGLU
滑らかさ折れ曲がる滑らか滑らか
確率的解釈なしあり(正規分布の累積分布関数に基づく)なし(ゲート機構による制御)
計算の複雑さ単純複雑(正規分布に基づく)非常に複雑(3つの行列計算と要素積を使用)
現在の主流古いモデル(画像処理等:CNN)GPT系列(最新の言語モデル)
最新のLLM(Llama 3, Mistral, Gemini等)

これらの非線形活性化関数により、FFN は複雑な入力-出力関係を学習でき、モデル全体の表現力が飛躍的に向上します。

モデルの深層化に伴い、情報消失を防ぎ、より繊細な表現を獲得するためにLLMモデルを扱う際は、GELUが標準となりましたが、現在のLLMモデル(2026年1月)ではSwiGLUが主流として用いられています。

まとめ

この記事では、FFNと活性化関数の役割を解説しました。FFNはTransformerにおける知識の蓄積場所であると言えるでしょう。

項目内容
FFNの構造2層MLP(拡張→活性化→圧縮)
パラメータ割合Transformer全体の約66%
役割知識の蓄積・記憶(Key-Valueメモリ)
活性化関数非線形変換で表現力を向上

次回は、因果的Attention Maskと自己回帰型生成について解説します。

📖 参考文献

主要論文

  1. Geva, M., Schvartz, R., Shalev-Shwartz, S., & Schwartz, R. (2021): “Transformer Feed-Forward Layers Are Key-Value Memories”, EMNLP 2021
  2. Hendrycks, D., & Gimpel, K. (2016): “Gaussian Error Linear Units (GELUs)”, arXiv
  3. Ramachandran, P., Zoph, B., & Le, Q. V. (2017): “Swish: a Self-Gated Activation Function”, arXiv
  4. GLU Variants Improve Transformer, Noam Shazeer(2020): “GLU Variants Improve Transformer”, arXiv

📚 シリーズ案内

この記事は「LLM事前学習シリーズ」の一部です。

コメント

タイトルとURLをコピーしました