Dance with Agents

LLMの「層」とは何か——器は設計者が決め、中身は誰も決めていない

ミディアム専門用語を名前のまま使います。初出で解説を添えるので、順に読めば追えます深掘り

『盤面を教えていないのに、盤面を持っていた』を読んだ方から、こういう問いをもらいました。「層」というものは、データの構造として別に用意されているのか。それとも、次の語の予測をひたすら積み上げた結果として、層と呼べるようなものが自然に現れてきたのか。

良い問いです。答えは、2つに分けて考える必要があります。「層」という入れ物の形と数は、設計者が、学習を始める前に決めています。 ここでいう学習とは、大量の文章を読ませて、モデルの中の数値を少しずつ決めていく作業のことです。ですが、その入れ物の中に何が置かれ、それぞれの層が何を専門に処理するようになるかは、設計者にも決められません。学習の過程で決まっていきます。

専門用語がいくつか登場しますが、登場するたびに、身近なものに置き換えて説明します。 分からなくなったら、用語の右肩の番号にカーソルを合わせる(スマホなら軽くタップする)と、その場で説明が表示されます。


層の中には、2人1組のチームがいる

Transformer(トランスフォーマー)は、いまのLLMのほぼ全部が採用している組み立て方です。製品名でもソフトの名前でもなく、中身をどう組むかの設計を指します。2017年の論文Attention Is All You Needで提案されました。

大きな形は、たった2つです。語を数値の並びに変換することと、同じ構造の層を何十も積み重ねて、その中を順に通していくこと。この記事で扱うのは、2つ目の「層」のほうです。

まず、その「1層」の中に何が置かれているかから見ていきます。仕組みをもう一段詳しく知りたい場合は『AttentionとTransformer』へどうぞ。

1層の中身は、役割の違う2人組だと思ってください。

  • 1人目(Attentionサブ層1):みんなに聞いて回る係です。「あなたの持っている情報のうち、今の私に関係ありそうなところだけ教えて」と、文中の他の語すべてに聞いて回り、もらった答えを混ぜ合わせます。これが『AttentionとTransformer』で見たAttentionの仕事です
  • 2人目(フィードフォワードサブ層2、別名MLP層3):1人で黙々と作業する係です。1人目が混ぜ合わせた情報を受け取り、他の語には一切聞かず、自分だけの手元で加工します

「みんなで相談してから、1人で仕上げる」——これが1層の中で毎回起きていることです。2017年の論文Attention Is All You Needは、これを次のように書いています。

“The encoder is composed of a stack of N=6 identical layers.”

(エンコーダは、同一の層6つを積み重ねて構成される)

エンコーダは、この論文が扱っていた翻訳の仕組みで、入力された文を読み取る側を指します。書き出す側はデコーダと呼ばれ、2つで1組でした。いまのLLMの多くは書き出す側だけを使っていますが、層を積み重ねるという形はそのまま受け継いでいます。

「同一の層」というのがポイントです。この「みんなに聞いて回る→1人で仕上げる」という同じ2人組の作業を、そっくりそのまま6回——今のモデルではもっと多く——繰り返しているだけです。1回目のチームと2回目のチームは、役割は同じでも、実際に何を担当することになるかは別です。この点は、後ろの「では、何が『誰も設計していない』側なのか」で、もう一度詳しく扱います。

「1人で仕上げる係」は、具体的に何をしているのか

「自分だけの手元で加工する」だけでは、具体的に何をしているのか分からないと思うので、もう少しかみ砕きます。同じ論文の3.3節に、フィードフォワードの中身がそのまま数式で書かれています。

“This consists of two linear transformations with a ReLU activation in between” … “The dimensionality of input and output is d_model=512, and the inner-layer has dimensionality d_ff=2048.”

(これは、間にReLU4という処理を挟んだ、2回の変換でできている……入力と出力の次元数はd_model=512、中間層の次元数はd_ff=2048)

手順に直すと、こうなります。ここでは分かりやすさのため「検査官」にたとえています。

  1. 512個の数字を、2048人の「検査官」に見せる。 これが「数を一旦大きく広げる」の意味です
  2. (たとえて言うなら)検査官は1人につき、何かの兆候を見ています。 たとえば「地名っぽいか」のような。それぞれが、512個の数字を自分なりの配合で混ぜ合わせ、1つの数値を計算します
  3. その数値がマイナスなら、その検査官は黙ります。 マイナスの発言を問答無用でゼロに切り捨てる——これがReLUの役目です。「反応しなかったものは報告しない」という足切りだと考えてください
  4. 残った検査官(プラスの数値を返した検査官)の報告を、また512個の数字にまとめ直します。 これが「元の大きさに戻す」の意味です

