在seq2seq的模型中,通常都是Encoder+Decoder的形式.
image.png

在输出y的过程,每次给的是一个概率,比如:

这代表着为词a的概率是0.6,为词b的概率是0.2.我们可以每个时序都取最大概率的词,让后将他们组合起来,这有些像贪心算法.

但是我们知道贪心算法并不一定是最好的,举个例子:

Jane is visiting Africa in September.
Jane is going to be visiting Afica in September.

在翻译过程中第三个词going出现的概率比visiting的概率大,但是从整体上来看,第一个句子要比第二个句子更好.

Beam Search的做法很简单就是每次对概率排前几名的进行搜索.搜索的多少用超参数B来控制:
image.png

这样做的目的是让句子整体的概率最大化:

为了防止连乘造成数值下溢,取对数:

式子中的每个概率都是小于1的数,连乘越多最终的结果就越小,所以优化器趋向于选择较小的,为了避免这个问题,将式子除以,其中是个超参数,可以取0~1之间的值.

posted @ 2018-12-02 22:04:01
评论加载中...

发表评论