点击上方,选择星标置顶,每天给你送干货

阅读大概需要4分钟

跟随小博主,每天进步一丢丢

机器学习算法与自然语言处理出品

@公众号原创专栏作者 忆臻

学校 | 哈工大SCIR在读博士生

在sequence2sequence模型中,beam search的方法只用在测试的情况,因为在训练过程中,每一个decoder的输出是有正确答案的,也就不需要beam search去加大输出的准确率。

假设现在我们用机器翻译作为例子来说明,

我们需要翻译中文“我是中国人”--->英文“I am Chinese”

假设我们的词表大小只有三个单词就是I am Chinese。那么如果我们的beam size为2的话,我们现在来解释,

如下图所示,我们在decoder的过程中,有了beam search方法后,在第一次的输出,我们选取概率最大的"I"和"am"两个单词,而不是只挑选一个概率最大的单词。

然后接下来我们要做的就是,把“I”单词作为下一个decoder的输入算一遍得到y2的输出概率分布,把“am”单词作为下一个decoder的输入算一遍也得到y2的输出概率分布。

比如将“I”单词作为下一个decoder的输入算一遍得到y2的输出概率分布如下:

比如将“am”单词作为下一个decoder的输入算一遍得到y2的输出概率分布如下:

那么此时我们由于我们的beam size为2,也就是我们只能保留概率最大的两个序列,此时我们可以计算所有的序列概率:

“I I” = 0.4*0.3 "I am" = 0.4*0.6 "I Chinese" = 0.4*0.1

"am I" = 0.5*0.3 "am am" = 0.5*0.3 "am Chinese" = 0.5*0.4

我们很容易得出俩个最大概率的序列为 “I am”和“am Chinese”,然后后面会不断重复这个过程,直到遇到结束符为止。

最终输出2个得分最高的序列。

这就是seq2seq中的beam search算法过程,但是可能有些同学有一个疑问,就是但i-1时刻选择的单词不同的时候,下一时刻的输出概率分布为什么会改变?

这是由于解码的过程中,第i时刻的模型的输入,包括了第i-1时刻模型的输出,那么很自然在第i-1时刻模型的输出不同的时候,就会导致下一时刻模型的输出概率分布会不同,因为第

i-1时刻的输出作为参数影响了后一时刻模型的学习。

如下图用了一个slides的法语翻译为英文的例子,可以更容易理解上面的解释。

致谢:

凌志、刘洋、皓宇、萧瑟师兄

参考:谁能解释下seq2seq中的beam search算法过程?

交流学习,进群备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

【Beam Search】seq2seq中的beam search算法过程相关推荐

  1. seq2seq中的beam search算法过程

    在seq2seq模型中,我们以自然语言处理技术的集大成者机器翻译为例: 在模型训练好了之后,我们开始测试我们的模型(中文翻译成英文),比如Encoder中输入"我 是 中国 人"( ...

  2. H.264解码器中CAVLC码表查找算法的分析与优化

    0 引言    近年来,随着信息技术飞速发展和互联网的日益普及,尤其是以视频为信息主要来源的多媒体领域越来越受到人们的关注.H.264是ITU-T的视频编码专家组(VCEG)和ISO/IEC的活动图像 ...

  3. C++ text search文本检索在较长的文本段落中搜索单词的算法(附完整源码)

    C++ text search文本检索在较长的文本段落中搜索单词的算法 C++ text search文本检索在较长的文本段落中搜索单词的算法完整源码(定义,实现,main函数测试) C++ text ...

  4. 数据结构与算法(python):广度优先搜索(Breadth First Search,BFS)和深度优先算法(Depth First Search,DFS)

    参考自 MOOC数据结构与算法Python版 目录 一.广度优先搜索 1.1 BFS算法过程 1.2 广度优先搜索算法分析 二.深度优先搜索 2.1 骑士周游 2.1.1 问题定义 2.1.2 构建骑 ...

  5. 给定key值,在Binary Search Tree中查找最接近该键值的结点集合

    http://blog.csdn.net/zhouhao011280s/article/details/8044056 给定key值,在Binary Search Tree中查找最接近该键值的结点集合 ...

  6. C++Saddleback search鞍背搜索的实现算法(附完整源码)

    C++Saddleback search鞍背搜索的实现算法 C++Saddleback search鞍背搜索的实现算法完整源码(定义,实现,main函数测试) C++Saddleback search ...

  7. C++Jump Search跳转搜索的实现算法(附完整源码)

    C++Jump Search跳转搜索的实现算法 C++Jump Search跳转搜索的实现算法完整源码(定义,实现,main函数测试) C++Jump Search跳转搜索的实现算法完整源码(定义,实 ...

  8. c++Hash Search哈希搜索的实现算法(附完整源码)

    C++Hash Search哈希搜索的实现算法 C++Hash Search哈希搜索的实现算法完整源码(定义,实现,main函数测试) C++Hash Search哈希搜索的实现算法完整源码(定义,实 ...

  9. python中search和match的区别_Python中正则表达式match()、search()函数及match()和search()的区别详解...

    match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找 ...

  10. 【整理】Python中的re.search和re.findall之间的区别和联系 + re.finall中带命名的组,不带命名的组,非捕获的组,没有分组四种类型之间的区别

    之前自己曾被搞晕过很多次. 后来使用这些函数次数多了之后,终于比较清楚的弄懂了两者之间的区别和关系了. 尤其是一些细节方面的注意事项了. 在看下面的总结和代码之前,请先确保你对如下基本概念已经有所了解 ...

最新文章

  1. oracle异地迁移,数据泵实现Oracle数据迁移到异地库
  2. 用两种不同的方法导出ORACLE 查询数据为CSV 文件 (python 代码 与 使用 utl_file 包)
  3. java安全初始化_java安全编码指南之:声明和初始化
  4. AT2165-[AGC006D]MedianPyramidHard【二分,贪心】
  5. 可以用在任何人身上:百战百胜人生10大成功秘诀
  6. 团购“罗生门”渐退行业舞台 千团大战仍需企业自律
  7. 中国凝血测试耗材行业市场供需与战略研究报告
  8. 在Java中从字符串中删除空格
  9. android serviceconnection unbind流程,Android Service 再次 unbindSrvice 时的问题
  10. Centos7 卸载自带的OpenJDK
  11. Jeff Dean 的传奇人生:超级工程师们拯救谷歌
  12. iOS 视频边下边播(缓存,预加载)
  13. Calendars and Reminders
  14. Raft协议中文翻译(1)
  15. 产品岗校招总结:6月份决心做产品,拿到年薪20+W的offer!
  16. vscode 开发 Java web 急速教程
  17. Abp Vnext新增模块
  18. 跨境电商如何用Facebook社媒平台开发海外精准客户
  19. HAL库教程14:查表法测量NTC热敏电阻
  20. BSCI认证咨询,2021年开始BSCI上新平台系统,旧平台系统停止使用

热门文章

  1. 深度神经网络:特点、问题及解决
  2. MYSQL中5.7.10ROOT密码及创建用户
  3. 获取当前时间---年月日时分秒------iOS
  4. css分类及其它技巧
  5. J2EE Architecture(6)
  6. Leetcode(337)-打家劫舍III
  7. spring 容器的理论知识
  8. Zookeeper启动失败,报错 can not open chanel to 2
  9. C#调用java类、jar包方法
  10. Coursera ML 逻辑回归与正则化