Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism

一. 基础模型

  • 编码-解码
    Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第1张图片
    如图中所示,输入一个法语句子,然后将其转换为英语句子。我们设定一个RNN结构的编码器和解码器,先将输入的法语句子编码为一个向量,再通过解码器将其转换为英语句子。
  • 图像描述
    Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第2张图片
    图像描述,顾名思义就是给出一幅图片,然后根据图片给出相应的描述。我们将之前RNN中学到的AlexNet结构最后的softmax层去掉,前面的就是类似于一个编码网络,可以将图片编码成一个向量;然后我们再添加一个RNN结构,类似于解码网络,这个RNN结构生成的就是图像的描述。

二. 选择最可能的句子

Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第3张图片
机器翻译模型其实和语言模型非常相似,不同在于,语言模型总是以0向量开始,而机器翻译模型是以编码网络后的向量开始。
而机器模型就是一种有条件的语言模型,就类似于在输入的法语条件下,取得一个概率最高的,最有可能的英语句子。

  • 贪心搜索
    Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第4张图片
    按照上面的描述,我们很自然的会想到贪心算法,但是我们为什么不使用贪心算法呢?如上图所示:
  • Jane is visiting Africa in September.
  • Jane is going to be visiting Africa in September.
    第一句翻译的要比第二句话好,但是按照贪心算法的原理,我们在前2个单词Jane is的情况下,第三个单词选择going的可能性要比visiting的可能性要大,但是整体来看的话,第一句话翻译的要比第二句话好。因此我们不使用贪心算法。

三. 定向搜索

  • 定向搜索算法
    Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第5张图片
    定向搜索算法和贪心算法很像,不同之处在于,贪心算法选择可能性最大的那一个,而定向搜索算法是选择可能性最大的前B(beam width波束宽度)个。
    以B为3举例,假设有10000个单词,经过解码网络的第一层后,我们可以得到10000个单词的可能性概率,我们选择最优的前3个(假设是in,jane,September)。我们继续到解码网络的第二层,这时已经有2个分支了,也就是总共3个网络,如上图中黄色所示,在第一个单词为in的前提下,第二个单词有1W种可能(第一个网络);第一个单词为jane的前提下,第二个单词也有1W种可能(第二个网络);第一个单词为september的前提下,第二个单词也有1W种可能(第三个网络);总共加起来就有3W种可能。计算概率的公式为:

    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 > )

    我们选择前3种可能性最大的,假设是in september,jane is,jane visiting的话,那我们就相当于排除了第一个单词为September的可能;以此类推,接下来的每一层都有3*10000=30000种可能,我们选择其中前三,直到最后一层。

  • 定向搜索算法的优化措施
    Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第6张图片
    在前面,我们通过使得如下公式最大化来选择可能的翻译。

    t=1TyP(y<t>|x,y<1>,,y<t1>) ∏ t = 1 T y P ( y < t > | x , y < 1 > , … , y < t − 1 > )

    但是,这样会有一些缺点:
    1.每一次选择单词时的概率值是小于1的,相乘后就会越来越小,导致数值下溢,导致电脑的浮点不能精确的存储。我们通过在上式加一个log来解决这个问题,并不改变原先的单调性,这样可以将上式转换成如下的概率相加
    t=1TyP(y<t>|x,y<1>,,y<t1>) ∑ t = 1 T y P ( y < t > | x , y < 1 > , … , y < t − 1 > )

    2.因为乘了很多项小于1的数字来估计句子的概率,因此就会得到很小的数字,所以目标函数更倾向于选择短的句子。
    1Tαyt=1TyP(y<t>|x,y<1>,,y<t1>) 1 T y α ∑ t = 1 T y P ( y < t > | x , y < 1 > , … , y < t − 1 > )

    我们通过归一化来解决,即通过除以翻译结果的单词数量,减少了对输出结果长的惩罚。我们可以通过调控α来控制归一化的程度。

  • 误差分析
    Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第7张图片
    有的时候,定向搜索算法并没有得到让你满意的一个翻译,这个时候就可以通过误差分析来判断到底是定向搜索算法的锅还是RNN模型的锅。
    如上图所示,假设人类翻译的比较好的是 y y ∗ ,机器翻译的是 y^ y ^
    1. P(y|x)>P(y^|x) P ( y ∗ | x ) > P ( y ^ | x )
    说明是beam search的锅,因为beam search 选择了 y^ y ^ ,但是实际上 y y ∗ 的概率要比 y^ y ^ 高。
    2. P(y|x)P(y^|x) P ( y ∗ | x ) ⩽ P ( y ^ | x )
    说明是RNN模型的锅,因为 y^ y ^ 的概率的确比 y y ∗ 高,说明beam search没选择错,而实际上 y^ y ^ 的概率是要比 y y ∗ 低的,因此是RNN模型给出了一个错误的预测。
    Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第8张图片

