序列模型第三周 序列模型和注意力机制

3.1 基础模型

序列模型第三周 序列模型和注意力机制_第1张图片
sequence to sequence模型在机器翻译和语音识别方面都有着广泛的应用。
上图是机器翻译的例子,使用“编码网络(encoder network)”+“解码网络(decoder network)”两个RNN模型组合的形式来解决。encoder network将输入语句编码为一个特征向量,传递给decoder network,完成翻译。具体模型结构如下图所示:
序列模型第三周 序列模型和注意力机制_第2张图片其中,encoder vector代表了输入语句的编码特征。encoder network和decoder network都是RNN模型,可使用GRU或LSTM单元。这种“编码网络(encoder network)”+“解码网络(decoder network)”的模型,在实际的机器翻译应用中有着不错的效果。
序列模型第三周 序列模型和注意力机制_第3张图片这种模型也可以应用到图像捕捉领域,即捕捉图像中主体动作和行为,用文字描述图像内容,如上图。
首先,可以将图片输入到CNN,例如使用预训练好的AlexNet,删去最后的softmax层,保留至最后的全连接层。则该全连接层就构成了一个图片的特征向量(编码向量),表征了图片特征信息。
然后,将encoder vector输入至RNN,即decoder network中,进行解码翻译。
序列模型第三周 序列模型和注意力机制_第4张图片

3.2 选择最有可能的句子

序列模型第三周 序列模型和注意力机制_第5张图片
Language model是自动生成一条完整语句,语句是随机的。而machine translation model是根据输入语句,进行翻译,生成另外一条完整语句。上图中,绿色部分表示encoder network,紫色部分表示decoder network。decoder network与language model是相似的,encoder network可以看成是language model的a<0>,是模型的一个条件。也就是说,在输入语句的条件下,生成正确的翻译语句。因此,machine translation可以看成是有条件的语言模型(conditional language model)。
所以,machine translation的目标就是根据输入语句,作为条件,找到最佳翻译语句,使其概率最大:
序列模型第三周 序列模型和注意力机制_第6张图片第一个句子最准确,我们的优化目标就是要让这条翻译对应的在这里插入图片描述最大化。
为什么不用贪心搜索:
序列模型第三周 序列模型和注意力机制_第7张图片Greedy search根据条件,每次只寻找一个最佳单词作为翻译输出,力求把每个单词都翻译准确。例如,首先根据输入语句,找到第一个翻译的单词“Jane”,然后再找第二个单词“is”,再继续找第三个单词“visiting”,以此类推。这也是其“贪婪”名称的由来。
Greedy search存在一些缺点。首先,因为greedy search每次只搜索一个单词,没有考虑该单词前后关系,概率选择上有可能会出错。例如,上面翻译语句中,第三个单词“going”比“visiting”更常见,模型很可能会错误地选择了“going”,而错失最佳翻译语句。其次,greedy search大大增加了运算成本,降低运算速度。
因此,greedy search并不是最佳的方法。下一小节,我们将介绍Beam Search,使用近似最优的查找方式,最大化输出概率,寻找最佳的翻译语句。

3.3 Beam search

序列模型第三周 序列模型和注意力机制_第8张图片Greedy search每次是找出预测概率最大的单词,而beam search则是每次找出预测概率最大的B个单词。其中,参数B表示取概率最大的单词个数,可调。本例中,令B=3。
按照beam search的搜索原理,首先,先从词汇表中找出翻译的第一个单词概率最大的B个预测单词。例如上面的例子中,预测得到的第一个单词为:in,jane,september。
然后,再分别以in,jane,september为条件,计算每个词汇表单词作为预测第二个单词的概率。从中选择概率最大的3个作为第二个单词的预测值,得到:in september,jane is,jane visits。
在这里插入图片描述
接着,再预测第三个单词。方法一样,分别以in september,jane is,jane visits为条件,计算每个词汇表单词作为预测第三个单词的概率。从中选择概率最大的3个作为第三个单词的预测值,得到:in september jane,jane is visiting,jane visits africa。
在这里插入图片描述
在这里插入图片描述
以此类推,每次都取概率最大的三种预测。最后,选择概率最大的那一组作为最终的翻译语句。
序列模型第三周 序列模型和注意力机制_第9张图片
序列模型第三周 序列模型和注意力机制_第10张图片如果参数B=1,则就等同于greedy search。实际应用中,可以根据不同的需要设置B为不同的值。一般B越大,机器翻译越准确,但同时也会增加计算复杂度。

3.4 改进束搜索refinements to beam search

