1.Exhaustive search decoding

Exhaustive search :也称为穷举法
我们理想的翻译序列 y 能够使如下条件概率最大

Exhaustive search 方法是如何找到这个最佳的翻译序列呢? 它试图计算所有可能的翻译序列!!!,也就是说它在每一个时刻 t 都会计算 |V|^t 种可能的翻译,|V|是词库大小。在所有 |V|^t 种可能的翻译中,选择概率连乘最大的。

其他博客讲的,每步选择最大值就行了,如下图。他这样说似乎不能表达穷举的含义,因为每步只考虑输出的最大概率的话,整个翻译序列就是最大概率连乘的结果,如 y = (moi, suis, etudianrt,-),这个时间复杂度就是 O(T)。而我们是要在 (etudiant, -, je, moi,suis) , (-, je, etudiant, mosi, suis) …等共 5^4 种中选择最好的。(不知道理解得对不对~~~)

这个算法的时间复杂度就是:O(|V|^T), T为翻译序列的长度。

2. Beam search decoding

  1. Beam search 也是贪心算法,不能保证全局最优
  2. Beam search 比 exhaustive search 更高效
  3. Beam size: k表示每个时间步只选择 TOP k 个单词,在实际应用中,k 通常取 5 ~ 10之间
  4. 定义score(看不懂公式不要紧,看下面图就行了)

假设我们要解码的序列是这样的, k=2

只看Deoder RNN 部分:
1) 对于第1 个时间步,输入为< START >, 输出为 一个|V| 维的向量,向量中每个元素是词库V中每个单词的条件概率如
[ p(he|< START >), p(hit |< START >), p(me |< START >), p(with | < START >), p(a | < START >), p(pie | < START >),…]注意:词库中不止这些单词
在Beam Search 中,我们通常把条件概率取对数,这样连乘的时候就可以变成累加了
假设在第一步中:最大的对数条件概率对应的单词是 hit 和 I。
score(he) = -0.7, score(I) = -0.9

2) 在第 2 个时间步,我们先以(< START >, he )作为输入,输出同样为 一个|V| 维的向量,向量中每个元素是词库V中每个单词的条件概率,对条件概率取对数,然后加上前一个时间步的 score,选择第二个时间步score 最大的两个单词如 hit 和 struck
score(hit) = -1.7, score(struck) = -2.9

再以(< START >, I )作为输入,输出同样为 一个|V| 维的向量,向量中每个元素是词库V中每个单词的条件概率。对条件概率取对数,然后加上之前时间步的 score,选择score 最大的两个单词如 was 和 got,如图 socre(was) = -1.6, score(got) = -1.8

选择第二步 score 最大的两个单词,如图 绿色单词

3) 在第3 个时间步中,我们先以(< START >, he, hit) 作为输入,输出同样为 一个|V| 维的向量,向量中每个元素是词库V中每个单词的条件概率,对条件概率取对数,然后加上前个时间步的 score,选择第三个时间步score 最大的两个单词如 a 和 me。score(a) = -2.8, score(me) = -2.5,…

再以(< START >, I, was )作为输入,输出同样为 一个|V| 维的向量,向量中每个元素是词库V中每个单词的条件概率。对条件概率取对数,然后加上前个时间步的 score,选择score 最大的两个单词如 hit 和 struck,如图

选择第三步 score 最大的两个单词,如图 绿色单词

4)依次延伸

选择第四步 score 最大的两个单词,如图 绿色单词

5)依次延伸

选择第五步 score 最大的两个单词,如图 绿色单词

6) 依次延伸

选择第六步 score 最大的两个单词,如图 绿色单词

7) 停止,当遇到 < END > 时就不在延伸了

要使序列的score总分最大,每个时间步选择score最大的一个单词就行,得到最后的解码结果:
< START > he hit me with a pie < END >

2. beam search 的一个爱好

beam search 喜欢较短的句子。
就是说每个时间步都有可能出现 < END >, 那么Beam search 会选择那个较短的序列
解决方法:

  • 方法1:即使出现了 < END >, 我们仍然继续延伸,直到我们定义的时间步 T 为止
  • 方法2 :我们就保留 n 个以 < END > 结尾的序列,选择score最大的那个??
    如何选择最大的那个呢? 我们知道 score 都是负值,序列越长,整个序列的总score也就越低, 序列越短score越大,beam search 目标是选择最大score的序列,那么它是不是就偏爱较短序列了呢?
    所以我们要做个平均: 把每个 < END > 的 score 除以 到 < END >时的时常。如上图的< END > ,做平均的话就是 ( -2.1 / 7 )
    用公式表示就是:

