R15 · 展开的是计算,复用的是规则
R14已经算出前两个状态。这条延伸把同一规则的连续调用并排展开,区分新增计算位置、共享参数和输出放置方式。
状态 b0
“我/昨天/给了”按时间展开。先沿箭头确认第三步应取得h₂,而非h₀。
状态 b1
同一θ连接三个计算位置;E(给了)进入第三次调用,新增h₃。多一次计算不等于多一套权重。
状态 b2
输出可接每步或最后状态。观察输出布局与时间参数共享是两项不同选择。
公式与算例详情
把 RNN 沿时间展开,是把同一个更新函数的多次调用画出来。仍取同一句子开头的三个 token“我/昨天/给了”,暂略 BOS,从指定零初态开始。暂指定其输入向量为 $e_1=(1,0)$、$e_2=(0,1)$、$e_3=(1,1)$,沿用上一页的 $W_x=I$、$W_h=0.5I$、零偏置与零初态。前两步数值与上一页相同;第三步为
$$h_3=\tanh(0.5h_2+(1,1))=(0.827987,0.881130).$$
展开图里的 $f_\theta$ 不是三个可独立学习的网络。它们引用相同的参数,所以更长输入不会按长度增加参数量;运行时间和保存的激活却会增加。一个时间步仍要等前一个状态算完。
输出方式可以改变:语言模型用每个 $h_t$ 预测下一 token;句子分类可以读取最后状态并接分类头;逐词标注可以在多个位置输出标签。最后状态也可作为另一个网络的条件。骨架相似不表示监督目标相同,更不表示所有任务都只能依赖前缀。
此处向量是三个 token 的教学输入,不是事件图像编码。图画不是网络里的物理记忆,也不是本项目模型生成的预测。
原课页采用记录:M09 状态更新与参数共享、M14 双向、堆叠与其他序列任务。页码均按PDF物理页计。
继续学习
本页自学核对:接上“给了”再算 h₃,标出不变的更新参数;整理成共享参数与变化状态两列。
若展开图仍像几套独立网络,可进入《状态在流动,梯度可以停在边界》;动手时打开LAB01的“C · 共享参数的梯度到底加了几次?”:把各时间位置的贡献相加,并与有限差分比较;同时区分参数量与激活存储。 状态模型训练另见实验路线B。