多语言机器翻译 | (3) Beam Search

本篇博客介绍如何使用Encoder-Decoder来预测不定长序列。

假设解码器的输出是一段⽂本序列。设输出⽂本词典(包含特殊符号"")的⼤小为Y , 输出序列的最大长度为 T ′ T' T。 所有可能的输出序列一共有 O ( ∣ Y ∣ T ′ ) O(|Y|^{T'}) O(YT)种。这些输出序列中所有特殊符号" "后⾯的⼦序列将被舍弃。

1. 贪婪搜索

让我们先来看一个简单的解决⽅案:贪婪搜索(greedy search)。对于输出序列任一时间步t’,我们从|Y|个词中搜索出条件概率最⼤的词:
在这里插入图片描述
作为输出。⼀旦搜索出""符号,或者输出序列长度已经达到了最大长度 T ′ T' T, 便完成输出。

我们在描述解码器时提到,基于输入序列⽣成输出序列的条件概率是:
在这里插入图片描述
我们将该条件概率最大的输出序列称为最优输出序列。而贪婪搜索的主要问题是不能保证得到最优输出序列。(在每一步上是最优的,不能保证对整体也是最优的, 因为每一步不是独立的,每一步的最优选择都会对之后步的选择产生影响)。

下⾯来看⼀个例子。假设输出词典⾥⾯有“A”“B”“C”和“”这4个词。下图中每个时间步下的4个数字分别代表了该时间步⽣成“A”“B”“C”和“”这4个词的条件概率。在每个时间步,贪婪搜索选取条件概率最大的词。因此,下图中将⽣成输出序列“A”“B”“C”“”。该输出序列的条件概率是0.50.40.40.6=0.048.
在这里插入图片描述
接下来,观察下图演示的例子。与上图中不同,下在时间步2中选取了(当前时间步)条件概率第二⼤的词“C”。由于时间步3所基于的时间步1和2的输出⼦序列由图上中的“A”“B”变为了下图中的“A”“C”,下图中时间步3⽣成各个词的条件概率发生了变化。我们选取条件概率最大的词“B”。此时间步4所基于的前3个时间步的输出⼦序列为“A”“C”“B”,与上图中的“A”“B”“C”不同。因此,下图中时间步4生成各个词的条件概率也与上图中的不同。我们发现,此时的输出序列“A”“C”“B”“”的条件概率是0.5
0.30.60.6=0.054,⼤于贪婪搜索得到的输出序列的条件概率。因此,贪婪搜索得到的输出序列“A”“B”“C”“”并非最优输出序列。
在这里插入图片描述

2. 穷举搜索

如果⽬标是得到最优输出序列,我们可以考虑穷举搜索(exhaustive search):穷举所有可能的输出序列,输出条件概率最大的序列。

虽然穷举搜索可以得到最优输出序列,但他的计算开销 O ( ∣ Y ∣ T ′ ) O(|Y|^{T'}) O(YT)过大。例如,当|Y|=10000且T’=10时,我们将评估 1000 0 10 10000^{10} 1000010个序列:这⼏乎不可能完成。⽽贪婪搜索的计算开销是 O ( ∣ Y ∣ T ′ ) O(|Y|T') O(YT), 通常显著⼩于穷举搜索的计算开销。例如,当|Y|=10000且T’=10时,我们只需评估 1 0 5 10^5 105个序列。

3. 束搜索

束搜索(beam search)是对贪婪搜索的一个改进算法。它有一个束宽(beam size)超参数。我们将它设为k。在时间步1时,选取当前时间步条件概率最大的k个词,分别组成 k个候选输出序列的⾸词。在之后的每个时间步,基于上个时间步的k个候选输出序列,从k|Y|个可能的输出序列中选取条件概率最大的k个,作为该时间步的候选输出序列。最终,我们从各个时间步的候选输出序列中筛选出包含特殊符号“”的序列,并将它们中所有特殊符号“”后面的⼦序列舍弃,得到最终候选输出序列的集合。
在这里插入图片描述
上图通过⼀个例子演示了束搜索的过程。假设输出序列的词典中只包含5个元素,即Y={A,B,C,D,E},且其中一个是特殊符号.设束搜索的束宽等于2,输出序列最⼤⻓度为3。在输出序列的时间步1时,假设条件概率 P ( y 1 ∣ c ) P(y_1|c) P(y1c)最大的两个词为A和C。我们在时间步2时将对所有的 y 2 ∈ Y y_2 \in Y y2Y都分别计算 P ( y 2 ∣ A , c ) P ( y 2 ∣ C , c ) P(y_2| A,c) P(y_2| C,c) P(y2A,c)P(y2C,c), 并从计算出的10个条件概率中取最大的2个,假设为P(B|A,c)和P(E|C,c).那么,我们在时间步3时将对所有的 y 3 ∈ Y y_3 \in Y y3Y都分别计算 P ( y 3 ∣ A , B , c ) P ( y 3 ∣ C , E , c ) P(y_3| A,B,c) P(y_3| C,E,c) P(y3A,B,c)P(y3C,E,c), 并从计算出的10个条件概率中取最⼤的2个,假设为P(D|A,B,c)和P(D|C,E,c).如此⼀来,我们得到6个候选输出序列:A;C;AB;CE;ABD;CED.接下来,我们将根据这6个序列得出最终候选输出序列的集合。

在最终候选输出序列的集合中,我们取以下分数最高的序列作为输出序列:
在这里插入图片描述
其中L为最终候选序列⻓度, α \alpha α⼀般可选为0.75。分⺟上的 L α L^\alpha Lα是为了惩罚较长序列在以上分数中较多的对数相加项。分析可知,束搜索的计算开销为 O ( k ∣ Y ∣ T ′ ) O(k|Y|{T'}) O(kYT). 这介于贪婪搜索和穷举搜索的计算开销之间。此外,贪婪搜索可看作是束宽为1的束搜索。束搜索通过灵活的束宽来权衡计算开销和搜索质量。

4. 总结

1)预测不定长序列的⽅法包括贪婪搜索、穷举搜索和束搜索。

2)束搜索通过灵活的束宽来权衡计算开销和搜索质量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值