恒源云_Teacher Forcing训练小技巧来啦~

Posted AI酱油君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了恒源云_Teacher Forcing训练小技巧来啦~相关的知识,希望对你有一定的参考价值。

文章来源 | 恒源云社区

原文地址 | Teacher Forcing

原文作者 | Mathor


年底啦年底啦~要放假啦放假了~
不整大活,搞点小内容分享一下吧!

正文开始

本文主要介绍一下Teacher Forcing这个训练过程中的技巧

以Seq2Seq为例,在训练过程中, t 0 t_0 t0​ 时刻Decoder的输入是"“,输出可能并不是正确的结果"the”,比方说输出了一个错误的结果"like"。那么问题就来了,到了 t 1 t_1 t1时刻,应该继续以正确的单词"the"作为输入,还是将上一时刻 t 0 t_0 t0的输出"like"作为输入呢?

其实上面的问题,涉及到两种完全不同的训练方式

  1. 不管上一时刻输出是什么,当前时刻的输入总是规定好的,按照给定的target进行输入
  2. 当前时刻的输入和上一时刻的输出,是有关联的。具体来说就是,当前时刻的输入就是上一时刻的输出

如果要用比较不太严谨的比喻来说,第一种训练方式相当于就是小明学习的时候旁边坐了一位学霸,当发现小明在做序列生成题目的时候, 每一步都把上一步的正确答案给他偷看。那么小明当然只需要顺着上一步的答案的思路,计算出这一步的结果就行了。这种做法,比起自己每一步都瞎猜, 当然能够有效的避免误差进一步放大,同时在学习前期还能通过学霸辅导的这种方式快速学到很多的知识。

但是第一种训练方式存在以下的问题:

  1. 在解码的时候生成的字符都会受到 Ground-Truth 的约束,希望模型生成的结果都必须和参考句一一对应。这种约束在训练过程中减少模型发散,加快收敛速度。但是一方面也扼杀了翻译多样性的可能
  2. 在这种约束下,还会导致一种叫做 Overcorrect(矫枉过正) 的问题。例如:
  1. 待生成句的Reference为: “We should comply with the rule.”
  2. 模型在解码阶段中途预测出来:“We should abide”
  3. 然而按照规定,将第三个ground-truth “comply” 作为第四步的输入。那么模型根据以往学习的pattern,有可能在第四步预测到的是 “with”
  4. 模型最终的生成变成了 “We should abide with”
  5. 事实上,“abide with” 用法是不正确的,但是由于ground-truth “comply” 的干扰,模型处于矫枉过正的状态,生成了不通顺的语句

如果使用第二种方式,其中只要一步预测错,后面的预测就会越来越跑偏,很难收敛

Teacher Forcing正好介于上述两种训练方法之间。具体来说就是,训练过程中的每个时刻,有一定概率使用上一时刻的输出作为输入,也有一定概率使用正确的target作为输入

可以参考下面的伪代码

teacher_forcing_ratio = 0.5
teacher_forcing = random.random() < teacher_forcing_ratio
if teacher_forcing:
    pass
else:
    pass

以上是关于恒源云_Teacher Forcing训练小技巧来啦~的主要内容,如果未能解决你的问题,请参考以下文章

恒源云(Gpushare)_自动化训练小技巧白送给你,不要吗?

恒源云_CV训练时容易忽视的数据标签问题

恒源云(GPUSHARE)_超越预训练 NLP 的模型来喽

恒源云(GPUSHARE)_超越预训练 NLP 的模型来喽

恒源云_替代MLM的预训练任务,真的超简单吗?

恒源云(GPUSHARE)_替代MLM的预训练任务,真的超简单吗?