seq2seq模型+集束搜索+注意力模型+音频模型

一、seq2seq模型(sequence to sequence)

1.问题背景

若需要将法语翻译成英语:

2.网络结构

(1)语言模型

        seq2seq模型由两部分构成,解码网络和编码网络。

        建立一个编码网络(绿色部分),采用RNN的结构,可以是GRU或者LSTM单元,每次只向网路中输出一个法语单词,将输入序列接收完毕后,RNN网络会输出一个向量,来代表输入序列。之后,可以建立一个解码网络(紫色部分),将编码网络的输出作为其输入,训练出每次输出一个翻译后的单词,直至输出序列的结尾或句子结尾标记。

(2)图像描述模型

        与语言翻译类似,可以建立一种描述图片内容的结果,称为 image to sequence模型。

 

        建立编码网络,将图片输入到CNN网络结构中,让其学习图片的编码或学习图片的一系列特征,之后将预训练最后得到的特征向量。之后,建立RNN解码网络,将描述图片的特征向量输入到解码网络中,RNN的目标就是生成图片描述,通过每次只输出一个单词,最后得到完整的图片描述。

3.机器翻译模型和语言模型的区别

(1)语言模型

        语言模型总是以零向量a0作为输入,最后会输出任意句子的概率。

(2)机器翻译模型

        机器翻译模型由编码网络和解码网络两部分构成,解码网络与语言模型很像,只是将输入向量用编码网络替代,有了编码网络模型可以以一个句子或图片作为输入,而不是用零向量,故机器翻译也称条件语言模型。

        相比语言模型会输出任意句子的概率,而机器翻译会输出一句英文翻译的概率。机器翻译需要输出一个句子使得条件概率最大化。因此需要使用集束算法,使得条件概率最大化,得到合适的句子。

二、定向搜索

1.贪心算法和集束算法区别

        贪心算法是每次只考虑局部最优,每次选取的单词都要达到最优。而集束算法,是考虑全局最优,是一次性选出几个单词,使得整体的概率达到最大化。在机器翻译中,若采用贪心算法,只考虑每个单词的概率最大化,翻译出的句子可能不是最好的,用集束算法才能获得整个句子的条件概率最大化。

2.集束搜索

(1)首先选出英语翻译中的第一个单词的可能项。

        构建以下神经网络,绿色为编码网络,紫色为解码网络,来输出第一个单词的概率值。

        集束搜索会有集束宽参数,若集束宽等于3,则集束搜索会同时考虑三个选择,输出第一个单词最可能的三个选项,集束搜索会把计算结果存在内存中,以便后面尝试用这三个词。

        集束搜索需要输入法语句子到编码网络(绿色部分),会解码这个网络(紫色部分),softmax层会输出10000个概率值,若集束宽为3,则最后选取前三个存起来。

(2)在第一个单词选定的条件下,考虑第二个单词。

        第一步选取了第一个单词的最可能的三项,集束算法会针对每一个第一个单词,考虑第二个单词是什么。分别假定第一个单词的三个可能项被选中,在第一个单词确定的条件下评估第二个单词的概率,选出概率最大的,即为此条件下的第二个单词。

        构建以下神经网络,绿色为编码网络,紫色为解码网络,来输出在第一个单词确定的条件下,第二个单词的概率。

        根据第一个单词的三个可能项,去评估第二个单词的概率,最后会得到3*10000个两个单词组合,由于集束宽为3,因此选取两个单词组合中的概率最高的前三个,作为前两个单词的三个最可能项。

(3)在前两个单词选定的条件下,考虑第三个单词。

        第二步最后会得到句子前两个单词最可能的三种组合。构建以下神经网络,绿色为编码网络,紫色为解码网络,来输出在前两个单词确定的条件下,第三个单词的概率。

        根据前两个单词组合的三个最可能项,去评估第三个单词的概率,最后会得到3*10000个三个单词组合,由于集束宽为3,因此依旧选取三个单词组合中的概率最高的前三个,作为前三个单词组合的三个最可能项。

(4)依次类推,每次增加一个单词,最后得到英语翻译。

3.定向搜索的改进方法

        集束搜索是选出最可能的几个句子,我们可以计算每个句子的概率,从而选取唯一的句子。

(1)集束搜索目标函数

        由于每个单词出现的概率都是小于1的,很多单词概率相乘时,可能会数值下溢,达到很小很小的值,因此要对其取对数运算。对数化的概率最大化公式是多个负数相加,因此随着项数增多,结果也会越来越小,因此模型会更偏向于短句子的输出,因为短句子的概率由更少的项数组成。对集束搜索进行长度归一化可以解决这个问题。

(2)长度归一化的集束搜索目标函数

        根据适当选取\alpha的值,获得更好的模型。由于集束搜索会选出几个可能性较高的句子,而非一个句子。因此我们可以利用长度归一化的集束搜索目标函数对每个句子进行评估计算,选出得分最高的那个句子,即为目标句子。

4.定向搜索的误差分析

(1)问题背景

        将法语翻译为英语,y^{*}是人工翻译的英语句子,比较准确。 \hat{y}是机器翻译的英语句子,有待提升准确率。

(2)影响因素

影响机器翻译结果的两个因素

  • RNN模型
  • 集束搜索算法

(3)误差分析

        通过比较P(y^{*}|x)P(\hat{y}|x)的大小进行误差分析,找到最值得的改进方向。

  • 情况一:P(y^{*}|x)>P(\hat{y}|x)

        说明集束算法在\hat{y}y^{*}中选择了\hat{y},但是y^{*}实际有更高的P(x|y),故集束算法不能得到一个能使P(x|y)最大化的y值,故集束算法出问题了。

  • 情况二:P(y^{*}|x)\leq P(\hat{y}|x)

        y^{*}是比\hat{y}更好的,说明集束算法是没有问题的,但是RNN预测的P(y^{*}|x)< P(\hat{y}|x),故需要改进RNN算法。故RNN模型出问题了。

 (4)误差分析方法

        通过输出多个例子,每个例子出错的可能只有两种,通过分别统计两种出错的比例,从而判断那种出错类型更值得花费时间去优先改进。

