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


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

    • ChatGPT は,つぎの1巡が1セッションである:

      1. デフォルト

      2. 起動
      • ユーザのログインが,ChatGPT の起動になる。
      • ユーザとの過去セッションの内容が,履歴としてインデクス化されて DB にある。
        これが,読み込まれる。

      3. ユーザの入力テクストxに,応答テクストyを返す
      • Yは,先行テクスト (現セッションでここまでに発生したテクストの累積)
      • xに対する Transformer の応答生成は,テクスト U+Y+x から開始する。
      • ChatGPT の応答は,その中で,ユーザの入力テクストの「整理・まとめ」をする。これは,入力テクストの「インデクス化」をしていることになる。

      4. xとyを,Yに追加する:
      • xは要約が追加され,yはそのままが追加される,と推察される:
          Y = Y+ x' +y
      • 「xは要約されて追加」と考える理由:
        • システムの負荷を抑える。
        • 応答テクストで,ユーザ入力テクストの「整理・まとめ」がされている。
        • 直近でないユーザ入力テクストへの言及は,引用が不正確。
      • Yのこの更新は,Y全体の圧縮・抽象化が重なる。

      5. セッション終了:
      • Y は,内容がインデクス化されて,ユーザ履歴 U に追加される。
        「Y を遺産にして一生を終える」というわけである。。


      ChatGPT と Transformer は,「体」と「脳」の関係になる。
      つぎは,Transformer の処理ではない。
       ・始めの U の読み込み
       ・ x, y をYに追加
       ・最後にYをUに追加
      この処理にはテクストの要約も含まれているので,LLM 級のモジュールがこれをしていることになる。


      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 )


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

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

      ChatGPT は,この ROM の中の
      • トークンベクトルと重みの値 ( 「パラメータ値」 )
      • 順伝播ループのアルゴリズム
      を使って,応答テクストを生成する。

      ユーザの入力テクストに対する応答テクストの出力は,その都度,決定論である。
      しかしこの決定論は,複雑系の決定論である。
      複雑系の決定論は,「決定論」として考えることができない。
      この意味で,ChatGPT の動作は,決定論であって決定論ではない。
      この押さえは,ChatGPT の論を地に足のついたものにする上で,ことのほか重要である。