このうち確実に言えるのは1・3・4——つまり数式をそのまま言い換えた部分だけです。2の「検査官1人が1つの兆候を見ている」という解釈は、正確にはどこまで言えるか怪しいところがあります。 そこは、後ろの「検査官は本当に『1つの兆候』だけを見ているのか」で掘り下げます。

つまりフィードフォワードは、「512個の数字の組み合わせから2048通りの値を計算し、反応があったものだけを拾い集めて、また元の形に圧縮し直す」部品です。1人目(Attention)が「他の語との関係」を見る係だとすれば、2人目(フィードフォワード)は「この情報単体が、どんな組み合わせに当てはまるか」を総当たりでチェックする係、というのがより正確な役割分担です。

この2048という数は、どうやって決まるのか

「世の中にある兆候の種類を数えて2048にした」わけではありません。 『有名人のことは詳しく』や本記事で見た層の数・d_modelの次元数とまったく同じで、2048(d_ff5)も、設計者が学習を始める前に決める設計値です。

決め方には緩やかな慣習があります。この論文の場合、d_ff(2048)はd_model(512)のちょうど4倍です。GPT-3など多くのモデルもこの4倍という比率を踏襲しています。ただしこれは絶対のルールではなく、たとえばLlama系のモデルは仕組みが少し違う(ゲート機構6という改良版のフィードフォワードを使っている)ため、比率はおよそ2.7倍に調整されています。「何を検査したいか」から逆算した数ではなく、計算コストと相談しながら決める、幅の設計値というのが実情です。

検査官は本当に「1つの兆候」だけを見ているのか

ここが、いちばん正直に書かないといけないところです。答えは「たいてい、そう単純ではない」です。

AnthropicのToy Models of Superpositionは、この問題を正面から扱った研究です。

“Neural networks often pack many unrelated concepts into a single neuron - a puzzling phenomenon known as ‘polysemanticity’ which makes interpretability much more challenging.”

(ニューラルネットは、しばしば互いに無関係な複数の概念を、1つのニューロンに詰め込んでいる——これは「多義性7」と呼ばれる、解釈をいっそう難しくする不可解な現象である)

つまり、「検査官37番は地名っぽさだけを見ている」というような、きれいな1対1の対応は、基本的には期待できません。 1人の検査官が、地名らしさと、複数形らしさと、まったく無関係な何かを、同時に見ていることのほうが普通です。先ほどの「地名っぽいか」という例は、あくまで説明のための仮の例で、実際にどの検査官が何を見ているかは、モデルごとに後から調べないと分かりません。

さらに面白いのは、この「1人が複数を見る」状態が、むしろ都合がいいことがある、という点です。同じ研究によれば、ある兆候がめったに同時には現れない(まばらにしか現れない)場合、ネットワークは検査官の人数より多い種類の兆候を、重ね合わせ8て詰め込める、と報告されています。2048人の検査官しかいなくても、めったに同時発生しない兆候どうしなら、1人に2つ3つを兼任させても混線しにくい——それを利用して、枠の数以上を扱っている、というわけです。

まとめると、こうです。 「2048」という枠の数は、設計者が決めた設計値。ですが、その枠それぞれが何を検査するようになるか、そして枠1つが何個の兆候を兼任するかは、どちらも誰も決めていません。訓練の結果として後から決まり、しかも1対1のきれいな割り当てになっているとは限らない、というのが今分かっていることです。

出入り口の形も、あらかじめ揃えられている

各層の「入り口と出口」の形も、決まっています。同じ論文にこうあります。

“We employ a residual connection around each of the two sub-layers, followed by layer normalization. That is, the output of each sub-layer is LayerNorm(x+Sublayer(x)).”

(2つのサブ層それぞれの周りに残差接続9を設け、その後に層正規化10をかける。つまり各サブ層の出力は、LayerNorm(x+Sublayer(x))という形になる)

数式に見えますが、やっていることは日常の作業に近いものです。

残差接続は、「前の人の作業を消さず、自分の追記だけを書き足す」という配線です。たとえば、みんなで1つの企画書を作っているとします。ふつうのやり方なら、次の担当者は前の人の文章を消して、自分の言葉で書き直すかもしれません。Transformerの層はこれをやりません。前の担当者が書いたものはそのまま残し、そこに自分の追記だけを付け足して、次の担当者に渡します。 数式のx(前の人までの内容)に、Sublayer(x)(自分が新しく足す差分)を足しているだけなのは、これが理由です。

