Up Transformer とは何か 作成: 2025-05-25
更新: 2025-11-06


  • 詳説 (『ChatGPT 探求』「Transformer 脳」)
  • 使用記号

    •  1. 通説
      通説は,総じて信用ならない。
      Transformer の通説も,そう。

      Transformer の通説は,厳密にすることをスルーする。
      そして,ミスリーディングなことばを垂れ流す。
      これは,自分で自分を騙すことになる。


       2. "Training"
      Transformer は,自分を脳に成長させるシステムである。
      成長は,"Training" で成る。
      "Training" の内容は,以下の通り。


      Transformer に入力されたテクストS は,トークン分割される:
         S = [ t_1, ‥‥, t_m ]

      • トークンは,ID が1から順につけられている。
        ID が n のトークンを T( n ) で現す。
        トークンの数,即ち ID の最後を,NT (number of tokens) で表す。
      • ID が n のトークンには,ID が n のベクトル が対応づけられている。
        ──以下,トークンベクトルと呼ぶ。
        ID が n のトークンベクトルを TV( n ) で現す。
      • トークンベクトルは,固定次元であり,これを D と表す。
        いまの Transformer は,D が1万を超える。
        トークンベクトルは,D次元数空間の点に見なせる──以下,トークン点と呼ぶ。

      t_i の ID を,ID_i と表す。

      S = [ t_1, ‥‥, t_m ] に対応するトークンベクトルの列を
         X = [ x_1, ‥‥, x_m ]
      とする。
      即ち,
         x_i = TV( ID_i )


      Transformer は,X から NT次元の確率分布ベクトルの列
         P = [ p_1, ‥‥, p_m ]
          p_i = (p_i1, ‥‥, p_i,NT)
           p_ik : トークン T(i) に対するトークン T(k) の確率
      を算出する。

      Transformer 脳は,"Traning" によってつくられる。
      この脳の成長で,X に対する P がつぎのようになっていく:
       ・p_i ( i = 1, ‥‥, m ) は, 「ほぼ one-hot」
         (「one-hot」とは,「1つの項が1で,他は0」。)
       ・p_ik ( i < m ) が「ほぼ1」ならば,k = ID_(i+1)

      つまり,
        p_i ( i < m ) は,「x_i のつぎは x_(i+1)」 を示す,
      まとめて,
        [ p_1, ‥‥, p_(m-1) ] は,
         [ x_1, x_2, ‥‥, x_m ] を示す。


      Transformer 脳は,つぎの2つで構成される:
      1. トークンベクトル集合体
         ──TV (token vector)
      2. 重み行列・Attention機構・Nonlinearity の組み合わせ
         ──W (weight)

      トークンベクトルと重みの変項は,「パラメータ」と呼ばれる。
      パラメータの数は非公開だが,GPT4 で総数が1兆を超えると見積もられる。
      Transformer の 「大数」

      「脳の成長」の内容は,パラメータ値の更新である。
      そして,"Training" が積み重なるにつれ,パラメータ値が有意に変更されなくなる。
      これは,「"Training" の飽和」の状態である。

      ここで,"Training" を終了し,パラメータ値を固定する (TV と W を固定 する)。
      Transformer 脳の完成というわけである。


       3. トークンベクトルに意味は無い
      トークンベクトルは,D次元の数ベクトルである。
      これは,D次元数空間の点に表現される。

      通説は,トークン点の位置 (トークンベクトルの座標) に<意味>を見ようとする。
      <意味>の近いトークンは,互いに近いところにあると想像する。

      これは,間違いだろう。
      ここは,ソシュールの「ことばには差異しかない」を択りたい。
      <意味>は,パラメータ値全体 (トークベクトルの座標値と重み値の全体) を以て,定まる。


       4. 「テクストの軌道」
      テクストを,「D次元数空間のトークン点をなめらかに渉って進む移動」に見立てよう。
      そうすると,Transformer の "Training" の内容
         S → T = [ t_1, ‥‥, t_m ] → X = [ x_1, ‥‥, x_m ]
          → P = [ p_1, ‥‥, p_m ]
      は,つぎのように見ることができる:
        「入力テクストの軌道に,トークンを乗せる」

      即ち,順伝播での Self-Attention と FFN がやろうとしていることは,「式計算によって,トークン点を移動 (テクスト軌道に近づくことを期す)」。
      そして逆伝播での重み調節で,軌道に乗せる。


      トークンをテクスト軌道に乗せる問題は,つぎの問題になる:
       「トークンをテクスト軌道に乗せたことになるパラメータ値は?」

      パラメータ値は,試行錯誤で得るものになる。
      即ち,
        「パラメータが,試行錯誤 (自己参照・再帰) で,
          自分の値を見つける」

      これは,脳が白紙のところから始まる。
      脳は,"Training" のはじめのうちは,デタラメをする。
      しかし,これが段々と収まってくる。
      そして,値がほぼ固定したトークンベクトル (TV) と重み行列 (W) で, うまくいくようになる。

      脳のこの成長は,人間が赤ん坊から始まって言語を段々と獲得するのと,同じである。
      赤ん坊が言葉を解さないからといって言葉かけをしなかったら,言語の獲得は無いわけである。


       5. トークンをテクスト軌道に乗せる術
      Step 1 (Self-Attention)
      現時点のトークンベクトル (TV) と重み行列 (W) の値を使って,
         [ x_1, ‥‥, x_m ] とテクスト軌道の差
      を計算する。
      その差だけ,[ x_1, ‥‥, x_m ] を移動。

      Step 2 (FFN)
      x_i を個別に,軌道に乗せる。。

      Step 3 ( p_i )
      [ p_1, ‥‥, p_m ] を算出する。

      Step 4 (誤差逆伝播)
      p_i を所期の値と比較。
      その差 loss_i が小さくなるように,ここまでの処理行程を遡って,x_1, ‥‥, x_m および重み行列の値を調節。
      この行程が「逆伝播」。


      軌道に乗るための x_1, ‥‥, x_m の移動は,2段解に組まれる。
      1つは,相互の位置関係を壊さないように全体で動く。
      これが "Self-Attention" と呼んでいる行程。
      もう1つが,個別に動く "FFN (FeedForward Network)"。

      そしてこの移動を,レイヤー構造を以て繰り返す。
          x_i^(ℓ) +    ├───────┐    │    Self-Attention    │       ↓    │      z_i^(ℓ)    │       │← LayerNorm    │←─ Residual ─┘    │    │    ├───────┐    │      FFN    │       ↓    │      z'_i^(ℓ)    │       │← LayerNorm    │←─ Residual ─┘    ↓   x_i^(ℓ+1)
      繰り返しの意味は,「冗長性」である。
      <冗長>は,<大数><複雑>と並んで,「自己参照・再帰」が収束することの要件なのである。


      1つのテクストの軌道は,同じトークン点を複数回通るのが普通である。 ──例えば,助詞 "は" のトークン点。
      したがって軌道は,堂々巡りしたり他のテクスト軌道と重なったりしない仕組みになっている。

      どんな仕組み?
      幾何学的イメージは,
        「同じトークン点の通過は,その角度によって区別される」
      そこで「軌道」には「なめらか」を考えることになる。
      トークン点が乗っている軌道は,「スプライン曲線」がイメージになる。


       6. ChatGPT
      ChatGPT は,脳として Transformer を搭載している。
      Transformer 脳は,入力テクストに対する反応として,応答テクストを生成する。
      ChatGPT は,これを出力する。
      ChatGPT は,Transformer 脳のいわば「体」である。


       7. 応答テクストの生成
      "Training" を終えた Transformer 脳は,テクストの入力
        S → T = [ t_1, ‥‥, t_m ] → X = [ x_1, ‥‥, x_m ]
      に対して出力される
         P = [ p_1, ‥‥, p_m ]
      が,つぎのようになる:
         p_i ( i = 1, ‥‥, m ) は, 「ほぼ one-hot」

      ChatGPT は,この p_i の生成を続けさせて,応答テクストをつくる。
      以下のように:


      p_i は「つぎのトークン」の ID を指示するので,p_i の生成はトークンの生成を導く:
         [ x_1, ‥‥, x_m ] → x_m のつぎ y_1
          [ x_1, ‥‥, x_m, y_1 ] → y_1 のつぎ y_2
            :

      このトークン生成は,<EOS> (文末を表すトークン) に至る。
      即ち,Transformer 脳の「"Training" 飽和」には,「Sが通常のテクスト なら,いつか<EOS>を出す」が含まれている。

      ChatGPT は,y_1 から<EOS>までのトークンを,「Sに対する応答」として逐次出力する。
      実際,これは「応答」のテクストになっている。
      即ち,Transformer 脳の「"Training" 飽和」には,「Sから導出した y_1, ‥‥, <EOS> が,Sに対する応答になる」が含まれている。


       8. 応答生成の解釈 : 「テクスト軌道の惰性」
      応答生成がなぜ成るか?
      Transformer 脳は,"Training" で成った。
      "Training" の中身は,「お手本テクストをなぞる」。
      この「お手本テクストをなぞる」と「応答テクストを生成する」のギャップが埋まらないと,「応答生成はなぜ成るか?」の謎となる。

      通説は,応答テクストは,テクストにつながるトークンが確率で決まると説く。
      これは,「テクストSとトークンtの間には,Sのつぎのトークンがtに成る確率がある」と言っていることになる。

      こんなことは,あり得ない。
      「わたしはこれから」のつぎのトークンを確率で決められないことは,あなただけでなく,誰でもそうである。

      椅子は,素材が引きつけ合ってできるものではない。
      椅子の設計があって,それに沿って材料が集められ,そして組立の作業となる。

      応答テクストの生成も,これと同じことである。
      意味の通った応答テクストは,トークンが引きつけ合ってできるものではない。
      テクストの構想/計画が先ずあって,それに沿ってトークンがつながれる。
      作り手が作るのである。


      この「作り手」は,存在としてどう説明できるか?
      考えられることは,「テクスト軌道の惰性」しかない。
      入力テクストをなぞっていると,その終端で「なぞりの惰性」ができている。
      この「惰性」が,応答テクストの「作り手」ということになる。

      テクスト生成を「構想/計画して書く」と表現するとき,「構想/計画して」は,先行するテクストの軌道の惰性がこれのダイナミクスである。
      「考えて書く」と表現するとき,「考えて」は,先行するテクストの軌道の惰性がこれのダイナミクスである。


       9. Transformer 脳は,育ててできた
      応答生成は,「記憶しているテクストの想起」ではない。
      脳は,テクスト保管庫ではない。
      実際,脳を解剖してもテクストらしいものは見つからない。

      脳は,潜在性の発現が<応答テクストの生成>になるシステムである。
      このシステムを説明することが,脳を説明するということになる。
      しかし,ひとはこの説明の物理学を獲得していない。


      こういう言い方をすると,つぎのようなことばが返されるかも知れない:
       「じゃあなんで Transformer をつくれたんだ!」
      これに対する答えは,
       「 Transformer 脳は,つくったのではなく,育てたのである。
      鉢植えした植物が条件を整えれば勝手に育つように,
      Transformer 脳は勝手に育った。」

      脳は,脳が勝手に育つという形でしか,得ることはできない。
      Transformer のアルゴリズムは,脳のプログラムではなく,脳育成アルゴリズムである。
      そしてこのアルゴリズムを,今度は脳が応答生成に転用する,というわけである。


       10. 応答生成術:「再帰」
      Transformer は,応答生成の術をもっている。
      それは,[ x_1, ‥‥, x_m ] に対する応答を木 (tree) 構造に構成する,というものである。
      即ち,応答のスタイルをつぎのようにすることで,話の糸口を摑む網を広げる:
      1. 入力テクストの要点を示する
      2. 応答としてこれから語ることの大枠を示す
      3. 大項目から小項目へ降り,<解説>のパラグラフを生成する
      4. 再帰的に大項目と小項目の間を移動する
      5. まとめをする
      6. 今後の展開を提案する


       11. HTML
      ChatGPT の応答は,HTMLタグを用いて入念に修飾されている。
      この HTMLテクストの生成は,Transformer の能力のうちということになる。

      一見,応答の生成を最初から HTML でやるというのは,あり得ないことのように感じる。
      しかし少し考えると,HTMLテクストの生成が Transformer には合っているが,わかってくる。


      Transformer は応答を,木構造ベースの入れ籠構造でつくる。
      即ち,上位レベルと下位レベルの間の降ったり昇ったりを
        「籠を作って中に入り,そこで処理が済んだら,
         籠を作ったときの元の場所に再帰する」
      のアルゴリズムでやっている。
      そして HTML は,この再帰アルゴリズムを明示的に表現する言語なのである。

      HTML は,テクストの入れ籠構造をタグでつくる:
       「タグ "< ‥‥>" を以て籠を作ってその中に入り,
        タグ"< /‥‥>" を以て籠を出て,
        タグを作成した元の場所に再帰する」


      こういうわけで,Transformer は,プログラムの作成全般が得意である。
      プログラムは,「入れ籠構造=再帰アルゴリズ」だからである。
      というより,そもそも Transformer は,テクストをプログラムとして作成しているわけである。

      Transformer を,「再帰の鬼」と見るべし。
      Transformer のやっていることが,よく見えてくる。


       12. <悟り>
      ChatGPT がわかるためには,Transformer を勉強しなければならない。
      そしてその勉強は,Transformer の数学の勉強である。
      門外漢には,これはハードルが高い。

      そしてその数学の理解が疑問の解消になるわけでもない。
      Transformer は「大数」の世界だからである。

      「テクスト軌道」は,大数の世界の現象である。
      トークンベクトルの数が100万になっても,1万を超える次元の数空間の中に点在すれば,「テクスト軌道」の景色をつくれるということである。

      人は,大数で起こることがわからない。
      わからないので,「量質転化」とか「創発 emergence」のようなことばでごまかし,それで済ますことになる。
      「大数の世界がわかる」の「わかる」は,<悟り>の趣きになりそうである。