R14 · 状态每步改变,更新规则只学一套
R13的固定窗口会丢掉较早词。如果这些词还影响后续预测,就需要另一条信息通路。本页用两次递推检查:上一轮的结果怎样参与当前计算?
状态 b0
完整句子仍在上方,先只计算“我”这一更新;从给定h₀=0出发,结果暂留问号。
状态 b1
将E(我)送入规则,h₁结果揭示。先核对线性相加,再看tanh逐分量作用。
状态 b2
保留h₁、换入“昨天”,得到h₂。比较两步使用的不变参数与变化状态:第二步没有重新从零开始。
公式与算例详情
RNN 把“已读过什么”放进一个随输入变化的状态。一个常见的简单 RNN 更新是
$$h_t=\tanh(W_hh_{t-1}+W_xe_t+b),\qquad e_t=E(x_t).$$
$e_t\in\mathbb R^{d_x}$ 是当前 token 的 embedding,$h_t\in\mathbb R^{d_h}$ 是状态;$W_x\in\mathbb R^{d_h\times d_x}$、$W_h\in\mathbb R^{d_h\times d_h}$ 与 $b\in\mathbb R^{d_h}$ 是参数。tanh 对每个分量分别作用。在同一次前向处理里,参数不因位置变化;换了输入与旧状态,输出当然可以变化。训练更新参数,推理更新状态,两者不是同一件事。
以下暂略BOS,从该句开头取“我/昨天”前两项;“给了”的第三步续算见R15。取一个未训练的二维例子:$W_x=I_2$、$W_h=0.5I_2$、$b=0$、$h_0=(0,0)$。规定 $E(我)=(1,0)$、$E(昨天)=(0,1)$。于是
$$h_1=\tanh((1,0))=(0.761594,0),$$ $$h_2=\tanh((0.380797,1))=(0.363399,0.761594).$$
第二步必须用第一步的状态;不能每次都重新从 $h_0$ 开始。两条坐标只是构造数值,不代表“人物维”“时间维”等真实语义轴。真实 embedding 和递推参数由任务损失共同学习。
参考解释:CS224N 2026 RNNLM,PDF 物理 p23–25;CS231n Lecture 7 的递推单元与时间展开。
原课页采用记录:M09 状态更新与参数共享。页码均按PDF物理页计。
继续学习
本页自学核对:从指定零初态复算“我/昨天”两步;整理成 h₁、h₂,并注明本例略去 BOS。
若仍把变化状态当成每步不同参数,可进入《状态在流动,梯度可以停在边界》;动手时打开LAB01的“C · 共享参数的梯度到底加了几次?”:沿门禁日志检查前向状态更新,再在共享梯度小例核对同一参数的多次贡献。 状态模型训练另见实验路线B。