1. 什么是Teacher Forcing

​ Teacher Forcing(下面简称tf)是一种快速有效地训练递归神经网络模型的方法,这个方法名字听着很高端,其实应用非常简单,就是使用上一时间步的输入的groud truth作为输入,而取代了真实的目标输入。该技术广泛使用在了机器翻译,文本摘要,图像描述( image captioning)等,在训练递归网络时,tf可以加快模型的收敛速度以及提升模型的不稳定性。

2.序列预测问题

​ 我们实际生活中的很多问题都是序列问题,就拿我们熟悉的机器翻译来说,它对应的就是一种源语言的序列到目标语言的序列转换问题,在这类型的任务中,由于序列是依次产生的,所以天然适合seq2seq结构,而这类型的任务,如果直接使用目标序列作为输入指导训练,则有着收敛慢,模型稳定性差的问题。

​ 以实际例子演示一下该方法的使用情况:

​ 假如我们有一个句子“ Your plan sounds good.”,我们希望输入当前的单词,可以得到下一个单词,比如当输入“plan”的时候,我们期待能够输出“good", 让我们演示一遍:

  1. 针对句子添加开始符号"sos"与终止符号"eos",变成 “ sos Your plan sounds good eos”

  2. 将“sos"送入模型,来产生第一个单词

  3. 假如模型模型产生的预测结果是“hello”,则很显然,模型输入错了,因为我们期待的输出是“Your”,

    输入单词 预测单词
    sos hello
  4. 在普通的序列预测中,显然是直接把预测的“hello”作为下一步的输入,这样做的话很显然模型已经偏离了轨道,并且每生成一个后续的单词都会受到惩罚。这使得学习速度变慢,模型不稳定。

    输入单词(普通的序列输入) 预测单词
    sos,hello
  5. 而采用tf的时候,我们不在使用预测的“hello”来作为输入,而是直接使用真实的groud truth “Your”作为输入,后续的步骤都可以采用这种方式。这样下来,该模型将可以快速学习正确的序列,或序列的正确统计属性。

输入单词 预测单词
sos,Your
sos, Your plan ? ?

3.注意点

​ tf虽然可以加快收敛,提升稳定性,但是这种方法也会导致模型在实际使用时,当生成的序列与模型在训练过程中看到的情况不同时,模型可能会很脆弱或受到限制,这是因为RNN的调理上下文(之前生成的样本序列)与训练期间看到的序列存在分歧。

​ 关于这个问题,有几种拓展方式来解决:

  1. 搜索候选输出序列

    这种方式是对每个单词的预测概率进行搜索,以生成一些可能的候选输出序列。其缺点是只适用于具有离散输出值的预测问题,不能用于实值输出。

    这个方法的典型例子就是机器翻译中的beam search。

  2. Curriculum Learning

    这种方法在训练过程中引入由先前时间步骤产生的输出,以鼓励模型学习如何纠正自己的错误。它可以通过随机选择使用groud truth或前一个时间步的生成输出作为当前时间步的输入来实现。在实际应用的时候,可以通过开始使用较高的tf率,后续逐渐降低tf率来改善效果。

    # curriculum learning代码片段
    use_teacher_forcing = random.random() < teacher_forcing_ratio
    for t in range(max_target_length):decoder_output, decoder_hidden, decoder_attn = self.decoder(decoder_input, decoder_hidden, encoder_outputs)decoder_outputs.append(decoder_output)decoder_input = tgt[t] if use_teacher_forcing else decoder_output.argmax(-1)
    