序列模型第三周 序列模型和注意力机制_第11张图片
Beam search中,最终机器翻译的概率是乘积的形式:
在这里插入图片描述多个概率相乘可能会使乘积结果很小,远小于1,造成数值下溢。为了解决这个问题,可以对上述乘积形式进行取对数log运算。
另外,这种概率表达式还存在一个问题,就是机器翻译的单词越多,乘积形式或求和形式得到的概率就越小,这样会造成模型倾向于选择单词数更少的翻译语句,使机器翻译受单词数目的影响,这显然是不太合适的。因此,一种改进方式是进行长度归一化,消除语句长度影响。
实际应用中,通常会引入归一化因子α。如果α=1,则完全进行长度归一化;若α=0=0,则不进行长度归一化。一般令α=0.7,效果不错。

序列模型第三周 序列模型和注意力机制_第12张图片BFS (Breadth First Search) 、DFS (Depth First Search)算法不同,beam search运算速度更快,但是并不保证一定能找到正确的翻译语句。

3.5 定向搜索的误差分析

序列模型第三周 序列模型和注意力机制_第13张图片
Beam search是一种近似搜索算法。实际应用中,如果机器翻译效果不好,需要通过错误分析,判断是RNN模型问题还是beam search算法问题。
首先,为待翻译语句建立人工翻译,记为y∗。在RNN模型上使用beam search算法,得到机器翻译,记为y^。显然,人工翻译最为准确。
序列模型第三周 序列模型和注意力机制_第14张图片整个模型包含两部分:RNN和beam search算法。
将输入语句输入到RNN模型中,分别计算输出是y∗的概率P(y∗∣x)和y hat​的概率P(y^∣x)。
序列模型第三周 序列模型和注意力机制_第15张图片
如果beam search算法表现不佳,可以调试参数B;若RNN模型不好,则可以增加网络层数,使用正则化,增加训练样本数目等方法来优化。
序列模型第三周 序列模型和注意力机制_第16张图片

3.6 Bleu得分(选修)

3.7 注意力模型直观理解

序列模型第三周 序列模型和注意力机制_第17张图片如果原语句很长,要对整个语句输入RNN的编码网络和解码网络进行翻译,则效果不佳。相应的bleu score会随着单词数目增加而逐渐降低。
对待长语句,正确的翻译方法是将长语句分段,每次只对长语句的一部分进行翻译。人工翻译也是采用这样的方法,高效准确。也就是说,每次翻译只注重一部分区域,这种方法使得bleu score不太受语句长度的影响。
序列模型第三周 序列模型和注意力机制_第18张图片根据这种“局部聚焦”的思想,建立相应的注意力模型(attention model)。
attention model仍由类似的编码网络(下)和解码网络(上)构成。编码器是一个双向RNN,同时向解码器传入应该注意几个词,就是翻译的句子上下文有多少取决于编码器的特征,即注意力参数α
解码器是单向RNN,表示翻译成的英语句子。

3.8 注意力模型

序列模型第三周 序列模型和注意力机制_第19张图片Attention model中选择双向RNN,可以使用GRU单元或者LSTM。由于是双向RNN,每个a表示:在这里插入图片描述
RNN编码生成特征,注意力权重用α表示,C是各个RNN神经元经过注意力权重得到的参数值。
在这里插入图片描述表示机器翻译的第一个单词“jane”对应的第t’个RNN神经元,C<1>表示机器翻译第一个单词“jane”对应的解码网络输入参数。满足:
在这里插入图片描述(α相加起来为1,c输入参数是α和a的乘积和)
也就是说,α表示输出y^​对RNN单元a的注意力权重因子。

序列模型第三周 序列模型和注意力机制_第20张图片为了让α的和为1,利用softmax的思想,引入参数e,使得在这里插入图片描述这样只要求出e,就可以得到α。
如何求出e呢?方法是建立一个简单的神经网络,如下图所示。输入是SS和a,输出是e。
序列模型第三周 序列模型和注意力机制_第21张图片然后,利用梯度下降算法迭代优化,计算得到e和α。

3.9 语音辨识

序列模型第三周 序列模型和注意力机制_第22张图片深度学习中,语音识别的输入是声音,量化成时间序列。更一般地,可以把信号转化为频域信号,即声谱图(spectrogram),再进入RNN模型进行语音识别。
深度学习中,语音识别的输入是声音,量化成时间序列。更一般地,可以把信号转化为频域信号,即声谱图(spectrogram),再进入RNN模型进行语音识别。
序列模型第三周 序列模型和注意力机制_第23张图片序列模型第三周 序列模型和注意力机制_第24张图片序列模型第三周 序列模型和注意力机制_第25张图片

3.10 触发字检测

你可能感兴趣的:(序列模型第三周 序列模型和注意力机制)