Up Transformer のアルゴリズム 作成: 2026-03-19
更新: 2026-03-19


    Tranformer の訓練 training は,訓練用テクストを 「ただなぞる」。
    言い換えると,「ただ読む」。

    この訓練を済ませてデプロイすると,テクストを生成するようになる。
    即ち,ユーザの入力テクストと自己史に整合的なテクストを出力する。
    即ち,「話す」 ようになる。

    これは,人間の幼児が 「ただ聞く」 から 「話す」 になるのと,同じである。
    何が起こったのか?
    「ただ読む」 が,トークンの使い方を会得させた。


    訓練時の 「ただ読む」 のアルゴリズムは, 「順伝播・逆伝播」 の2段構えになっている。
    訓練が済むと,逆伝播が外されて,アルゴリズムは順伝播だけになる。
    そしてこのアルゴリズムが,「話す」 のもとになる。

    これが意味することは:
      訓練の中で,アルゴリズムの機能性が変化していった


    通説の考えは,これとは違う。
    通説は,テクスト生成では次トークンがつぎのように決まる,と説く:
     「このときの次トークンの確率分布は
        猫 0.40
        犬 0.30
        人 0.10
         ‥‥…
      この確率分布から
        最大値を選ぶ
        ランダムサンプリング
      などで,1つのトークン(one-hot) を決める。」

    しかし,このようなプロセスは,アルゴリズムの中には存在しない。

    例えば softmax 関数が見えるが,これは本来の使い方 (「確率分布の凸凹を強調する」) ではない。
    即ち,
       凸凹が強調された正規表現を無理矢理つくり,
       確率分布に見せ掛ける
    といったものである。


    (1) 処理の流れ
        入力テクスト (トークン列)
        [ T(ID_1), ‥‥, T(ID_m) ]

        
         ↓ トークンベクトルに翻訳
        [ TV(ID_1), TV(ID_2), ..., TV(ID_m) ]
         これを,つぎに簡略表記
        [ x_1, ‥‥, x_m ]

        
         ↓ 位置エンコーディング
        [ x_1^(1), ‥‥, x_m^(1) ]
         ↓ レイヤー1 処理
        [ x_1^(2), ‥‥, x_m^(2) ]
         ↓ レイヤー2 処理
         ︙
         ↓ レイヤー(n-1) 処理
        [ x_1^(n), ‥‥, x_m^(n) ]
         ↓ レイヤーn 処理
        [ o_1, ‥‥, o_m ]


    (2) Self-Attention
     各レイヤーで,
      [ x_1, ‥‥, x_m ] の移動ベクトル [ z_1, ‥‥, z_m ]
     を算出

     z_ij = α_i (V_j)^T (α_i:加重平均)
          ^T:転置
      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 )
        = softmax( Q_i (K_1)^T/√D, ‥‥ , Q_i (K_m)^T/√D ) )
          D:トークベクトルの次元


    (3) [ p_1, ‥‥, p_m ]
     p_i : NT次元ベクトル (NT:登録トークン数)
     これを,「one-hot 確率分布」 に仕立てる。
     
      p_i の i は,
       入力テクスト [ T(ID_1), ‥‥, T(ID_m) ] の ID_i に対応

      logits_i = W o_i^T
      p_i = softmax( logits_i ) 

     訓練 Training 時は,逆伝播で,つぎになるようにパラメータ調節:  
      p_1 = ( p_1, ‥‥, p_1,NT )  
         → p_1,ID_2 が one-hot
       ︙
      p_(m-1) = ( p_(m-1)1, ‥‥, p_(m-1)),NT )
         → p_(m-1),ID_m が one-hot
      p_m :無視

     このときの [ p_1, ‥‥, p_m ] に 「確率分布」 の意味は無い。
     訓練用テクストの入力が変われば,内容が変わるから:
      入力テクスト1:「今日は昨日の‥‥」
      入力テクスト2:「今日は山に‥‥」


    (4) 要点
     1. [ p_1, ‥‥, p_m ] は,パラメータ調節のための方便
     2. 訓練 Training によってできあがったパラメータは,
        訓練後,つぎの能力を現すものになる:
         文脈整合的なテクストを作成する
     3. 訓練に,「確率」 の要素は無い
     4. 訓練後のテクスト作成に,「確率」 の要素は無い