场景一:如果说,你想实现:输入一段语音片段,经过一一列操作,实现最后输出语音的内容。再此过程中,假如你不想随机输出一些结果,而想得到最好最优的输出结果,此时,则需要本算法。
场景二:实现机器翻译,输入一段法语,输出一段最有的翻译结果。
与贪心算法不同,集束算法含有一个变量b(bean width), 用来存放在一次搜索中,搜索多少个可能的结果。例如:
在搜索第一个词时,结果可能会输出最有可能是第一个词的三个可能值:a , jane , september, 然后将结果存储到内存中;
原理:
通过将网络中编码的结果,输入到解码网络中,解码网络的第一个输出结果<y^1>,即就是编码网络的10000个词中可能性最大的前三个。
在第一步的基础上,以第一步的三个结果为句子开头为条件,预测在含有10000个词的词典中是第二个词的可能性最大的前三个。
首先将词典复制三份,第一步输出的三个结果,分别对应一份词典,从而在自己对应的词典中找出最有可能是第二个词的三个词。即找出最有可能成为前两个词。其概率为:
最有可能成为第二个词的概率:p(y^2 | x, y^1)
最有可能成为前两个词的概率:
P(y^1, y^2 | x) = p(y^1 | x) * p(y^2 | x, y^1), 其中y^1 = ‘a’;
P(y^1, y^2 | x) = p(y^1 | x) * p(y^2 | x, y^1), 其中y^1 = ‘jane’;
P(y^1, y^2 | x) = p(y^1 | x) * p(y^2 | x, y^1), 其中y^1 = ‘september’;
第二部的结果可能是:
注:
第三步、…… 和第二步类似。
这样就可以最后得到有可能的三个值,但是,此处的三是认为设置的b的值,在设置b的值时,请按实际情况设置。
最终得到一个最有的结果。