3.3 集束搜索(Beam Search)
集束搜索会考虑多个选择,集束搜索算法会有一个参数B,叫做集束宽(beam width)。这个例子中集束宽设成3,意味着集束搜索一次会考虑3个可能结果,比如对第一个单词有不同选择的可能性,最后找到in、jane、september,是英语输出的第一个单词的最可能的三个选项,然后集束搜索算法会把结果存到计算机内存里以便后面尝试用这三个词。为了执行集束搜索的第一步,需要输入法语句子到编码网络,然后解码这个网络,softmax层会输出10,000个概率值,然后取前三个存起来,概率表示为:
集束搜索算法的第二步:针对每个第一个单词考虑第二个单词是什么
在第二步更关心的是要找到最可能的第一个和第二个单词对,所以不仅仅是第二个单词有最大的概率,而是第一个、第二个单词对有最大的概率(编号7)。可以表示成第一个单词的概率(编号8)乘以第二个单词的概率(编号9):
jane、september跟上面一样
接着,再预测第三个单词。分别以in september,jane is,jane visits为条件,计算每个词汇表单词作为预测第三个单词的概率。从中选择概率最大的3个作为第三个单词的预测值,得到:in september jane,jane is visiting,jane visits africa
概率表示为:
此时,得到的前三个单词的3种情况的概率为:
以此类推,每次都取概率最大的三种预测。最后,选择概率最大的那一组作为最终的翻译语句:
Jane is visiting Africa in September.
如果参数B=1,则就等同于greedy search。实际应用中,可以根据不同的需要设置B为不同的值。一般B越大,机器翻译越准确,但同时也会增加计算复杂度
Last updated