RNN中的Teacher Forcing
1. 什么是Teacher Forcing
Teacher Forcing(下面简称tf)是一种快速有效地训练递归神经网络模型的方法,这个方法名字听着很高端,其实应用非常简单,就是使用上一时间步的输入的groud truth作为输入,而取代了真实的目标输入。该技术广泛使用在了机器翻译,文本摘要,图像描述( image captioning)等,在训练递归网络时,tf可以加快模型的收敛速度以及提升模型的不稳定性。
2.序列预测问题
我们实际生活中的很多问题都是序列问题,就拿我们熟悉的机器翻译来说,它对应的就是一种源语言的序列到目标语言的序列转换问题,在这类型的任务中,由于序列是依次产生的,所以天然适合seq2seq结构,而这类型的任务,如果直接使用目标序列作为输入指导训练,则有着收敛慢,模型稳定性差的问题。
以实际例子演示一下该方法的使用情况:
假如我们有一个句子“ Your plan sounds good.”,我们希望输入当前的单词,可以得到下一个单词,比如当输入“plan”的时候,我们期待能够输出“good", 让我们演示一遍:
针对句子添加开始符号"sos"与终止符号"eos",变成 “ sos Your plan sounds good eos”
将“sos"送入模型,来产生第一个单词
假如模型模型产生的预测结果是“hello”,则很显然,模型输入错了,因为我们期待的输出是“Your”,
输入单词 预测单词 sos hello 在普通的序列预测中,显然是直接把预测的“hello”作为下一步的输入,这样做的话很显然模型已经偏离了轨道,并且每生成一个后续的单词都会受到惩罚。这使得学习速度变慢,模型不稳定。
输入单词(普通的序列输入) 预测单词 sos,hello ? 而采用tf的时候,我们不在使用预测的“hello”来作为输入,而是直接使用真实的groud truth “Your”作为输入,后续的步骤都可以采用这种方式。这样下来,该模型将可以快速学习正确的序列,或序列的正确统计属性。
输入单词 | 预测单词 |
---|---|
sos,Your | ? |
sos, Your plan | ? ? |
3.注意点
tf虽然可以加快收敛,提升稳定性,但是这种方法也会导致模型在实际使用时,当生成的序列与模型在训练过程中看到的情况不同时,模型可能会很脆弱或受到限制,这是因为RNN的调理上下文(之前生成的样本序列)与训练期间看到的序列存在分歧。
关于这个问题,有几种拓展方式来解决:
搜索候选输出序列
这种方式是对每个单词的预测概率进行搜索,以生成一些可能的候选输出序列。其缺点是只适用于具有离散输出值的预测问题,不能用于实值输出。
这个方法的典型例子就是机器翻译中的beam search。
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相关推荐
- Teacher Forcing策略在RNN的应用
简介 Teacher Forcing策略在RNN中经常被用到,例如machine translation.image caption.text summarization等语言模型任务. Teache ...
- 关于RNN teacher forcing若干问题
文章目录 teacher forcing 1. teacher forcing要解决什么问题? 2. 什么是teacher forcing? 3. teacher-forcing 有什么缺点? 4. ...
- 一文弄懂关于循环神经网络(RNN)的Teacher Forcing训练机制
文章目录 一 RNN在训练过程中的问题 二 RNN的两种训练模式 三 什么是Teacher Forcing 四 Free-Running vs Teacher Forcing 实例 4.1 Free- ...
- Teacher Forcing for Recurrent Neural Networks
Teacher Forcing是一种用来快速而有效地训练循环神经网络模型的方法,这种方法以上一时刻的输出作为下一时刻的输入. 它是一种网络训练方法,对于开发用于机器翻译,文本摘要和图像字幕的深度学习语 ...
- python自然语言处理—Teacher Forcing
Teacher Forcing RNN 在训练过程中的问题 训练迭代过程早期的 RNN 预测能力非常弱,几乎不能给出好的生成结果.如果某一个 unit 产生了 垃圾结果,必然会影响后面一片 u ...
- Teacher Forcing机制及Beam search详解
RNN在训练过程中的问题 训练迭代过程早期的RNN预测能力非常弱,几乎不能给出好的生成结果.如果某一个unit产生了垃圾结果,必然会影响后面一片unit的学习.teacher forcing最初的mo ...
- Teacher forcing是什么? encoder-decoder框架的理解
encoder-decoder框架,编码和解码是同时训练的,编码的输入和解码的输入,都是统一作为整体的输入数据,解码的输出作为整体的输出 Teacher forcing是什么? 目录 Teacher ...
- Guiding Teacher Forcing with Seer Forcing for Neural Machine Translation翻译
摘要 虽然teacher forcing已成为神经机翻译的主要训练框架,但它通常只能基于过去的信息上进行预测,因此缺乏对未来信息的全局规划.为了解决这个问题,我们在训练期间将另一个被称为seer的解码 ...
- 关于Teacher Forcing、自回归和内部协变量偏移等概念梳理
Teacher Forcing Teacher Forcing是一种训练神经网络生成模型的技术,通常应用于序列到序列(seq2seq)模型,特别是在机器翻译等任务中.它的基本思想是在训练时,将真实的目 ...
最新文章
- ACdream 1099——瑶瑶的第K大——————【快排舍半,输入外挂】
- JDK9为何要将String的底层实现由char[]改成了byte[]?
- Linux系统下RAID和LVM的实现
- 过去一年25个amazing node.js 开源项目(2018版本)
- C++并发编程实战---阅读笔记
- lua cURL使用笔记
- T2 Funcin T1,out T2(T1 arg)
- html地图动画效果图,【html】绚丽的HTML5地图分布动画DEMO演示
- PAT (Basic Level) Practice1011 A+B 和 C
- pc 浏览器最小字体12px
- springmvc配置拦截器及测试详解
- C#代码整洁之道:代码重构与性能提升
- springboot制作补丁包通用解决方案
- 银联网关支付 java版
- sqlite 多条件查询
- Windows设置访问白名单
- 陈佩斯曾受邀喜剧综艺:被酬劳吓的恍惚好几天
- hive的distribute by应用
- Gluster文件系统
- java判断字符串是字母或者数字组合