Up | 処理の流れ | 作成: 2025-06-03 更新: 2025-06-20 |
[ o_1, ‥‥, o_LEN(S) ] から糸 [ p_1, ‥‥, p_LEN(S) ] をつくる。 これは,[ x_1, ‥‥, x_LEN(S) ] を通す糸にはなっていない。 「誤差 (損失)」を [ loss_1, ‥‥, loss_LEN(S) ] に表現する。 つぎに,この誤差を減らすための「TVとWの矯正」として,パラメータの調節をする。 これは,TV と W の更新ということになる。 誤差は,順伝播 x_i^(1) → x_i^(2) → ‥‥ → x_i^(NL) → o_i の各レイヤーでの誤差が累積したものと見る。 誤差を減らすための重み行列の調節は,レイヤーごとに──レイヤー独自の重み行列に対して──行う。 このようにしないと,ここまでうまくチューニングされてきたパラメータを損なうことになるからである。 この処理を,「誤差逆伝播(backpropagation)」の形で行う。 誤差は,「勾配」に表現する。 レイヤーごとに誤差発生の割合が違うことは,勾配が各レイヤーで違うという表現になる。 「誤差逆伝播」は,「勾配」のことばでいえば,「勾配降下」である。 重み行列は,このプロセスで更新される。 トークンベクトル TV(ID_i) の方は,レイヤーごとの勾配 (局所的な勾配) を連鎖律で合成して得た勾配を用いて,更新する。
TV(ID_i) │ ▼ x_i^(1) = TV(ID_i) │ ▼ x_i^(2), ‥‥ , x_i^(NL), o_i │ ▼ 損失 loss_i が計算される ▲ │ ∇loss_i/∇x_i^(NL), ‥‥ , ∇loss_i/∇x_i^(1) を計算 ▲ │ ∇loss_i/∇TV(ID_i) を計算(連鎖律) ▲ │ TV(ID_i) := TV(ID_i) - η・∇loss_i / ∇TV(ID_i) η : 学習率 (learning rate) |