训练前缀、EOS 与 PAD:损失究竟算在哪些位置
课堂上下文:从哪个问题来
先沿画面指出视觉特征进入哪里,再指出已有文字与下一词目标。连续说明展开 shifted target、EOS、PAD 和实际生成,LAB13 提供已保存的实验结果。理解本页可先把文字预测器作为输入输出模块;整数移位只演示目标构造,完整图像描述还需要图像条件与实际生成。
假设一条参考句为 a red square,词序列写成 [BOS,a,red,square,EOS]。训练输入去掉最后一项,目标去掉第一项。两者一一对齐:
| 已允许看到的文字 | 当前目标 |
|---|---|
| BOS | a |
| BOS a | red |
| BOS a red | square |
| BOS a red square | EOS |
如果批中还有更长句子,就给短句末尾补 PAD,使张量长度一致。PAD 只是存储约定,不是要生成的文字;EOS 却是有效的停止目标。掩掉 PAD 时把 EOS 一起掩掉,会抹去何时结束的监督。
词损失可写为 ,其中 表示目标不是 PAD。分母按有效词计数,不按补齐后的格数计数。LAB13 的 prefix=Y[:,:-1]、targets=Y[:,1:] 和 ignore_index=PAD 对应这三个选择。
训练时喂真实前缀叫 teacher forcing。推理时前缀来自模型自己:若先误说 blue,后续就必须在 blue 的条件下继续,不能偷偷换回 red。因此保留集的逐词交叉熵与自由生成的整句正确率要分别读;两者评价的输入条件不同。