RNN中的Teacher Forcing相关推荐

  1. Teacher Forcing策略在RNN的应用

    简介 Teacher Forcing策略在RNN中经常被用到,例如machine translation.image caption.text summarization等语言模型任务. Teache ...

  2. 关于RNN teacher forcing若干问题

    文章目录 teacher forcing 1. teacher forcing要解决什么问题? 2. 什么是teacher forcing? 3. teacher-forcing 有什么缺点? 4. ...

  3. 一文弄懂关于循环神经网络(RNN)的Teacher Forcing训练机制

    文章目录 一 RNN在训练过程中的问题 二 RNN的两种训练模式 三 什么是Teacher Forcing 四 Free-Running vs Teacher Forcing 实例 4.1 Free- ...

  4. Teacher Forcing for Recurrent Neural Networks

    Teacher Forcing是一种用来快速而有效地训练循环神经网络模型的方法,这种方法以上一时刻的输出作为下一时刻的输入. 它是一种网络训练方法,对于开发用于机器翻译,文本摘要和图像字幕的深度学习语 ...

  5. python自然语言处理—Teacher Forcing

    Teacher Forcing RNN 在训练过程中的问题     训练迭代过程早期的 RNN 预测能力非常弱,几乎不能给出好的生成结果.如果某一个 unit 产生了 垃圾结果,必然会影响后面一片 u ...

  6. Teacher Forcing机制及Beam search详解

    RNN在训练过程中的问题 训练迭代过程早期的RNN预测能力非常弱,几乎不能给出好的生成结果.如果某一个unit产生了垃圾结果,必然会影响后面一片unit的学习.teacher forcing最初的mo ...

  7. Teacher forcing是什么? encoder-decoder框架的理解

    encoder-decoder框架,编码和解码是同时训练的,编码的输入和解码的输入,都是统一作为整体的输入数据,解码的输出作为整体的输出 Teacher forcing是什么? 目录 Teacher ...

  8. Guiding Teacher Forcing with Seer Forcing for Neural Machine Translation翻译

    摘要 虽然teacher forcing已成为神经机翻译的主要训练框架,但它通常只能基于过去的信息上进行预测,因此缺乏对未来信息的全局规划.为了解决这个问题,我们在训练期间将另一个被称为seer的解码 ...

  9. 关于Teacher Forcing、自回归和内部协变量偏移等概念梳理

    Teacher Forcing Teacher Forcing是一种训练神经网络生成模型的技术,通常应用于序列到序列(seq2seq)模型,特别是在机器翻译等任务中.它的基本思想是在训练时,将真实的目 ...

最新文章

  1. ACdream 1099——瑶瑶的第K大——————【快排舍半,输入外挂】
  2. JDK9为何要将String的底层实现由char[]改成了byte[]?
  3. Linux系统下RAID和LVM的实现
  4. 过去一年25个amazing node.js 开源项目(2018版本)
  5. C++并发编程实战---阅读笔记
  6. lua cURL使用笔记
  7. T2 Funcin T1,out T2(T1 arg)
  8. html地图动画效果图,【html】绚丽的HTML5地图分布动画DEMO演示
  9. PAT (Basic Level) Practice1011 A+B 和 C
  10. pc 浏览器最小字体12px
  11. springmvc配置拦截器及测试详解
  12. C#代码整洁之道:代码重构与性能提升
  13. springboot制作补丁包通用解决方案
  14. 银联网关支付 java版
  15. sqlite 多条件查询
  16. Windows设置访问白名单
  17. 陈佩斯曾受邀喜剧综艺:被酬劳吓的恍惚好几天
  18. hive的distribute by应用
  19. Gluster文件系统
  20. java判断字符串是字母或者数字组合

热门文章

  1. Sketch 快捷键速记表(中英对照)
  2. html 链接长宽,CSS实现长宽比的几种方案【转载】
  3. linux蓝牙鼠标唤醒电脑,蓝牙鼠标唤醒电脑,蓝牙鼠标怎么设置唤醒电脑
  4. MindAR初体验——一款js实现的AR库
  5. Win10专业版错误代码0xc0000225在吗修复?
  6. 【洛谷 2958】木瓜的丛林
  7. C语言的goto语句,scanf的注意点以及好玩的指令
  8. 疫情过后第一次线下考试感想
  9. 深信服AC路由部署模式,怎么启用为PN与总部机构为PN连接
  10. 《Python自然语言处理》——1.1 语言计算:文本和词汇