1. Basic model基础模型
例如将法语翻译成英语:
首先将法语单词逐个输入到CNN,这部分称为encoder network,然后一次输出一个英语单词,这部分称为decoder network。
CNN结合RNN解读图片内容,如上图输入一副图像,生成一句描述图像的句子。
2.Picking the most likely sentence最优句子
如图,是语言模型和机器翻译的流程对比,可以发现语言模型和机器翻译的decoder network部分非常相似,区别是语言模型的输入为0向量,所以输出为随机的一句话的概率。而机器翻译decoder network输入是非零向量,如果将机器翻译的encoder结果输入语言模型,语言模型的输出就是有输入决定的几句话的概率,称之为条件语言模型。
那么在输出的几句话中,如何选择最佳的一句呢?
也就是找到能使条件概率最大的的序列,通常做法为Beam search集束搜索,下一节会讲。
为什么不用greedy search贪婪搜索呢?
贪婪搜索就是逐词的找到其概率最大的那个词,也就是先确定第一个词,找到其概率最大的词,然后确定第二个、第三个直到最后一个,这样产生的结果也不错,但我们需要的是最优序列,事实证明这样搜索通常很难找到我们所要的最佳序列
3. 序列模型—-定向搜索
Beam search集束搜索:
集束搜索也是逐词确定,但是与贪心搜索不同的是,它设置参数B(集束宽),对每个位置的词选择多个可能性较大的词,如B=3,那么对于第一个词来说,选择3个可能性最大的词,存到内存。
具体做法是:
1)将法语句子输入encoder network,然后输入softmax,输出第一个词 y<1> y < 1 > 的10000(词典长度)概率值 P(y<1>|x) P ( y < 1 > | x ) ,取前三个存起来。比如in,jane,september;
2)第二步是要选择第一个词和第二个词组合的可能性最大的前三个,第一个词有3种可能,对于每种可能,作为输入代入decoder的下一个单元,产生10000个概率值,也就是一共3*10000=30000个概率值 P(y<2>|x,y<1>) P ( y < 2 > | x , y < 1 > ) ,然后计算组合概率,公式如下:
选择概率最大的前3个,存入内存。
4. 序列模型—-改进定向搜索
长度归一化(length normalization)
定向搜索的目标是要最大化条件概率: