S07 · 共享参数,变化的状态
整机中的状态更新可以展开为相邻的两次调用。通过一个精确二维算例,参数共享不再只是一个名词。
状态 b0
给定Wx=I2、Wh=.5I2、b=0和h0=0;第一步h1=(.761594,0),第二步先保留待算项。
状态 b1
第二步线性和为(.380797,1),第一坐标来自.5h1;tanh后的第一坐标仍待学生计算。
状态 b2
h2=(.363399,.761594),同样参数接收不同输入和旧状态。
状态 b3
时间展开的两个更新节点使用同一θ;不同位置的损失沿各依赖路径累积到共享参数。
公式与算例详情
二维独立教学算例:$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尚未知,不能用目标未来反向编码来假装合法生成。
多位置损失图中的红箭头表示梯度依赖,更新节点不是各有一组独立参数。共享参数梯度是它在展开图中各次使用所贡献的梯度之和;不同时间步状态则由本次输入和前态决定。