学习链接:https://zhuanlan.zhihu.com/p/93030328
链接:https://zhuanlan.zhihu.com/p/380462092
teacher forcing机制是怎样的?上个问题中我们给出的图示是最简单的Seq2Seq的示意图,其中忽略了很多细节。

这张图,展示了在训练时,seq2seq内部的详细结构。在Encoder端,我们将输入文本的词序列先经过embedding层转化成向量,喂进Encoder中,得到一个context vector。Decoder端的输入除了context vector以外,还将接受上一个时刻的输出。这里Decoder在训练和测试时是不一样的。在训练时,我们使用真实的目标文本,即“标准答案”作为输入(注意第一步使用一个特殊的字符,表示句子的开头)。每一步根据当前正确的输出词、上一步的隐状态来预测下一步的输出词。而在预测时,由于Decoder端此时没有所谓的“真实输出”或“标准答案”了,所以只能自产自销:每一步的预测结果,都送给下一步作为输入,直至输出就结束。[2]

我们称这两种模式,根据标准答案来decode的方式为teacher forcing,而根据上一步的输出作为下一步输入的decode方式为free running。teacher forcing机制是为了加快训练速度,因为在训练时如果没有任何的引导,一开始会完全是瞎预测,正所谓“一步错,步步错”,而且越错越离谱,训练起来就很费劲。但是如果在训练时全盘使用teacher forcing,模型难以学习到在出现错误时如何纠正自己,那么在预测时正确率也不会太高,因为如果出现预测错误,后面可能就错的越来越离谱了。更好训练办法是,设置一个概率p,每一步以概率p靠自己上一步的输来dec

Teacher Forcing 机制在 Seq2Seq 模型中用于加速训练,通过使用真实目标文本作为 Decoder 输入。在训练时,模型根据标准答案预测输出,而在预测时则依赖自己的预测结果。这有助于训练,但也可能导致预测错误累积。为平衡训练,通常会随机以一定概率结合标准答案和前一步预测进行解码。

1万+

被折叠的 条评论
为什么被折叠?