5.Blue得分(Bilingual evaluation understudy (双语评估替补))

(1)问题背景

        Blue得分:给定一个机器生成的翻译,它能够自动计算一个分数,来衡量机器翻译的好坏。

       语言翻译时,当有多个句子同样优秀时,但最后只能选择一个正确答案,可以使用Blue得分。

        其中Reference1和Reference2是两个不错的人工翻译,MT output是机器翻译。

        因此只要MT output与Reference1和Reference2任意一个相似,就会得到一个Blue高分。

(2)单词的Bleu得分

        观察输出结果的每个单词,看其是否在参考句子中,统计其在输出结果中的比例。

        极端情况下,输出全部为the的单词,每个单词在参考句子中都有出现,因此输出句子准确率为Precision=\frac{7}{7},这样的翻译结果显然是不合理。

        改进方法:把每个单词的得分上限定为在参考句子中的出现最多次数。

        在参考1中,出现单词the两次,在参考2中,出现单词the一次,故单词the的得分上限为2。

因此,输出句子准确率为Precision=\frac{2}{7},即Blue得分。

(3)二元词组的的Bleu得分

        首先统计出机器翻译MT output中二元词组的种类及对应词组在机器翻译中出现的次数Count,再分别统计每个二元词组在两个参考句子中的出现次数Count_{clip}

        因此二元词组得到的精确度Precision=\frac{4}{6},即使用二元词组方法确定的Blue得分。

        n元词组的计算Blue得分公式:

        P_{n}=\frac{\ \ \sum_{n\epsilon \hat{y}} \ Count_{clip}(n) }{\sum_{n\epsilon \hat{y}} \ \ Count(n)}

三、注意力模型(Attention model)

1.问题背景

        对于传统的机器翻译模型,是通过编码网络获取整个句子的信息,再通过解码网络将句子翻译。但是这样的模型在Bleu得分中更加偏向输出短句子,处理短句子有很好的的效果。随着句子的长度增大时,翻译模型不能一次性记忆整个句子的信息,生成的句子Bleu得分不高,翻译效果不是很好。

2.注意力模型

(1)模型结构

        假定有输入语句,使用双向的RNN或双向的GRU或双向LSTM去计算每个词的特征,用a^{<t^{'}>}表示时间步t^{'}上的特征向量,其中有a^{<t^{'}>}=(\underset{a}{\rightarrow}^{<t^{'}>},\underset{a }{\leftarrow}^{<t^{'}>}),表示前行传播中双向RNN中的前向和后向激活单元串联起来。\alpha^{<t,t^{'}>}y^{<t>}t^{'}时花费在a^{<t^{'}>}上注意力的数量。故生成翻译中获取的上下文信息为:  C^{<t>}=\sum_{t^{'}=0}^{T_{x}}\alpha ^{<t,t^{'}>}a^{t^{'}} ,将其作为隐藏神经单元S^{<t>}的输入.。

(2)注意力\alpha^{<t,t^{'}>}的计算

        通过神经网络根据上一时间步隐藏状态s^{t-1}t^{'}时间步的特征向量a^{<t^{'}>}作为输入,训练出e^{<t,t^{'}>}与他们自己的映射关系。得到e^{<t,t^{'}>}后便可得到\alpha^{<t,t^{'}>}的值。

四、注意力模型的应用

        常见的注意力模型应用有日期标准化的转化、图片添加标题、语音识别等。已下以日期标准化转化为例进行说明。

1.问题背景---日期标准化转化

        网络将输入以各种可能格式编写的日期 (例如:“the 29th of August 1958”, “03/30/1968”, “24 JUNE 1987”) 将它们转换为标准化的机器可读日期 (例如:“1958-08-29”, “1968-03-30”, “1987-06-24”). 我们将让网络学会以通用的机器可读格式输出日期YYYY-MM-DD。

2.模型建立

图 1.1: 带注意力的神经机器翻译

3.模型实现

五、语音视频问题

1.注意力模型

        通过麦克风接受声音,自动生成文本。语音识别的任务是由麦克风通过探测到微小的气压变化,生成音频片段。将音频片段输入到语音识别模型,然后输出音频的文本内容。

        考虑到人的耳朵不会处理声音的原始波形,是采用特殊的物理结构来测量不同频率和强度的声波。故语音识别模型的预处理数据过程是运行原始的音频片段生成声谱图。如上图中的声谱图,纵轴是声音的频率,横轴是时间,图中的不同颜色显示了声波能量的大小。

        在输入音频的不同时间帧上,建立注意力模型,来输出文本描述。

2.CTC损失函数

        CTC损失函数是原则是将空白符之间的重复字符折叠起来。通过允许输出重复字符,来解决输出个数较少的问题。

六、触发字检测系统

1.问题背景

        越来越多的智能设备可以通过智能语音关键字唤醒,如“小度小度”、“小布小布”。

2.模型构建

        触发字检测系统的常见做法是把一个音频片段计算出它的声谱图特征,得到向量X1、X2、X3......,然后将其放入RNN中。最后要做的是定义我们的目标标签y,将关键字的目标标签设置为1,其余的目标标签设置为0,通过构建这样的数据集来训练语音识别模型,也可以达到不错的效果。

        缺点:构建的数据集不平衡,0比1多太多。

3.模型优化

        比起在关键字的一个时间步上输出1,其实可以在输出变回0之前,多输出几个1,这样可以提高1的比例。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值