RNN在训练过程中的问题

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

RNN的两种训练模式

  • free-running mode
  • teacher-forcing mode

free-running mode就是常见的那种训练网络的方式: 上一个state的输出作为下一个state的输入。而Teacher Forcing是一种快速有效地训练循环神经网络模型的方法。

什么是Teacher Forcing

它是一种网络训练方法,对于开发用于机器翻译,文本摘要,图像字幕的深度学习语言模型以及许多其他应用程序至关重要。它每次不使用上一个state的输出作为下一个state的输入,而是直接使用训练数据的标准答案(ground truth)的对应上一项作为下一个state的输入。

Teacher Forcing的缺点及其解决办法

缺点

因为依赖标签数据,在训练过程中,模型会有较好的效果,但是在测试的时候因为不能得到ground truth的支持,所以如果目前生成的序列在训练过程中有很大不同,模型就会变得脆弱。
也就是说,这种模型的cross-domain能力会更差,也就是如果测试数据集与训练数据集来自不同的领域,模型的performance就会变差。

解决办法:集束搜索(Beam Search)

在预测单词这种离散值的输出时,一种常用方法是对词表中每一个单词的预测概率执行搜索,生成多个候选的输出序列。
这个方法常用于机器翻译(MT)等问题,以优化翻译的输出序列。
beam search是完成此任务应用最广的方法,通过这种启发式搜索(heuristic search),可减小模型学习阶段performance与测试阶段performance的差异。

如何通俗的理解beam search?

假设一个搜索任务

  • exhaustive search(穷举搜索)

最直观的方法就是穷举所有可能的输出序列,从所有的排列组合中找到输出条件概率最大的序列。穷举搜索能保证全局最优,但计算复杂度太高,当输出词典稍微大一点根本无法使用。

  • greedy search

贪心算法每一步选择中都采取在当前状态下最好或最优的选择,通过这种局部最优策略期望产生全局最优解。但是期望是好的,能不能实现是另外一回事了。贪心算法本质上没有从整体最优上加以考虑,并不能保证最终的结果一定是全局最优的。但是相对穷举搜索,搜索效率大大提升。

  • beam search

beam search是对greedy search的一个改进算法。相对greedy search扩大了搜索空间,但远远不及穷举搜索指数级的搜索空间,是二者的一个折中方案。
beam search有一个超参数beam size(束宽) 。第一个时间步长,选取当前条件概率最大的 n个词,当做候选输出序列的第一个词。之后的每个时间步长,基于上个步长的输出序列,挑选出所有组合中条件概率最大的 n 个,作为该时间步长下的候选输出序列。始终保持 n个候选。最后从 n 个候选中挑出最优的。

结论

beam search不保证全局最优,但是比greedy search搜索空间更大,一般结果比greedy search要好。greedy search 可以看做是 beam size = 1时的 beam search。

Teacher Forcing机制及Beam search详解相关推荐

  1. Exhaustive search 和 Beam search 详解(图文并茂)

    1.Exhaustive search decoding Exhaustive search :也称为穷举法 我们理想的翻译序列 y 能够使如下条件概率最大 Exhaustive search 方法是 ...

  2. 第43课: Spark 1.6 RPC内幕解密:运行机制、源码详解、Netty与Akka等

    第43课: Spark 1.6 RPC内幕解密:运行机制.源码详解.Netty与Akka等 Spark 1.6推出了以RpcEnv.RPCEndpoint.RPCEndpointRef为核心的新型架构 ...

  3. 【JVM】Java垃圾回收机制(GC)详解

    Java垃圾回收机制(GC)详解 一.为什么需要垃圾回收? 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收.除非内存无限大,我们可以任性的分配不回收,但是事实并非如 ...

  4. linux内存管理机制以及free命令详解

    linux内存管理机制以及free命令详解 一.linux内存管理机制 1.物理内存和虚拟内存 直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存 ...

  5. Mapreduce源码分析(一):FileInputFormat切片机制,源码详解

    FileInputFormat切片机制,源码详解 1.InputFormat:抽象类 只有两个抽象方法 public abstract List<InputSplit> getSplits ...

  6. Android签名机制之---签名验证过程详解

    一.前言 今天是元旦,也是Single Dog的嚎叫之日,只能写博客来祛除寂寞了,今天我们继续来看一下Android中的签名机制的姊妹篇:Android中是如何验证一个Apk的签名.在前一篇文章中我们 ...

  7. 基于spring security实现vue2前后端分离的双token刷新机制(完整代码详解,含金量拉满!)

    目录 一.前言: 核心功能概要: 通过加密算法创建一个用户: 二.后端 代码详解: 1.代码整体结构: 2.所需依赖: 3.UserDetailServiceImpl拦截用户登陆: 4.所需工具类 4 ...

  8. Qt 信号和槽机制 优点 效率的详解

    一.信号和槽机制 Qt提供了信号和槽机制用于完成界面操作的响应,是完成任意两个Qt对象之间的通信机制. 其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数. 二..信号和槽机制的 ...

  9. javascript运行机制之执行顺序详解

    JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.那么JavaScript是怎么来进行解析的吗?它的执行顺序又 ...

最新文章

  1. svn服务器搭建和使用 ubuntu_Ubuntu下 SVN 服务器搭建及使用
  2. 50万买只波士顿动力机器狗,只为训练它“尿”啤酒,还让女朋友尝尝
  3. matlab 添加环境变量,CentOS 添加环境变量的三种方法
  4. 第k大的数 java_一道算法题:第K大的数
  5. netty系列之:自动重连
  6. (十)深入浅出TCPIP之网络阻塞和非阻塞
  7. DBackup环境部署linux,linux_BackupPC 安装部署
  8. 《Spring 3.0就这么简单》——1.5 业务层
  9. .Net File类的操作
  10. Deploy a replica set
  11. 【新闻】本人新书《Java多线程编程实战指南(核心篇)》已出版上市
  12. 参考 雷霄骅https://blog.csdn.net/leixiaohua1020/article/list/28
  13. 文本数据挖掘-----词向量
  14. [答疑]能举一个人取代业务实体的例子吗
  15. 药店不停业盘点操作流程,海典盘点机PDA操作使用说明
  16. Petya勒索病毒(2016.4月样本)分析笔记
  17. 微信程序开发小程序交互
  18. 深度学习-图片识别(上)
  19. 基于VMware 的 hive安装与启动
  20. Vue如何使用iconfont(阿里图标库)

热门文章

  1. 阿里校招内推一面问题
  2. 知乎好物推荐,只能再做一年了?
  3. yzm10的职业生涯
  4. C语言字符常量、字符串常量、字符数组使用
  5. 你知道现在各行各业对学历的要求有多高吗?如果学历不够,怎么办?
  6. SVG技术在存储Tribon图纸中的研究
  7. 【扩频通信】第六章 扩频码同步捕获
  8. 感知机——成长的烦恼
  9. 2007年微型计算机内容,2007年4月自学考试自考全国电力系统微型计算机继电保护历年试卷试题真题...
  10. 合规的股票程序化交易接口实现主要有哪几种方式?