Lecture 05 · 共享参数,变化的状态

S07 · 共享参数,变化的状态

整机中的状态更新可以展开为相邻的两次调用。通过一个精确二维算例,参数共享不再只是一个名词。

状态 b0

给定Wx=I2、Wh=.5I2、b=0和h0=0;第一步h1=(.761594,0),第二步先保留待算项。

同一递推规则,两次不同状态二维算例hₜ = tanh(Wₓeₜ + Wₕhₜ₋₁ + b)Wₓ = I₂;Wₕ = 0.5I₂;b = 0;h₀ = (0,0)h₀ = (0,0)更新 fθ更新 fθe₁ = (1,0)e₂ = (0,1)h₁ = tanh(1,0) = (.761594,0)第二步:(0,1) + .5 × (.761594,0) = (?,1)

状态 b1

第二步线性和为(.380797,1),第一坐标来自.5h1;tanh后的第一坐标仍待学生计算。

同一递推规则,两次不同状态二维算例hₜ = tanh(Wₓeₜ + Wₕhₜ₋₁ + b)Wₓ = I₂;Wₕ = 0.5I₂;b = 0;h₀ = (0,0)h₀ = (0,0)更新 fθ更新 fθe₁ = (1,0)e₂ = (0,1)h₂ = tanh(.380797,1) = (?, .761594)第一步的哪一项,进入了第二步?

状态 b2

h2=(.363399,.761594),同样参数接收不同输入和旧状态。

同一递推规则,两次不同状态二维算例hₜ = tanh(Wₓeₜ + Wₕhₜ₋₁ + b)Wₓ = I₂;Wₕ = 0.5I₂;b = 0;h₀ = (0,0)h₀ = (0,0)更新 fθ更新 fθe₁ = (1,0)e₂ = (0,1)h₂ = (.363399, .761594)相同 Wₓ、Wₕ、b;不同输入与前一步状态。

状态 b3

时间展开的两个更新节点使用同一θ;不同位置的损失沿各依赖路径累积到共享参数。

同一递推规则,两次不同状态二维算例hₜ = tanh(Wₓeₜ + Wₕhₜ₋₁ + b)Wₓ = I₂;Wₕ = 0.5I₂;b = 0;h₀ = (0,0)h₀ = (0,0)更新 fθ更新 fθe₁ = (1,0)e₂ = (0,1)L₁L₂共享 θ多个位置的 loss 沿展开图,汇到同一组共享参数。

公式与算例详情

二维独立教学算例:$h_t=\tanh(W_xe_t+W_hh_{t-1})$,$W_x=I$、$W_h=0.5I$、$h_0=(0,0)$,无bias。设$E(\text{我})=(1,0)$、$E(\text{昨天})=(0,1)$,则$h_1=(\tanh1,0)=(.761594,0)$;第二步preactivation为$(.380797,1)$,$h_2=(.363399,.761594)$。显示数值四舍五入,复算用完整精度。

参数$W_x,W_h,E$在不同时间步共享,状态$h_t$由本次序列的前缀产生。前向读一个新词改变状态,不等于更新模型参数;训练才通过损失更新共享参数。这里没有规定两个坐标分别代表人物或时间,不能手工命名语义后冒充已学习表示。

本页只展示前两步,后面四个源token仍需继续处理才形成最终源摘要。此二维算例的向量不与后续三源attention或四维Transformer block拼成一次完整运行。已知源句可以使用双向编码;目标生成的未来token尚未知,不能用目标未来反向编码来假装合法生成。

多位置损失图中的红箭头表示梯度依赖,更新节点不是各有一组独立参数。共享参数梯度是它在展开图中各次使用所贡献的梯度之和;不同时间步状态则由本次输入和前态决定。

继续学习

状态在流动,梯度可以停在边界 · LAB01:C · 共享参数的梯度到底加了几次?

保留的完整推导:R14 · R15 · R16 · R22。