3.1 基础模型
sequence to sequence
sequence to sequence:两个序列模型组成,前半部分叫做编码,后半部分叫做解码。用于机器翻译。
image to sequence
sequence to sequence:一个卷积神经网络和一个序列模型组成,前半部分叫做编码,后半部分叫做解码。用于图片描述。
3.2 选择最可能的句子
- 语言模型:根据输入的零向量根据概率预测输出,一个单词一个单词的生成。 P(y<1>,y<2>,...,y<n>) P ( y < 1 > , y < 2 > , . . . , y < n > )
- 机器翻译:前半部分编码网络将输入的句子进行编码,后半部分解码网络输出整个句子的翻译的多种可能的概率,然后选取最可能的一种。 P(y<1>,y<2>,...,y<n>|P(x<1>,x<2>,...,x<m>)) P ( y < 1 > , y < 2 > , . . . , y < n > | P ( x < 1 > , x < 2 > , . . . , x < m > ) )
最通用的选取最合适翻译的算法是:集束搜索(Beam Search)
3.3 集束搜索(Beam search)
基本原理: 每次找出集束宽度(beam width)个词,往下进行,预测以 X 和已经预测的 Y 的元素为前提下的下一个词的概率,仍然保留最可能的集束宽度个词,以此类推,直到完成整个句子的翻译。
如果集束宽度为1,那么就是贪婪算法了,集束搜索只不过是每次保留三个而不是一个而已。
以法语翻译成英语的机器翻译为例
有: P(y<1>,y<2>|X)=P(y<1>|X)∗P(y<2>|X,y<1>) P ( y < 1 > , y < 2 > | X ) = P ( y < 1 > | X ) ∗ P ( y < 2 > | X , y < 1 > )
- Step 1:输入 X 编码网络,通过softmax层计算各个单词(词汇表中的所有单词)输出的概率值 P(y<1>|X) P ( y < 1 > | X ) ,通过设置集束宽度(beam width)的大小如3,则取前3个最大输出概率的单词,并保存起来。
- Step 2:分别对第一步得到的每一个单词计算其与单词表中的所有单词组成词对的概率 P(y<2>|X,y