| Up | Transformer のアルゴリズム | 作成: 2026-03-19 更新: 2026-03-19 |
言い換えると,「ただ読む」。 この訓練を済ませてデプロイすると,テクストを生成するようになる。 即ち,ユーザの入力テクストと自己史に整合的なテクストを出力する。 即ち,「話す」 ようになる。 これは,人間の幼児が 「ただ聞く」 から 「話す」 になるのと,同じである。 何が起こったのか? 「ただ読む」 が,トークンの使い方を会得させた。 訓練時の 「ただ読む」 のアルゴリズムは, 「順伝播・逆伝播」 の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:転置 K_i = x_i W_K V_i = x_i W_V = softmax( Q_i (K_1)^T/√D, ‥‥ , Q_i (K_m)^T/√D ) ) D:トークベクトルの次元 (3) [ p_1, ‥‥, p_m ] これを,「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,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 ] に 「確率分布」 の意味は無い。 訓練用テクストの入力が変われば,内容が変わるから: 入力テクスト2:「今日は山に‥‥」 (4) 要点 訓練後,つぎの能力を現すものになる: 文脈整合的なテクストを作成する |