Beam Search(集束搜索/束搜索)

找遍百度也没有找到关于Beam Search的详细解释,只有一些比较泛泛的讲解,于是有了这篇博文。

首先给出wiki地址:http://en.wikipedia.org/wiki/Beam_search

1.简介

Beam Search(集束搜索)是一种启发式图搜索算法,通常用在图的解空间比较大的情况下,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。这样减少了空间消耗,并提高了时间效率,但缺点就是有可能存在潜在的最佳方案被丢弃,因此Beam Search算法是不完全的,一般用于解空间较大的系统中。

2.流程

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

  • 将初始节点插入到list中,
  • 将给节点出堆,如果该节点是目标节点,则算法结束;
  • 否则扩展该节点,取集束宽度的节点入堆。然后到第二步继续循环。
  • 算法结束的条件是找到最优解或者堆为空。

集束宽度可以是预先定好的,也可以是变动的,可以先按照一个最小的集束宽度进行搜索,如果没有找到合适的解,再扩大集束宽度再找一遍。

Ps. 个人认为集束搜索方法其实提供了一种找最优解的思路,就是说在适当的情况下,可以剪掉一些可信度低的路径,在实际使用中,可以每一层的集束宽度不一致,比如在初始的一些层次中多保留一些结果,在后边就可以放心大胆的进行剪枝。当然也可以活学活用,可以结合深度优先算法,通过回溯,可以找到最优解。

3.应用

Beam Search(集束搜索)多用在一些大型系统中,比如机器翻译系统,语音识别系统等,因为这些系统中的数据集可能非常大,而且结果也没有唯一正确的解,系统用最快的方式找到最接近正确的解才是系统的目标。

Beam Search(集束搜索/束搜索)相关推荐

  1. java实现beamsearch_Beam Search(集束搜索/束搜索)

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

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

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

  3. Beam Search集束搜索

    在Seq2Seq解码部分中,常用到Beam Search.每个时刻它会保存b(beam size)个概率最大的选择作为当前的最佳选择,然后解码下一时刻时,继续选择和之前保存的b个选择组合起来后的概率最 ...

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

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

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

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

  6. 机器学习(二十三)——Beam Search, NLP机器翻译常用评价度量, 模型驱动 vs 数据驱动

    https://antkillerfarm.github.io/ Beam Search Beam Search(集束搜索)是一种启发式图搜索算法,通常用在图的解空间比较大的情况下,为了减少搜索所占用 ...

  7. Teacher Forcing机制及Beam search详解

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

  8. Beam Search(集束搜索)算法

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

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

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

最新文章

  1. gentoo下使能subversion自动补全
  2. Ganglia 应用实践
  3. 【pmcaff】2014互联网公司薪资排行榜
  4. Boost:boost::source_location的用法测试程序
  5. 【pyinstaller打包pyqt5编写的项目为exe(脱离环境可运行)】
  6. Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)题解
  7. cif是目的港交货吗_刚接手出口业务,搞不懂FOB? CIF? 为你科普→
  8. #54 partition a sequence
  9. 让网络更轻盈——网络功能虚拟化技术的现状和未来(中兴通讯)
  10. vscode好用的扩展及常用的快捷键
  11. bind 跟服务器修改,Linux下使用Bind搭建域名服务器
  12. matlab实现BCC异或,BCC校验(异或校验)计算
  13. 大型网站技术架构 读书笔记 (二) 大型网站架构模式
  14. 摄氏度符号英文计算机语言,温度表示-摄氏度怎样用英文表示温度?给几个例子,好吗? 爱问知识人...
  15. 资源变现微信小程序安装教程
  16. 【html】css样式
  17. 易语言 给程序加上记住账号功能
  18. Bootstrap(10) 进度条媒体对象和 Well 组件
  19. MD5 加密安全吗?
  20. 最大子序列之和(C语言)

热门文章

  1. linux如何查看centos版本信息,怎么查看已安装的CentOS版本信息
  2. 查看Centos 版本
  3. linux oracle 更换ip,Linux 修改IP地址和网关
  4. dateformat 返回类型_详解Java中格式化日期的DateFormat与SimpleDateFormat类
  5. core.js是什么---kalrry
  6. ntpdate同步更新时间
  7. 记录一次寻4399加密信息解密过程
  8. 微店调整交易手续费 借记卡和信用卡支付都将收取0.6%费用
  9. php 取得地址中的参数值,获取当前请求的URL的地址、参数、参数值、各种属性...
  10. 运营商劫持ajax请求