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


    (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) 「確率分布」 は存在しない
    通説は,このアルゴリズムを 「確率分布」 の処理のように説くが,そのようなものは存在しない。

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


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