層正規化は、「音量を一定に整え直す作業」です。追記が何十回も重なると、数字の大きさがどんどん膨らんだり、逆に潰れたりしてしまいます。ラジオのミキサーが、話者ごとに声の大きさをそろえるのと同じように、中身(何が書かれているか)はそのままに、大きさ(数値の振れ幅)だけを一定の範囲に整え直す——それが層正規化です。ちなみに今のモデルの多くは、正規化をかける順番が原論文と少し違いますが(先に音量を整えてから追記する、という順序)、「消さずに追記する」という骨格そのものは共通です。

そしてもう1つ、忘れてはいけない決まりがあります。

“To facilitate these residual connections, all sub-layers in the model, as well as the embedding layers, produce outputs of dimension d_model=512.”

(この残差接続を成り立たせるため、モデル内のすべてのサブ層、そして埋め込み層も、d_model11=512次元の出力を生成する)

「前の人の作業に追記する」ためには、渡されるものの大きさ(数字の個数)が、毎回ぴったり同じでなければなりません。原稿用紙のマス目の数が担当者ごとに違ったら、追記のしようがないのと同じです。だから、すべての層の入り口と出口が、同じ個数の数字(このモデルの場合は512個)に統一されています。

「層をいくつ重ねるか」「1層の中身は何と何の組み合わせか」「層と層の継ぎ目をどう繋ぐか」「数字を何個に揃えるか」——これらは全部、学習を始める前に設計者が数値として決める設計値です。 モデルの設定ファイルに記録され、論文には表として載ります。学習データを1文字も読む前に、この骨組みはすでに完成しています。

「層」は別々の箱ではなく、1本の川に手を入れる作業

ここで、質問への直接の答えに近づきます。「層」は、独立したデータの入れ物として別々に存在しているわけではありません。

Anthropicの解釈可能性研究A Mathematical Framework for Transformer Circuitsは、この構造を残差ストリーム(residual stream)と名付け、こう説明しています。

“All components of a transformer (the token embedding, attention heads, MLP layers, and unembedding) communicate with each other by reading and writing to different subspaces of the residual stream.”

(Transformerを構成するすべての部品——トークン埋め込み、Attentionヘッド、MLP層(=フィードフォワード層と同じもの)、そして出力への変換層——は、残差ストリームの、それぞれ異なる部分空間12を読み書きすることで、互いにやり取りしている)

イメージとしては、1本の川に近いものです。各語の情報は、最初から最後まで1本の同じ川として流れ続けます。層は、その川に「せき止めて別の水槽に移す」設備ではなく、川に立って、流れてくる水に何かを混ぜ込んでは、また同じ川に戻す作業員です。「別々の水槽が何十個も並んでいて、順番にバケツで水を移し替えている」のではなく、水槽は最初から最後まで1つだけ、というのが正確な絵です。

先ほどの式——LayerNorm(x+Sublayer(x))——は、まさにこれを表しています。x(川の水そのもの)に、その層が計算した差分だけを足して、また流す。1層が持っている情報は独立した貯蔵庫ではなく、同じ1本の流れに、代わる代わる手を入れているだけです。

『AttentionとTransformer』で「はし」という語が層を通るたびに橋の意味へ寄っていく様子を、塗り重ねに例えました。その比喩は比喩以上のもので、実際に、同じキャンバス(残差ストリーム)に、層ごとに絵の具を足しているだけなのです。1層目で「川」の絵の具が薄く足され、2層目で「架かる」の絵の具がさらに重なり……というように、同じ1枚のキャンバスの上で、絵が少しずつ完成に近づいていきます。

数そのものも、公開されている設計値

「層をいくつ重ねるか」は、モデルごとに違います。しかも、これは秘密ではなく、論文の表に数字として載っています。

モデル 層の数 出典
Transformer(原論文) 6層 Attention Is All You Need(2017年)
GPT-3(175B) 96層 Language Models are Few-Shot Learners(2020年)表2.1
Llama 3(8B) 32層 The Llama 3 Herd of Models(2024年)表3
Llama 3(70B) 80層 同上
Llama 3(405B) 126層 同上

