最近读论文的时候看到文中经常用到集束搜索(beam search),可能很多人不懂这到底是个什么算法,其实很简单,顺便把贪心搜索(greedy search)也介绍一下。

贪心搜索(greedy search)

贪心搜索最为简单,直接选择每个输出的最大概率,直到出现终结符或最大句子长度。

集束搜索(beam search)

集束搜索是一种启发式图搜索算法,在图的解空间比较大的情况下,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。

具体过程为:使用广度优先策略在树的每一层建立搜索树,按照启发代价对节点进行排序,然后仅留下预先确定的个数(Beam Width-集束宽度)的节点,仅这些节点在下一层次继续扩展,其他节点就被剪掉了。(注意:如果集束宽度无穷大,那该搜索就是宽度优先搜索)

好处:减少了空间消耗,并提高了时间效率。

概念可能不好理解,下完下面的例子你就会发觉真的很简单。

假设字典为[a,b,c],beam size选择2,则如下图有:

  1. 在生成第1个词的时候,选择概率最大的2个词,那么当前序列就是a或b。
  2. 生成第2个词的时候,我们将当前序列a或b,分别与字典中的所有词进行组合,得到新的6个序列aa ab ac ba bb bc,然后从其中选择2个概率最高的,作为当前序列,即ab或bb。
  3. 不断重复这个过程,直到遇到结束符为止。最终输出2个概率最高的序列。

是不是很简单啊?

集束搜索(beam search)和贪心搜索(greedy search)相关推荐

  1. NLP自然语言处理 集束搜索(beam search)和贪心搜索(greedy search)

    https://blog.csdn.net/qq_16234613/article/details/83012046 https://blog.csdn.net/weixin_38937984/art ...

  2. 集束搜索beam search和贪心搜索greedy search

    https://blog.csdn.net/qq_16234613/article/details/83012046

  3. 贪心搜索(greedy search)、集束搜索(beam search)、随机采样(random sample)

    当我们训练完成一个自然语言生成模型后,需要使用这个模型生成新的语言(句子),如何生成这些句子,使用如下的方法:贪心搜索,集束搜索,随机搜索. 贪心搜索(greedy search)/采样(Sampli ...

  4. Greedy Search VS Beam Search 贪心搜索 vs 集束搜索

    在做NLP领域的NMT或者chatbot等方面的工作时,在进行inference(推理)的时候,经常会用到两种搜索方式,即Greedy Search和Beam Search. 1. Greedy Se ...

  5. 【NLP】选择目标序列:贪心搜索和Beam search

    构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于R ...

  6. Seq2Seq模型中的集束搜索(Beam Search)

    1. 引入 用Seq2Seq模型开发翻译系统时,假设输入一句法语,输出英文.在Decoder输出部分,选择不同的单词,输出(翻译)的结果也会不同. 这里用下图来举例说明: 一个法语句子,被Seq2Se ...

  7. Seq2Seq模型中的贪心搜索(Greedy Search)

    1. 引入 用Seq2Seq模型开发翻译系统时,假设输入一句法语,输出英文.在Decoder输出部分,选择不同的单词,输出(翻译)的结果也会不同. 这里用下图来举例说明: 一个法语句子,被Seq2Se ...

  8. Greedy search与beam search

    最近在看End-to-end Relation Extraction using LSTMs on Sequences and Tree Structures这篇文章时,看到此文在Entity det ...

  9. [DeeplearningAI笔记]序列模型3.2有条件的语言模型与贪心搜索的不可行性

    5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.2选择最可能的句子 Picking the most likely sentence condition lan ...

最新文章

  1. 微信公共平台接口开发--Java实现
  2. html选择器有哪些child,css3选择器child有哪些?css3选择器child用法详解
  3. yum 安装mysql的位置_Yum安装MySQL以及相关目录路径和修改目录
  4. Inject Dll 过程
  5. python显示界面后1秒自动隐藏_使用Python+Qt时解决QTreeWidget中的内容超出边界后自动隐藏的问题...
  6. [娱乐]华为HWT文件手动修改字体名称
  7. 网站订单销售统计电商后台前端模板
  8. 热力地图高德_HeatMap丨丨基于高德地图API制作热力图。
  9. KDE环境中文语言包安装问题
  10. bgfx入门练习2——找出DX,OpenGL驱动切换实现原理
  11. 元素偏移offset的常用属性
  12. 股票市场交易中的强化学习
  13. Go项目配置管理神器之viper使用详解
  14. python爬取税务局并将数据保存在Excel
  15. Pytorch简单实现seq2seq+Attention机器人问答
  16. WebStorm 2016.3.1 版本激活方法
  17. Java毕设项目共享充电宝系统(java+VUE+Mybatis+Maven+Mysql)
  18. 斐乐第五家高尔夫独立店东莞开业;康莱德酒店及度假村签约西安、南京和成都三家酒店 | 美通企业日报...
  19. LED的高显指是什么意思?
  20. 【论文】Tishby‘s talk about Information Bottleneck 翻译(一)

热门文章

  1. Linux创建用户和密码相关的命令useradd、groupadd、passwd和userdel应用
  2. 汽车行业数据防泄露解决方案
  3. 新能源汽车数据库-分类型/地区/级别月度销量2015-2021进出口数据
  4. rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
  5. 112.Android 简单的群发微信,群发文本和图片,一键群发
  6. pyqtgraph文档笔记(五)总结:几个类的理解( GraphicsView, GraphicsItem ,GraphicsObject, PlotWidget等)
  7. 对耦合电容、极间电容、旁路电容、去耦电容的理解小结
  8. matlab算kdj指标,KDJ指标(随机指标)详解
  9. java_系列3_数组
  10. uniapp微信浏览器H5授权微信登录