BeamSearch(集束算法)

参考文献:https://www.zhihu.com/question/54356960

https://cloud.tencent.com/developer/article/1612664

简介:BeamSearch是属于一个动态规划的算法,使得模型生成的预测值,通过动态规划希望找到全局最优的一个算法。我们通常做生成,文本生成他是一个自回归的(也有并行的,但是少效果不好,生成的速度快),所以我们一般都是在生成的时候用SoftMax算法取最大的一个概率作为生成,然后作为下一个的输入。这样就是我们的GreedySearch(贪心搜索算法)。BeamSearch就是让我们生成的联合条件概率更大,找到更优解,ok。

  • 公式:
    maxP(yn,yn−1⋅⋅⋅,y2,y1∣x)maxP(y^n,y^{n-1}···,y^2,y^1|x) maxP(yn,yn−1⋅⋅⋅,y2,y1∣x)

  • 参数:B (代表取前B个概率最大的字)

具体步骤: B = 2的情况

  1. 第一步:

    • 我第一个生成的是两个字,我去概率最大的数,比如 a = 0.6, b = 0.3 这两个概率最大。
  2. 第二步:
    • 我现在第一步已经生成了a,b都作为第一个字(加入我的字典为n)
    • 我的第二个字可以是 (我先用 * 代替)
      • a 后面存在n个概率可能的字
      • b后面存在n个概率可能的字
      • a * , b* 一共有2n中可能的数量
    • 我现在对a*,b*进行排序我取前两个概率(就是联合条件概率最大的数)最大的数,假如是ac,bd
  3. 第三步:
    • 依次进行迭代,最后会找到两个联合条件概率最大的两个序列。

步骤图:

-图片来自李沐动手学深度学习

这样我就可以取到一个相对好的一个序列,总体来说就是对我们之前的贪心搜索的一个优化。

  • 需要注意的细节

由上面的图可以看出,time step1我选择的AB,CE 这里是通过条件联合概率计算的,也还有可能出现在一个里面,比如AA,AB 如果进行条件联合概率计算的话这两个在前面,是要选择这两个序列的,并不是我就一定要选择两条分支的。

因为他的原理是,每次进行概率计算之后,都会放在一起进行sortmax排序的,取前两个,这样谁也不清楚一定是在这两个分支里面的。OK get。

BeamSearch(集束算法)相关推荐

  1. EasyLearn--JAVA实现32个经典算法设计(二):集束算法

    集束算法的理解上相对来说还是比较简单的,该算法不是求解最优解而是尽可能的靠近最优解的算法.当集束层级达到12层以上每个子节点不超过5个时,节点数最高可达到了30W个节点左右,而需要从此得出最优解可能用 ...

  2. 算法工程师面试之集束算法(beam search)

    1.前言 文章来源: LawsonAbs@CSDN 2.动机 束搜索常用在生成模型中?为什么? 这和束搜索的使用有关.生成模型中,我们需要根据之前的字符串预测接下来的词,这个预测是根据词表大小预测.如 ...

  3. 浅析 集束搜索(Bean Search) 算法

    集束搜索(Bean Search) 背景 ​ 场景一:如果说,你想实现:输入一段语音片段,经过一一列操作,实现最后输出语音的内容.再此过程中,假如你不想随机输出一些结果,而想得到最好最优的输出结果,此 ...

  4. 3.3 集束搜索-深度学习第五课《序列模型》-Stanford吴恩达教授

    集束搜索 (Beam Search) 这节视频中你会学到集束搜索(beam search)算法,上节视频中我们讲了对于机器翻译来说,给定输入,比如法语句子,你不会想要输出一个随机的英语翻译结果,你想要 ...

  5. 集束搜索(Beam Search)

    来源:Coursera吴恩达深度学习课程 我们来看看集束搜索(beam search)算法,上篇文章选择最可能的句子讲了对于机器翻译来说,给定输入(法语句子),我们并不想要一个随机的英语翻译结果,而是 ...

  6. 【吴恩达deeplearning.ai】Course 5 - 3.3 集束搜索

    集束搜索 (Beam Search) 这节视频中你会学到集束搜索(beam search)算法,上节视频中我们讲了对于机器翻译来说,给定输入,比如法语句子,你不会想要输出一个随机的英语翻译结果,你想要 ...

  7. Beam Search集束搜索

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

  8. 带你玩转序列模型之seq2seq模型定向(集束)搜索

    目录 一.基础模型 二.选择最可能的句子 三.定向搜索 四.改进定向搜索 五.定向搜索的误差分析 一.基础模型 在这一周,你将会学习seq2seq(sequence to sequence)模型,从机 ...

  9. 深度学习笔记 第五门课 序列模型 第三周 序列模型和注意力机制

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

最新文章

  1. LeetCode: 103. Binary Tree Zigzag Level Order Traversal
  2. 比特币拒绝第 340 次“被死亡”
  3. [导入]浅谈VB.NET中的接口
  4. 双非硕士毕业4.5年晋级鹅厂T11之葵花宝典
  5. 中石油训练赛 - Isomorphic Inversion(哈希+贪心)
  6. VGA光纤收发器特点及参数
  7. openai-gpt_为什么到处都看到GPT-3?
  8. 88是python语言的整数类型_Python基础数据类型题
  9. python类与对象 动画_python之类与对象(2)
  10. redis的list类型
  11. 优化云课堂直播间性能的一些思考与总结
  12. ASP.NET URL Routing
  13. 解决在极光推送的时候会出现一个 JPush提示:缺少统计代码
  14. matlab freqz用法ba,【matlab】freqz函数的使用(一)
  15. python3 数独解法 深度遍历
  16. Python学习笔记 第四天
  17. 【HTML5 基础】HTML5重要内容
  18. redis中数据倾斜问题的产生和解决方案
  19. 淮南师范学院计算机组成原理试卷,淮南师范学院2008-2009学年度第一学期电机及拖动试卷(2份,有答案)...
  20. ​​​​​​​NISP一级考试题库

热门文章

  1. 微信开发者工具,出现“当前系统代理不是安全代理,是否信任?”
  2. H3C无线AC+AP配置4——Wifi名称相同,但不同楼不同vlan
  3. SpringBoot笔记(四)其他框架介绍
  4. 算法实现数字编号翻译为英文
  5. 机器人视觉系统的构成
  6. 虚拟机ubuntu设置和windows的共享文件夹
  7. JVM之内存结构详解
  8. 不填写内容用哪个斜杠代替_反斜杠
  9. One PUNCH Man——神经网络
  10. iphone两个备份合并_iphone数据如何备份?两大iPhone备份方法详解