Up 例 :「翻訳」の学習 作成: 2025-06-13
更新: 2025-06-13


    入力文(英語):"I love you"
    出力文(フランス語):"Je t'aime"

    対応するトークンベクトルに位置エンコーディングを加算したものを:
      X = ( x_1, x_2, x_3 ) = ( "I", "love, "you" )
      Y = ( y_1, y_2, y_3 ) = ( "Je", "t', "aime" )

    そして,
      H^(0) = ( X, <BOS> )
      H^(1) = ( X, <BOS>, "Je" )
      H^(2) = ( X, <BOS>, "Je", "t'" )
      H^(3) = ( X, <BOS>, "Je", "t'", "aime" )

    以下,k : 2 → 3 の場合を示す:

    (1) H^(2) を TV にとってのテクストにする
      Self-Attention:
       Q = H^(2) W_Q
       K = H^(2) W_K
       V = H^(2) W_V
      Z = softmax( Q K^T /√D ) V

    (2) FFN + 残差接続 + LayerNorm
       通常の全結合層を通して情報変換を行い,LayerNormなどで安定化。


    (3) (1), (2) をレイヤーの数だけ繰り返す
      最終出力を O とする。

    (4) 誤差(得失)計算
      logits = W_O O^T
      p = softmax( logits )
      正解表 true と照合して誤差を計算:
      loss = cross_entropy ( p, true )

    (5) 誤差逆伝播
       トークンベクトル,重み行列 W_Q, W_K, W_V, W_O 等を調整・更新。


    ここで注意すべきは,p も true も,
      「H^(2) = ( X, <BOS>, "Je", "t'" ) の次は "aime"」
    を示すものではない,ということである。
    ここには,
      《 p と true から loss を計算し誤差逆伝播する》
    の自動処理しかない。

    くれぐれも誤解せぬように!
    「H^(2) = ( X, <BOS>, "Je", "t'" ) の次が H^(3) = ( X, <BOS>, "Je", "t'", "aime" ) なのは,
      「H^(2) に続く確率が高いのは "aime"」
    だからではない。
    はじめから,"Je", "t'", "aime" の順番で続けることになっているから, H^(2) のつぎは H^(3) = ( X, <BOS>, "Je", "t'", "aime" ) なのである。