(妻からLINE: 「新人さんに 施術バインダー(120パターン) 渡したよ。最初は患者さんの症状ヒアリングだけ私が入って、バインダーの該当ページ開いて指示するから、新人はその通り体動かせばいい。3週間で60%は再現できる予定」)
(…これ完全に Transformer の MLP/フィードフォワード層 だ。妻のヒアリング = アテンション(文脈収集)、バインダーの該当ページ参照 = MLP(知識引き出し)、新人の施術 = 出力。120パターン という 「蓄積された知識」 を、症状に応じて引っ張ってくる装置。LLM の MLP がやっているのも、本質的にこれと同じ。)
(返信: 「すごい。それ Transformer と同じ仕組みだよ」 → 妻: 「は?」 …まあ、いいや。明日 川口に話そう。今夜は このバインダー、何ページくらいあるか聞いておく。)

- MLP / フィードフォワード層 = アテンション (#036) が集めてきた文脈に 「知識」 を当てて加工する層。ひとことで言えば、覚えた事実を引き出す担当。
- 役割分担がキモ: アテンションが「どこを見るか」を集め、MLP が「それに何を返すか」を考える。LLM のパラメータの大半はこの層に集中していて、「東京は日本の首都」のような世界の事実知識はここに溜め込まれていると分かってきた。
- イメージは会議でメモを集める係(アテンション)と、そのメモに自分の知識で答えを書き込む係(MLP)。この2人がペアで何十回も交代しながら答えを練り上げる(内部構造は本文で)。
マルチヘッドアテンション (#036) で、各単語が「他のどの単語に注目するか」を h 個並列で計算する仕組みを見た。これは 「文脈を集める」 装置。
でも、文脈を集めただけでは答えは出ない。集めた情報に 「知識」 を当てて加工する 装置が必要。それが MLP / フィードフォワード層。Transformer ブロックでは アテンションと MLP がペア になっていて、この2つが交互に何十回も繰り返される。
MLP は 「2層の浅い NN」 — Transformer の中の中身
MLP は名前こそ仰々しいが、構造は 2層のニューラルネットワーク (#008) そのもの。Transformer の中で 各トークン位置に独立に 適用される(=他のトークンとは干渉せず、同じ MLP が並列で全トークンに走る)。
動作の特徴:
- 入力: アテンション層から出てきた1つのベクトル(次元 d_model = 例 512 or 4096)
- 処理: 拡大 → 非線形 → 縮小 の3段階
- 出力: 入力と同じ次元の1ベクトル(更新された 「そのトークンの意味」)
- 各トークン位置で独立: 同じ重みの MLP が全トークンに並列適用される
3ステップ — 拡大 → 非線形 → 縮小
MLP の中身は、3段階のシンプルな計算:
ステップ① 拡大(d_model → 4 × d_model)
入力ベクトルを 4倍の次元 に膨らませる。重み行列 W_1(形状 d_model × 4d_model)を掛けることで、512次元なら2048次元、4096次元なら16,384次元へ拡大。
これは 「高次元の質問空間」 に展開する 操作。3B1B 動画の表現で言えば「いくつもの質問をする」段階。各次元が「このトークンは ○○ という性質を持っているか?」という質問に対応する(と解釈する研究がある)。
ステップ② 非線形(ReLU / GELU)
拡大した4倍次元の各要素に 活性化関数 (#012)(ReLU / GELU / SwiGLU など)を適用。負の値はカット、正の値は強調。これで 「質問への答え」 が選別される(該当する次元だけが残る)。
ステップ③ 縮小(4 × d_model → d_model)
もう1つの重み行列 W_2(形状 4d_model × d_model)を掛けて、元の次元 d_model に戻す。これで 「答えに基づいて更新された意味ベクトル」 が完成。
設計の論理 — なぜこの構造になったのか
「MLP = 知識層」というのは、実は 設計者が 「知識を入れる場所」 として置いた わけではない。順序を整理する。
論理① アテンションは 「線形混合」 しかできない
アテンションの数式 softmax(QK^T) V は、突き詰めると V たちの重み付き平均。これは 線形演算(入力の足し算と掛け算)で完結する。
線形演算だけでは、複雑な関数は表現できない。これは活性化関数 (#012) の記事と同じ問題 — 「ReLU が無いと、何層積んでもただの線形」。アテンションも単体だと 「全層線形」 の世界に閉じ込められる。
論理② だから 「非線形加工器」 を後段に置く必要がある
アテンションが集めた情報を、各トークン位置で独立に非線形変換する装置 をブロックの後段に置く、というのが設計動機。これがあって初めて、Transformer は複雑な文脈処理を学習できる。
論理③ 非線形加工器のデフォルト選択 = MLP(万能近似定理)
1980s〜のニューラルネット基礎部品 = MLP。なぜこれが 「デフォルト」 かというと、万能近似定理(Cybenko 1989) で「1 隠れ層の MLP で、任意の連続関数を任意の精度で近似できる」と数学的に保証されているから。
つまり「どんな関数を学習させたいか分からないが、とにかく学習可能な汎用加工器がほしい」というときの 無難で強力な選択肢、それが MLP。Vaswani 2017 が新発明したわけではなく、NN 界の枯れた基礎部品を持ってきただけ。
論理④ 4倍拡大は経験則(Vaswani 2017 の選択)
では、なぜ 中間層を 4×d_model に拡大 するのか? これは 理論的に厳密な根拠はない。Vaswani 2017 「Attention Is All You Need」 が 性能とコストのバランス から経験的に選んだ値で、以後の Transformer がほぼ踏襲している。
万能近似定理は「隠れ層が十分大きければ任意関数を学習できる」と言うが、「十分大きい」 がどれくらいか は明示しない。実験的に 4倍くらいが良いバランスだった、というだけ。Llama や Mistral では SwiGLU 採用 + d_ff = 2.67×d_model など、現代では微調整されている。
論理⑤ 「知識保管庫」は事後解釈(Geva+ 2021)
ここが重要。「MLP = 知識を格納する場所」というのは、設計者の意図ではない。汎用加工器のつもりで置かれた MLP が、訓練の結果として 「知識テンプレ集積場」 になっていた、という 事後発見。
Geva+ 2021 「Transformer Feed-Forward Layers Are Key-Value Memories」 論文で、訓練済み Transformer の MLP を解析した結果、こう機能していることが分かった:
- W_1 の各行 = 「このトークンは ○○ パターンか?」という パターン検出器(Key)
- 非線形ステップ = 検出したパターンだけを活性化、他は0に
- W_2 の各列 = 「○○ パターンが検出されたなら、こういう情報を返す」という 応答テンプレ(Value)
つまり MLP 全体が 「Key-Value 連想記憶」 として動作している。事実知識(「東京は日本の首都」)も、このパターン検出+応答の枠組みに当てはまる。
順序を整理: 加工器が必要 → 万能近似定理の MLP を採用 → 4倍拡大は経験則 → 訓練したら 「結果として」 知識保管庫になっていた。最後のステップは 設計時に意図されていなかった創発 であって、これが MLP 解釈の本質。
パラメータの 2/3 はここに集中する
意外と知られていないが、Transformer の重みの大部分は MLP に集中している。アテンションのパラメータ数と比較すると:
- 1ブロックあたりのアテンション: W_Q, W_K, W_V, W_O の4行列 = 約 4 × d_model² パラメータ
- 1ブロックあたりの MLP: W_1(d_model × 4d_model) + W_2(4d_model × d_model) = 約 8 × d_model² パラメータ
- つまり MLP がアテンションの約2倍、ブロック内パラメータの 約 2/3 を占める
裏返すと、LLM が「東京は日本の首都」「光速は秒速30万キロ」のような 世界の事実知識 を答えられるのは、MLP の中に格納された 「テンプレ」 から引き出しているから、ということになる(完全証明されたわけではないが、有力解釈)。
コンサル感覚 — 「察し」 の後ろにある 「知識」
本記事の核心メッセージは 「アテンション = 文脈収集」「MLP = 知識引き出し」のペア構造。両方が揃って初めて、AI が 「意味のある応答」 を返せる。
大蔵の銀座カフェ接客に当てはめると:
- アテンション = お客様の表情・服装・季節・前回注文 を 同時に観察(察し) する装置
- MLP = 観察結果に対して、頭の中の「接客マニュアル20年分」 から該当パターンを引っ張り出す装置
- 新人スタッフは アテンション(観察)はできるが MLP(マニュアル蓄積)が薄い ため、適切な対応が出ない
コンサル提案レビュー: クライアントの 「AI 知識量」 要件を評価する際、「知識テンプレ数 = MLP の次元 × 層数」 という枠組みで考えると、ベンダー選定の議論が一段クリアになる。RAG(検索拡張)と LLM 本体の MLP 知識、どちらを厚くすべきか? も同じ軸で整理できる。
川口、昨夜気づいたんだけど、うちの妻の整体院の 「施術バインダー120パターン」、これが MLP そのものだった。新人がヒアリング聞いて、バインダーの該当ページを開く動作 = アテンション + MLP のペア。…で、当社の 顧客サポートAI案件、これって 「知識テンプレ何パターン用意するか」 の議論になるよね。
(先輩、その奥様のたとえ、めちゃくちゃ正確です。Geva+ 2021 の 「Feed-Forward Layers Are Key-Value Memories」 論文がまさにそれを示しています。引用数1,847 の有名研究です。…で、いま当社のサポートAI案件のベンダー選定、MLP の隠れ層次元 で比較表作りますか? 候補3社それぞれ FFN intermediate size が違うので、知識容量の差が出るはず。)
あら、凡田さん、奥様の整体院のバインダー、120パターンでいらっしゃるの? 私の銀座カフェの接客は 客層 × 季節 × 同伴者 × 注文履歴 で 2,800 パターン ありますわ。23倍の MLP 容量。AI に追いつかれるには、まだ時間がかかりそう。
フッ、フィードフォワード層か。これは カント『純粋理性批判』のカテゴリー論 と同型だ。経験(アテンションが集めた感性的多様)を、悟性のカテゴリー(MLP の知識テンプレ)に当てはめて初めて 「認識」 が成立する、と。AI も同じ構造で動いている、ということだな。
(御託さん、今日は哲学引用 1発で済んだ…珍しい。)

MLP の 「深さ」 — ブロックごとに 1つ、何層も重なる
1つの Transformer ブロックには マルチヘッドアテンション + MLP のペアが1組 入っている。そして Transformer は このブロックを何十回も縦に積む (#032)。
つまり、LLM 全体では:
- GPT-2 small: 12層 × 1 MLP = 12 個 の MLP が直列に積まれる
- GPT-3 175B: 96層 × 1 MLP = 96 個 の MLP
- Llama-3 70B: 80層 × 1 MLP = 80 個 の MLP
下層の MLP は 表層的なテンプレ(語彙的な変換、簡単な意味マッピング)を、上層の MLP は 抽象的なテンプレ(複合的な概念、事実知識)を担当する傾向が観測されている — が、これも 傾向 であって厳密な法則ではない。