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 | 約 115B | 66% |
| Multi-Head Attention | 約 60B | 34% |
つまり、Transformerの 2/3以上のパラメータがFFN に集中 しています。これは、FFNが単なる補足的な部品ではなく、モデルの知識を蓄える主要な場所 であることを示唆しています。
FFN を知識メモリと解釈する
近年の研究(Geva et al. 2021)では、FFN が 「Key-Valueメモリのように機能している」 という解釈が有力です。
FFNが実現する知識の蓄積
学習と推論におけるFFNの挙動

訓練中(事前学習時):
「猫は動物である」という文を見た時、
FFN 内の重み W_1, W_2 が、
「『猫』というパターンが入力されたら、
『動物という特性を持つ』という出力を返す」
という知識を学習・蓄積します。
推論中(テキスト生成時):
「猫は」という入力が来た時、
FFN が事前学習で蓄積した知識から
「次は『動物的な特性に関連した単語』が来そうだ」
という情報を出力します。
💡 ポイント
FFN は「モデル全体のニューラルメモリ」「事前学習で獲得した知識の格納庫」として機能しています。
活性化関数:非線形変換による表現力の増加
【活性化関数とは?】

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)$ は標準正規分布の累積分布関数です。
| 特徴 | ReLU | GELU | SwiGLU |
|---|---|---|---|
| 滑らかさ | 折れ曲がる | 滑らか | 滑らか |
| 確率的解釈 | なし | あり(正規分布の累積分布関数に基づく) | なし(ゲート機構による制御) |
| 計算の複雑さ | 単純 | 複雑(正規分布に基づく) | 非常に複雑(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と自己回帰型生成について解説します。
📖 参考文献
主要論文
- Geva, M., Schvartz, R., Shalev-Shwartz, S., & Schwartz, R. (2021): “Transformer Feed-Forward Layers Are Key-Value Memories”, EMNLP 2021
- Hendrycks, D., & Gimpel, K. (2016): “Gaussian Error Linear Units (GELUs)”, arXiv
- Ramachandran, P., Zoph, B., & Le, Q. V. (2017): “Swish: a Self-Gated Activation Function”, arXiv
- GLU Variants Improve Transformer, Noam Shazeer(2020): “GLU Variants Improve Transformer”, arXiv
- https://arxiv.org/abs/2002.05202
- SwiGLUを提案した、最も重要で直接的な論文
📚 シリーズ案内
この記事は「LLM事前学習シリーズ」の一部です。

コメント