同じモデルの中でも、大きい版ほど層が多いという傾向が見て取れます。『有名人のことは詳しく』で見た「パラメータ数」は、この層の数だけでなく、1層あたりの幅(d_model、先ほどの「川の水量」に当たる数)にも左右されます。各層の重みは、d_model×d_modelのマス目に数値を並べた表(行列)の形になるため、幅を2倍にするとパラメータ数はおよそ4倍に増えます。層を増やすか、幅を広げるかは、どちらも設計者が事前に決める設計判断です。

ここまでは、完全に設計者の仕事です。 層の数も、1層の配線も、入出力の次元も、学習が始まる前にすべて確定しています。「積み上げているうちに自然と層が生まれた」わけではありません。

では、何が「誰も設計していない」側なのか

ここからが、『言葉が数字になるまで』や『盤面を教えていないのに、盤面を持っていた』で見てきた話と繋がります。

層という入れ物は設計済みですが、その入れ物の中のつまみ——各層が持つ無数の重み——の値は、1つも設計されていません。すべて、次の語を当てる訓練を繰り返した結果、外れた分だけ動かされて、そこに落ち着いた値です。

そして、つまみの値が決まった結果として、各層が実際に何を専門に処理するようになるかも、後からしか分かりません。『盤面を教えていないのに、盤面を持っていた』で見たTenneyらの研究は、まさにこれを測ったものでした。品詞タグ付けは浅い層、照応解析は深い層——この役割分担は、設計図のどこにも書かれていません。 研究者が訓練済みのモデルを後から調べて、初めて分かったことです。

たとえるなら、新入社員研修のカリキュラム(何年目に何を学ぶか)だけを先に決めておいて、「本人が実際に何を得意にするか」は一切指図しない、というのに近いイメージです。研修の枠組みは会社が用意しますが、1年目の担当者が実際に何の専門家になるかは、本人の適性と現場での積み重ね次第で、後から振り返って初めて分かります。

つまり、こういう整理になります。

誰が決めたか いつ決まるか
層の数、1層の配線、入出力の次元 設計者 学習を始める前
層の中のつまみの値 訓練の副産物 学習を通じて
各層が実際に何を処理するか(役割分担) 誰も決めていない 訓練の結果として、後から判明する

なぜ、同じブロックを繰り返す形が選ばれたのか

最後に、そもそもなぜ「同じ小さなブロックを何十回も繰り返す」という形が選ばれたのか、簡単に触れておきます。

『ブームは、これで三度目』で書いた通り、1969年にミンスキーとパパートは、層が1つしかないパーセプトロン13には、XOR14のような単純な問題すら解けないことを数学的に示しました。具体例で見てみます。

「傘を持っている」「長靴を履いている」の2つの条件で、外出の判定をするとします。

傘 長靴 AND(両方揃ったら◯) XOR(どちらか片方だけなら◯)
持つ 履く ◯ ✕
持つ 履かない ✕ ◯
持たない 履く ✕ ◯
持たない 履かない ✕ ✕

単層のパーセプトロンにできるのは、1本の直線を引いて、線のどちら側にあるかで◯✕を決めることだけです。ANDの表は、◯が1マスだけなので簡単に1本の線で囲えます。ところがXORの表は、◯のマスと✕のマスが互い違いに並んでいて、直線を1本どこに引いても分けられません。 これがミンスキーとパパートの示した限界です。

層を重ねること自体は、この限界を超えるための必然的な選択だったわけです。ただし、当時は多層のネットワークをうまく訓練する方法が確立しておらず、1986年の誤差逆伝播法の論文——同じ記事で紹介した通り——によって、ようやく多層のネットワークを実用的に訓練できるようになりました。

Transformerの層も、この延長線上にあります。1層でやることを小さく保ち、その代わり同じ処理を何十回も繰り返して少しずつ書き換えていくほうが、1層に全部を詰め込もうとするより、訓練もしやすく、扱える問題も複雑になります。「層を増やす」というのは、この小さな一手を、何度も打ち直せるようにする仕組みです。


