Teacher Forcing技术

以一个seq2seq模型为例,某一时刻t应该输出”you"这个词,但却错误的输出了“I”,那么如果将错误的输出传递给下一个时间序列,必然会影响接下来的输出,这个时候就有以下的策略。

两种策略为:

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

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

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

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

Teacher Forcing的思想就是两者之间,有一定概率用上一次预测的词或者是上一个正确的词作为输入。

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值