Teacher Forcing机制及Beam search详解
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详解相关推荐
- Exhaustive search 和 Beam search 详解(图文并茂)
1.Exhaustive search decoding Exhaustive search :也称为穷举法 我们理想的翻译序列 y 能够使如下条件概率最大 Exhaustive search 方法是 ...
- 第43课: Spark 1.6 RPC内幕解密:运行机制、源码详解、Netty与Akka等
第43课: Spark 1.6 RPC内幕解密:运行机制.源码详解.Netty与Akka等 Spark 1.6推出了以RpcEnv.RPCEndpoint.RPCEndpointRef为核心的新型架构 ...
- 【JVM】Java垃圾回收机制(GC)详解
Java垃圾回收机制(GC)详解 一.为什么需要垃圾回收? 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收.除非内存无限大,我们可以任性的分配不回收,但是事实并非如 ...
- linux内存管理机制以及free命令详解
linux内存管理机制以及free命令详解 一.linux内存管理机制 1.物理内存和虚拟内存 直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存 ...
- Mapreduce源码分析(一):FileInputFormat切片机制,源码详解
FileInputFormat切片机制,源码详解 1.InputFormat:抽象类 只有两个抽象方法 public abstract List<InputSplit> getSplits ...
- Android签名机制之---签名验证过程详解
一.前言 今天是元旦,也是Single Dog的嚎叫之日,只能写博客来祛除寂寞了,今天我们继续来看一下Android中的签名机制的姊妹篇:Android中是如何验证一个Apk的签名.在前一篇文章中我们 ...
- 基于spring security实现vue2前后端分离的双token刷新机制(完整代码详解,含金量拉满!)
目录 一.前言: 核心功能概要: 通过加密算法创建一个用户: 二.后端 代码详解: 1.代码整体结构: 2.所需依赖: 3.UserDetailServiceImpl拦截用户登陆: 4.所需工具类 4 ...
- Qt 信号和槽机制 优点 效率的详解
一.信号和槽机制 Qt提供了信号和槽机制用于完成界面操作的响应,是完成任意两个Qt对象之间的通信机制. 其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数. 二..信号和槽机制的 ...
- javascript运行机制之执行顺序详解
JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.那么JavaScript是怎么来进行解析的吗?它的执行顺序又 ...
最新文章
- svn服务器搭建和使用 ubuntu_Ubuntu下 SVN 服务器搭建及使用
- 50万买只波士顿动力机器狗,只为训练它“尿”啤酒,还让女朋友尝尝
- matlab 添加环境变量,CentOS 添加环境变量的三种方法
- 第k大的数 java_一道算法题:第K大的数
- netty系列之:自动重连
- (十)深入浅出TCPIP之网络阻塞和非阻塞
- DBackup环境部署linux,linux_BackupPC 安装部署
- 《Spring 3.0就这么简单》——1.5 业务层
- .Net File类的操作
- Deploy a replica set
- 【新闻】本人新书《Java多线程编程实战指南(核心篇)》已出版上市
- 参考 雷霄骅https://blog.csdn.net/leixiaohua1020/article/list/28
- 文本数据挖掘-----词向量
- [答疑]能举一个人取代业务实体的例子吗
- 药店不停业盘点操作流程,海典盘点机PDA操作使用说明
- Petya勒索病毒(2016.4月样本)分析笔记
- 微信程序开发小程序交互
- 深度学习-图片识别(上)
- 基于VMware 的 hive安装与启动
- Vue如何使用iconfont(阿里图标库)