3. beam search 的时间复杂度

O(K^2 • T)
如上图:一个时间步我们考虑了 4 个单词,总共有 T 个时间步。

Exhaustive search 和 Beam search 详解(图文并茂)相关推荐

  1. python search用法,Python-re中search()函数的用法详解(查找ip)

    1.首先来看一下search()和find()的区别 import re s1 = "2221155" #search 字符串第一次出现的位置 print(re.search(&q ...

  2. Greedy search与beam search

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

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

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

  4. ElasticSearch: Search API 查询用法详解

    Search API ElasticSearch 为了搜索提供了一些原始的 API,主要是有两大类 URL Search URL Search 类似 http 的get请求,是将请求参数放到 URL ...

  5. Selenium的元素八大定位写法详解-图文并茂

    Selenium的元素八大定位详解 老鸟有兴趣可以移步Selenium元素定位神器工具谷歌浏览器插件-SelectorsHub介绍.安装和使用 目录 Selenium的元素八大定位详解 1.id定位 ...

  6. [基础语法] SEARCH搜索指定字符串详解

    今天遇到一个问题:读取服务器目录返回文件夹信息,如果文件夹不存在就创建,下面是返回的信息 文件夹是以日期.日期的前六位命名的,此例中如果我们直接search 201503,虽然成功,但我们不能判断是不 ...

  7. javascript中indexOf与search的区别(详解)

    1.indexOf方法 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,如果没有找到返回-1. 语法: stringObject.indexOf(searchvalue,fr ...

  8. 《数据结构C语言版》——栈和队列详解(图文并茂),从零开始的学习

    哈喽!这里是一只派大鑫,不是派大星.本着基础不牢,地动山摇的学习态度,从基础的C语言语法讲到算法再到更高级的语法及框架的学习.更好地让同样热爱编程(或是应付期末考试 狗头.jpg)的大家能够在学习阶段 ...

  9. 《数据结构C语言版》——二叉树详解(图文并茂)

    哈喽!这里是一只派大鑫,不是派大星.本着基础不牢,地动山摇的学习态度,从基础的C语言语法讲到算法再到更高级的语法及框架的学习.更好地让同样热爱编程(或是应付期末考试 狗头.jpg)的大家能够在学习阶段 ...

最新文章

  1. WebConfig自定义节点并读取
  2. 小程序导航组件navigator活学活用
  3. html 科幻模板,html5酷炫宇宙科幻周年庆典专题动画模板
  4. 猜数字游戏python123_【趣味数学】可以说谎的猜数字游戏
  5. Ubuntu 配置 Tomcat
  6. VMware 禁用虚拟内存文件,提升虚拟机响应速度 .
  7. html 星空效果,html5 canvas炫酷旋转银河系星空背景特效
  8. discuzx3.2自定义积分操作日志,discuzx积分二次开发完全记录
  9. 编程基础知识之浮点型
  10. EXT2/EXT3文件系统
  11. 英尺英寸和厘米的换算_中国的尺和厘米的换算,英尺英寸和厘米换算
  12. 树形结构的处理——组合模式(一)
  13. Dragonfly 三维可视化数据分析处理软件-切片分析工具使用教程
  14. 计算机主机自动关机如何设置,如何设置电脑自动关机
  15. 自适应二次元紫色luo莉资源网emlog模板
  16. java 计算一个月有多少天和多少周
  17. 电商后台设计:品类管理
  18. cubuide RS485问题排查
  19. 面试(十一)富途笔试题
  20. 仿百度文库/仿豆丁文库开源版MTCEO文库系统 v2.4

热门文章

  1. 【coling 2020】Attentively Embracing Noise for Robust Latent Representation in BERT
  2. 2021年10月编程语言排行
  3. 通信售前工程师的总结
  4. 简单理解VIO(二)
  5. matlab求解方程
  6. 基于卷积神经网络的手写汉字识别[matlab版本][可识别509类汉字]
  7. 刘晓燕语法笔记——简单句
  8. 【人群计数】Crossing the Line: Crowd Counting by Integer Programming with Local Features
  9. [博创智联]创新创客智能硬件平台入门教程目录
  10. hana数据库与mysql_HANA数据库为何如此之快