Up ChatGPT とは何か 作成: 2023-06-11
更新: 2025-06-30


  • Transformer とは何か
  • 「Transformer がわかる」 の形
  • ChatGPT
  • 使用記号

    • ChatGPT は,つぎのプログラムである:
         ROM になった Transformer 脳 を用いて,
         入力テクストに応答テクストを返す。

      応答テクストを生成するのは,Transformer である。
      ChatGPT がやっていることは:
      1. 質問テクストを Transformer に渡す
      2. Transformer が生成した応答テクストを回収する

      この言い方は,「ChatGPT は Transformer 脳のただの外部インタフェース」のように聞こえるだろうか?
      ここは,「ChatGPT は,体を得た Transformer 脳」と読むところである。
      脳は,体を得てはじめて脳になるのである。


      Transformer の応答生成は,つぎのアルゴリズムになる:

           テクスト入力
            ↓トークン分割
           [ t_1, ‥‥, t_m ]
            ↓対応するトークン点
           [ x_1, ‥‥, x_m ]


        ┌→ [ x_1, ‥‥, x_m ]
        │    │
        │   生成終了?── YES ───→ 応答出力
        │    │NO   
        │    │← 位置エンコーディング加算
        │    ↓
        │  x_i^(1) = x_i ( i = 1, ‥‥, m )


        │  x_i^(ℓ)
        │    ├─────┐
        │    │   Self-Attention
        │    │     ↓
        │    │    z_i^(ℓ)
        │    │     │← LayerNorm
        │    │← 加算 ─┘
        │    │
        │    ├─────┐
        │    │    FFN
        │    │     ↓
        │    │    z'_i^(ℓ)
        │    │     │← LayerNorm
        │    │← 加算 ─┘
        │    ↓
        │  x_i^(ℓ+1)


        │  x_i^(NL)
        │    ↓← Self-Attention, FFN
        │  o_i = x_i^(NL+1)
        │    ↓
        │   logis
        │    ↓
        │  [ p_1, ‥‥, p_m ]
        │   p_m : 「x_m の次は x_(m+1)」
        │    │
        └────┘m = m+1

      ここで,
      ・Self-Attention
                 x_i
          ┌──────┼──────┐
          ↓線型変換  ↓      ↓
       Q_i = x_i W_Q  K_i = x_i W_K  V_i = x_i W_V
          └──┬───┘      │
             ↓          │
       α_i = sim( Q_i ; K_1, ‥‥, K_m )  │
             │          │
             └───┬──────┘
                z_i = α_i V
                 ↓← LayerNorm

        sim( Q_i ; K_1, ‥‥, K_m )
         = softmax( Q_i (K_1)^T/√D, ‥‥ , Q_i (K_m)^T/√D )

      ・FFN
                 x_i
                 ↓
          z'_i = σ( x_i W_1 + b_1) W_2 + b2
                 ↓← LayerNorm

      ・[ p_1, ‥‥, p_m ]
        logits_i = o_i W_O^T
        p_i = softmax( logits_i )


      このアルゴリズムは,<学習モードの Transformer>のアルゴリズムのうちの「順伝播」を,ループさせたものである。

      <学習モードの Transformer>は,トークンベクトルと各種重みの値を「逆伝播」のアルゴリズムで更新する。
      これが, 「脳の成長」の意味になる。
      この成長を止め ROM にしたのが,ChatGPT の Transformer 脳である。

      ChatGPT は,この ROM の中の
      • トークンベクトルと重みの値
      • 順伝播ループのアルゴリズム
      を使って,質問テクストに対する応答テクストを出力する。

      ChatGPT の応答生成プログラムは,トークンベクトルと各種重みの値が,プログラムの<定数>になる。
      よって,生成される応答テクストは,質問テクストが入力された段解で決定している。
      ChatGPT は,決定論である。
      この押さえは,ChatGPT の論を地に足のついたものにする上で,ことのほか重要である。