seq2seq
seq2seq在机器翻译等领域十分好用。
我们将模型分成两部分,首先构造一个RNN充当encoder,将汉语句子依次作为输入,生成一个中间状态。
然后构造另一个RNN充当decoder。初始输入x是0,初始状态是encoder的输入。接下来每一次的输入x都是上次的输出,直到输出终止符算法停止,得到翻译出来的语句。
我们假设最终得到y1y2y3y4…yn这个翻译结果。我们希望得到在原文X的前提下。P(y1y2y3y4…yn|X)最大。即我们的输出拥有最大的概率。decoder第一次的输出可以得到P(y1|X), 第二次输出得到的是P(y2|Xy1),这二者的乘积是P(y1y2|X)。因此可以看出,P(y1y2y3y4…yn|X)就等于每一次decoder输出的累积,我们希望这个累积最大。
我们直到如果直接选择贪心的方式,每次直接生成最大概率的单词,组合起来的结果可能不是最优的(因为后面的概率不一定大),因此往往采用beam search的方式进行搜索。
beam search本质上是一个近似搜索算法,我们规定一个beam width = 10。decoder第一次的