Up 「応答生成のしくみ」の通説 作成: 2023-06-08
更新: 2025-06-14


    Transformer のトークンベクトル集合体 TV は,学習済みの段階で「記憶脳」に成長している。
    これは,厖大な知識と質問応答パターンを,生成的に記憶している。
    「生成的に」といううところが肝心である。──丸暗記ではない。

      ChatGPT では,「RLHF (Reinforcement Learning from Human Feedback)」といって,「望ましい言葉遣い」の学習が加えられる (Transformer の TV および重み行列の固定はこのとき一旦解除されることになる)。
      しかしこれは,本題と本質的に関わるものではないので,触れない。


    「応答生成のしくみ」について,通説はつぎのような言い方を用いる:
     「 Transformer の Self-Attention をそのまま使う。
    Encoder-Decoderモデルではなく,Decoder-only モデル。
    応答生成は,自己回帰的 (auto-regressive)。
    つまり,つぎのループ:
       1トークンずつ生成 → 末尾に追加 → 再度推論
    <次のトークン>は,意味の確率分布から決まる。」

    しかし,「<次のトークン>は意味の確率分布から決まる」は,受け入れ難い。
    意味の確率分布は,極く緩やかなものである。
    <次のトークン>を決めるようなリジッドなものではない。
    そして,そもそもこのようなやり方では,「構成的な応答」にならない。


    通説は,この論難にどう返すか?
    つぎのようである他ない:
      Transformer の記憶 (TVと重みの構造) は, 「構成の記憶」。
      「1トークンずつ生成」は,「構成の記憶」がもと。
      よってこれは,「構成的な応答」になる。

    しかしこのときは,「1トークンずつ生成」の意味が変わる。
    即ち,「構成した応答を記す=1トークンずつ記す」が,「1トークンずつ生成」の意味になる。
    通論にとってこれは,「トークンの連想」の立場を捨てることである。


    実際,ロジックとしては,こうなるしかない。
    そこで,「ChatGPT の応答生成のしくみがわかる」の形は:
     「トークン生成のアルゴリズムがわかる」
      ──このアルゴリズムを「アルゴリズム?」と呼ぶ。

    そしてこの「わかる」のためには,意味論に一旦蓋をすることが必要である。
    意味論は,「意味の過剰」に走り,論点を紛らわし拡散する危険が大だからである。


  • 「ChatGPT の応答生成」のわたしの推理
    ChatGPT が Decoder-only であり,自己回帰的に応答を生成することは,自ずとそうなるというものである。

    Transformer の「応答」学習では,質問テクストを Encoder に入力しているが,Encoder のこの使用は本質的はない。
    なぜなら,質問テクストの Encoder 入力層出力は Decoder に入力され,応答テクストの Decoder 入力層出力と一緒になるからである。
    こうであれば,質問テクストと応答テクストを最初から一緒に Decoder に入力すればよいわけである。

    そして,Decoder の中でのトークン生成は,「自己回帰的」である。
    したがって,「自己回帰的」を ChatGPT のトークン生成の特徴のように言うのは,適当でない。


    Transformer の「応答」学習での応答生成は,つぎのようになっていた:
     質問テクストの Encoder 入力層出力:X
     応答テクストの Decoder 入力層出力:Y = ( y_1, y_2, ‥‥, y_n )

     1゜( k = 0 )

      H^(0) = ( X, <BOS> )
      ここで "<BOS>" (Beginning Of Sentence)は 文頭記号。

     2゜( k → k+1 )

      Self-Attention:
       Q^(k) = H^(k) W_Q,
       K^(k) = H^(k) W_K,
       V^(k) = H^(k) W_V
      Z = softmax( Q K^T /√D ) V
      Feedforward + 残差接続 + LayerNorm :
      FFN( X ) = ReLU( X W1 + b1) W2 + b2

      これをレイヤーの数だけ繰り返す。
      最終出力を O とする。

      O に対し, 「教師あり」の処理をする:
       ・正解表と照合 → 誤差(得失)計算
       ・誤差逆伝播

      H^(k+1) = ( H^(k), y_(k+1) )

    ChatGPT は,「Yが空」の場合になる。
    したがって,「ChatGPT は Transformer をそのまま使う」は正しくない。
    2゜の中に,y_(k+1) を出力するアルゴリズム (「アルゴリズム?」) が存在している。
    「アルゴリズム?」を明らかにせねばならない。


    わたしは,H^(0) = ( X, <BOS> ) の最終出力 O に,TV が「応答生成」を以て反応するのだと思う。
    そして生成した応答を,「アルゴリズム?」の度に,1トークンずつ小出ししていく。

    しかしここでわたしが悩むのは,TV が固定となっていることである。
    「TV 固定」では,「TV が応答を生成する」を想像できない。

    そこでわたしは,つぎのように推理する:
     「応答モードの ChatGPT は,本当は TV 固定でないのかも
    このように思うのは,ChatGPT の「前行性健忘症」仕様を見ているからである。
    ChatGPT は,セッションが終わると,デフォルトにリセットされる。
    ということは,セッション中は TV が可変ということなのではないか?