我们可以绘制如上的一个表格,遍历训练集,将所有的错误情况进行分析,看看Beam Search和RNN model的错误所占比例,由此来帮助我们判断并修改。


对于波束宽度B,我们有以下的一些的常识:

  • larger B :更好的结果,计算慢,占用内存很大
  • smaller B:更坏的结果,计算快,占用内存很小
  • 10~100 企业更多选择这个范围内的B
  • 1000~3000 科研人员更多选择这个范围内的B以获得更好的结果

四. Bleu得分

Blue得分: bilingual evaluation understudy 双语评估替补,是一个单一实数评估指标,用来在有同样多优秀的翻译的情况时,衡量评估机器翻译系统。

  • 一元词组
    Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第9张图片
    假设我们有2个翻译的比较好的句子作为参考,还有一个是机器翻译的句子。以上图举例,机器的翻译输出为the the the the the the the。那么the在这个句子中出现了7次,the在参考1里出现了2次,参考2里出现了1次,我们取次数最大的那次,因此最后的Bleu得分为 27 2 7 ,即 P1=27 P 1 = 2 7 ,我们用 P1 P 1 表示1元词组的精确度,类似, P2 P 2 表示2元词组的精确度, Pn P n 表示n元词组的精确度。
  • 二元词组
    Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第10张图片
    如上图所示,机翻中有二元词组{the cat, cat the, cat on, on the, the mat},在机翻中分别出现{2,1,1,1,1}次,在参考1或参考2中出现的最大次数为{1,0,1,1,1},因此Bleu得分 P2=46=23 P 2 = 4 6 = 2 3
  • n元词组
    Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第11张图片
    计算公式如上图所示。
    最终,我们合并所有的Bleu得分求平均:
    BPexp(1kkn=1Pk) B P ∗ e x p ( 1 k ∑ k n = 1 P k )

    其中,BP(brevity penalty)为调整因子,能够惩罚太短翻译结果的翻译系统,因为一旦最后的翻译结果很短,很有可能得分就会很高。BP的值通过下述公式计算:
    13

五. 注意力模型

当机器翻译一个很长很长的句子时,往往Bleu得分不会太好,因此我们让他学习人类翻译时的习惯,将一个长难句拆分成很多段去翻译。注意力模型就是一种如何让一个神经网络只注意到一部分输入句子的方法。
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第12张图片
如上图所示的双向RNN模型,我们将 a⃗ <t>,a<t> a → < t > , a ← < t > 合并为 a<t> a < t ′ > ,代表时间步t上的特征向量; α<t,t> α < t , t ′ > 是注意力参数,表示 y<t> y < t > 应该花多少注意力在t’个单词上,其中:

tα<1,t>=1 ∑ t ′ α < 1 , t ′ > = 1

通过如下公式我们可以计算得到 c<k> c < k > :
c<k>=tα<k,t>a<t> c < k > = ∑ t ′ α < k , t ′ > a < t ′ >

Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism_第13张图片
其中的 α<t,t> α < t , t ′ > 是通过如上图所示的公式计算得到的。

六. 语音识别

简单的介绍了下语音识别中的CTC损失函数和触发字检测,稍微讲解了下,感兴趣的话可以去找相关的paper阅读。

你可能感兴趣的:(Deep,Learning,Andrew,Ng,Andrew,Ng,深度学习,神经网络)