S09 · 参考前缀、预测与共享参数的训练
完整生成已建立。训练需要同时回答两个问题:当前预测合法地看见什么,以及译文标签如何影响共享参数。
状态 b0
训练输入BOS I gave her a book yesterday .,标签I gave her a book yesterday . EOS;gave列预测her。
状态 b1
独立输出头给定logits(0,ln2,ln3),目标book概率1/2,CE为ln2≈.6931。
状态 b2
多个目标位置分别得到损失,沿词表、decoder与源表示回传,累积到共享参数。
状态 b3
训练用已知参考前缀;生成用已选词,不读取未知未来,直到EOS。
公式与算例详情
完整训练输入为BOS I gave her a book yesterday .,逐位置标签为I gave her a book yesterday . EOS。源句$x$在所有预测中可见。预测her的列只接收到BOS、I、gave形成的目标历史;参考her用于损失,不能送给同一次预测节点。teacher forcing使用正确已知前缀,并不授权读取当前标签或未来目标。
本页输出接口手算刻意另取前缀I gave her a,三候选her / a / book的logits设为$(0,\ln2,\ln3)$,不宣称由前页二维RNN真实运行所得。softmax为$(1/6,1/3,1/2)$;标签book的损失$L=-\ln(1/2)=\ln2\approx.6931$ nats,logit梯度$p-y=(1/6,1/3,-1/2)$。训练沿链式法则回到输出头、循环参数和embedding;共享参数汇总多个位置的影响。
对不同长度序列用padding时,只在有效目标token上汇总损失,EOS计入而PAD排除。完整NLL、PPL与训练/验证划分在主题正文和LAB01。teacher-forced NLL与自由生成整句精确匹配回答不同问题,不能把一次argmax命中或训练loss下降直接当作翻译忠实保证。
生成时没有正确未来译文可接,只能接回自己的选择;早先选择会影响后续前缀分布。这个区别为后面的搜索与错误诊断保留了具体问题,而不是预先认定所有错误都源于自馈。