R25 · 训练与生成,换的是谁提供下一步输入
源条件已经接好。现在保持同一句源文本和同一模型,比较训练与生成时,目标端下一步的输入分别由谁提供。
状态 b0
源句到初态的定位不变,目标输入与标签错开一位。先找到gave对应her的监督位置。
状态 b1
各列新增下一词交叉熵并汇总;整句提供多处监督,RNN状态仍按先后计算。
状态 b2
生成支路把自己选出的token回送;错误选择也成为下一步条件。比较变化的是输入来源,而非模型参数被重新训练。
公式与算例详情
训练样本包含完整平行句,但每个预测只使用合法条件。输入为 BOS、I、gave、her、a、book、yesterday、句号;对应目标为 I、gave、her、a、book、yesterday、句号、EOS。目标序列相对输入错开一位。
$$L(x,y)=-\sum_{i=1}^{m+1}\log p_\theta(y_i\mid y_{<i},x),\qquad y_{m+1}=\mathrm{EOS}.$$
Teacher forcing 说的是用真实前一个目标 token 作为下一次输入。监督标签可以被训练程序读取来计算损失,却不能泄漏到同一预测节点的前向输入。对 RNN,状态仍要按时间递推;整份目标已知并不会取消这一计算依赖。
普通自回归生成时没有真实后续译文。先输入 BOS,得到下一词分布,采用 greedy、采样或其他解码策略选择一个 token,再把它输入下一步。若选择EOS则停止;安全的实现还需最大长度限制,并记录哪些输出因长度上限终止。模型在自己的错误前缀下可能进入训练时少见的状态,这与训练loss的定义不同。但第一个分歧之前若前缀相同,首错就不能归因为先前自馈错误的积累。
训练优化参数以提高参考译文条件概率;解码算法在固定参数下寻找或采样输出。不能用“beam大一点”替代训练,也不能把一次高概率输出直接等同于翻译质量。参考:N-RNN PDF p53、p55–56;Sutskever et al. 2014,§2–3.2。
原课页采用记录:M10 RNN怎样训练、M11 训练与生成如何不同、M15 变长输入怎样变成变长输出。页码均按PDF物理页计。
继续学习
本页自学核对:画出同一句翻译的 teacher forcing 和自馈输入;整理成两种输入/目标表。
若想知道首个错误是否来自自馈积累,可进入《路径 A:分数进步了,为什么这一句仍然错》;动手时打开LAB02的“路径A · 分数进步了,为什么这一句仍然错”:在同一存档失败样本上比真前缀与自馈前缀,先定位第一分歧,再解释后续概率变化。 实施范围见实验路线D。