まとめ

  • 1層の中身は、**みんなに聞いて回る係(Attention)と1人で仕上げる係(フィードフォワード)**の2人組。これを同じ形のまま何十回も繰り返す
  • 層の数・1層の中身・入出力の次元は、論文に明記された、学習前に固定される設計値
  • 層と層のつなぎ目は、「前の作業を消さず追記する」残差接続と、「大きさだけ整え直す」層正規化の組み合わせ
  • 層は独立した箱ではなく、残差ストリームという1本の共有された流れに、各層が差分を書き込んでいく構造。Anthropicの研究はこれを「読み書きする通信路」と表現している
  • 層の数はモデルごとに公開されている。Transformer原論文は6層、GPT-3(175B)は96層、Llama 3(405B)は126層
  • 一方、層の中のつまみの値と、その結果として各層がどんな役割を専門に担うようになるかは、誰も設計していない。訓練の副産物として後から判明するだけ
  • この形(同じブロックの繰り返し)が選ばれた背景には、『単層のパーセプトロンの限界』(ANDは分けられてもXORは分けられない)と、多層を訓練可能にした誤差逆伝播法という、Transformer以前からの積み重ねがある

「層」という箱は、たしかに設計者が先に用意しています。 ですが、その箱を何十個も並べて、次の語を当てる訓練をひたすら繰り返した結果、箱1つ1つが何の仕事を担当するようになるかは、箱を用意した設計者にも見通せません。 器は設計、中身は副産物——この2つが同居しているところに、層という概念の面白さがあります。

Footnotes

  1. サブ層:1つの層の中を、さらに2つの小さな作業に分けたときの、それぞれの単位。Transformerの1層は「Attentionサブ層」と「フィードフォワードサブ層」の2つでできている。 ↩

  2. フィードフォワード(層):各語のベクトルを、他の語を一切見ずに単独で加工する部品。数字の個数を一旦大きく広げ、多数の「検査官」に細かい兆候をチェックさせたあと、また元の個数にまとめ直す。『有名人のことは詳しく』で触れた、固有名詞のような個別の事実の多くは、この部品に蓄積されているとする研究がある。 ↩

  3. MLP層:Multi-Layer Perceptron(多層パーセプトロン)の略。Transformerの文脈では、フィードフォワード層とまったく同じものを指す別名。論文や研究者によって呼び方が違うだけで、中身は同じ。 ↩

  4. ReLU:計算結果が0より小さければ問答無用で0にし、0以上ならそのまま通す、という単純な足切り処理。「兆候が見つからなければ黙る」を実現している部品。 ↩

  5. d_ff:フィードフォワード層の中間で、一旦広げる先の数字の個数。原論文では2048(d_modelの4倍)。この記事の「検査官の人数」にあたる。 ↩

  6. ゲート機構(SwiGLU):フィードフォワードの改良版の1つ。通常の2回の変換に加えて、「どれだけ通すか」を調整するもう1系統の計算を足す。Llama系のモデルなどで採用されている。 ↩

  7. 多義性(polysemanticity):ニューラルネットの1つの計算単位(ニューロン)が、互いに無関係な複数の概念に同時に反応してしまう性質。「1つの検査官が1つの兆候だけを見る」というきれいな対応は、実際にはむしろ例外にあたる。 ↩

  8. 重ね合わせ(superposition):ある兆候どうしがめったに同時発生しない(まばら)場合、ネットワークが持つ枠の数より多い種類の兆候を、互いにずらして詰め込める現象。枠の数=扱える概念の上限、とは限らない理由。 ↩

  9. 残差接続:層の計算結果をそのまま次に渡すのではなく、「入力+その層が新しく加えた差分」という足し算の形にして次に渡す配線。前の人の作業を消さずに、追記だけを重ねていくイメージ。 ↩

  10. 層正規化(LayerNorm):追記が重なるたびに数字の大きさが膨らんだり潰れたりしないよう、層を通るたびに数値の振れ幅を一定の範囲に整え直す処理。中身(何が書かれているか)は変えず、大きさだけを揃える。 ↩

  11. d_model:1つの語を表すのに使う数字の個数(次元数)。『言葉が数字になるまで』で登場した「1024個の小数の並び」の、その個数にあたる。層の入力も出力も、必ずこの同じ個数に揃えられている。 ↩

  12. 部分空間:残差ストリームという1つの大きな数字の並びの中で、特定の部品専用に割り当てられている「使い方の一部」のこと。大きな共有ロッカーの中に、部品ごとの専用の引き出しがある、というイメージに近い。 ↩

  13. パーセプトロン:ごく初期の、いちばん単純な人工ニューラルネット。入力それぞれに重みを掛けて足し合わせ、しきい値を超えたら1、超えなければ0を返すだけの、1層だけの装置。 ↩

  14. XOR(排他的論理和):2つの入力のうち、どちらか片方だけが真のときに真を返す演算。両方とも真、または両方とも偽なら偽になる。 ↩

LLMの仕組みの記事

LLMの仕組みのページへ →