【吴恩达深度学习笔记】5.3序列模型和注意力机制Sequence models&Attention mechanism

第五门课 序列模型(Sequence Models)

3.1基础模型(Basic Models)

seq2seq模型用于机器翻译:用一个编码网络(encoder network)来对输入的法语句子进行编码,然后用一个解码网络来生成对应的英语翻译。
在这里插入图片描述
image to sequence模型用于图像描述:
在这里插入图片描述

3.2选择最可能的句子(Picking the most likely sentence)

机器翻译模型和语言模型非常相似,不同在于语言模型总是以零向量开始,而encoder网络会计算出一系列向量来表示输入的句子,decoder网络以这个句子开始,而不是以零向量开始,所以把它叫做条件语言模型(conditional language model)。
假如通过模型将法语翻译成英文,通过输入的法语句子模型将会告诉你各种英文翻译所对应的可能性。不是从得到的分布中进行随机取样,而是要找到一个英语句子,使得条件概率 P ( y ∣ x ) P(y|x) P(yx)最大化。所以在开发机器翻译系统时,要做的一件事就是想出一个算法,用来找出合适的 y y y值,使得该项最大化,解决这种问题最通用的算法就是束搜索(Beam Search)。

贪心搜索(Greedy Search)生成第一个词的分布以后,它将会根据条件语言模型挑选出最有可能的第一个词进入机器翻译模型中,然后继续挑选下一个最有可能的词,但是真正需要的是一次性挑选出整个单词序列,从 y < 1 > y^{<1>} y<1> y < T y > y^{<T_y>} y<Ty>来使得整体概率最大化。

3.3集束搜索(Beam Search)

贪婪算法只会挑出最可能的那一个单词,然后继续。而集束搜索会考虑多个选择,集束搜索算法有一个参数B,叫集束宽(beam width),集束搜索会考虑 B B B个可能结果,然后把这些结果存到计算机内存里以便后面尝试。集束搜索算法的第二步会针对每个第一个单词考虑第二个单词是什么,即第一个、第二个单词对有最大的概率 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>}) P(y<1>,y<2>x)=P(y<1>x)P(y<2>x,y<1>),找出第一个和第二个单词对最可能的 B B B个结果,接着继续直到最后一步。即最大化概率: a r g   m a x   P ( y < 1 > , . . . , y < T y > ∣ x ) = ∏ t = 1 T y P ( y < t > ∣ x , y < 1 > , . . . , y < t − 1 > ) arg\space max\space P(y^{<1>},...,y^{<T_y>}|x)=\prod^{T_y}_{t=1}P(y^{<t>}|x,y^{<1>},...,y^{<t-1>}) arg max P(y<1>,...,y<Ty>x)=t=1TyP(y<t>x,y<1>,...,y<t1>)

如果集束宽等于1,只考虑1种可能结果,实际上就变成了贪婪搜索算法。

3.4改进集束搜索(Refinements to Beam Search)

上节介绍了基本的束搜索算法(the basic beam search algorithm),长度归一化(Length normalization)是对束搜索算法作调整的一种方式,帮助得到更好的结果。束搜索的结果乘积概率(the product probabilities)通常远小于1,会造成数值下溢(numerical underflow)。数值下溢就是数值太小导致电脑的浮点表示不能精确地储存,在实践中不会最大化这个乘积,而是取 l o g log log值,会得到一个数值上更稳定的算法,不容易出现数值的舍入误差(rounding errors)。所以实际工作记录概率的对数和(the sum of logs of the probabilities)。

通过除以翻译结果的单词数量,即取每个单词的概率对数值的平均了,可以明显减少了对输出长的结果的惩罚。在实践中会用一个更柔和的方法加上指数 α \alpha α,可以等于0.7。如果等于1相当于完全用长度来归一化,如果等于0相当于完全没有归一化, α \alpha α是算法另一个超参数(hyper parameter),需要调整大小来得到最好的结果。从经过评估的句子中挑选出在归一化的log概率目标函数上得分最高的一个,也叫作归一化的对数似然目标函数(a normalized log likelihood objective)。 a r g   m a x   1 T y α ∑ t = 1 T y l o g P ( y < t > ∣ x , y < 1 > , . . . , y < t − 1 > ) arg\space max\space \frac{1}{T_y^\alpha}\sum^{T_y}_{t=1}logP(y^{<t>}|x,y^{<1>},...,y^{<t-1>}) arg max Tyα1t=1TylogP(y<t>x,y<1>,...,y<t1>)

束宽B越大算法运行慢,内存占用也会增大。束宽小算法运行的更快,内存占用也小,
但结果会没那么好。通常取 B = 10 B=10 B=10

3.5集束搜索的误差分析(Error analysis in beam search)

束搜索算法是一种近似搜索算法(an approximate search algorithm),也被称作启发式搜索算法(a heuristic search algorithm),它不总是输出可能性最大的句子,它仅记录着B为前3或者10或是100种可能。那么如果束搜索算法出现错误会怎样呢?

模型有两个主要部分,一个是神经网络模型,即序列到序列模型(sequence to sequence model),将这个称作是RNN模型,它实际上是个编码器和解码器( an encoder and a decoder)。另一部分是束搜索算法,以某个集束宽度B运行。
在这里插入图片描述
通过对开发集中每一个错误例子执行误差分析得出束搜索算法和RNN模型出错的比例是多少 B R \frac{B}{R} RB确定错误是搜索算法出了问题,还是生成目标函数(束搜索算法使之最大化)的RNN模型出了问题。

3.6Bleu得分(Bleu Score)

机器翻译如果有多个不错的答案,要怎样衡量准确性呢? 常见的解决办法是通过BLEU得分(the BLEU score)来解决。BLEU(bilingual evaluation understudy (双语评估替补))得分做的就是,给定一个机器生成的翻译,根据精确度评估(the modified precision measure)方法自动计算一个分数来衡量机器翻译的好坏。

定义 P n P_n Pn n n n元词组精确度:机器翻译输出中的 n n n元词组的countclip之和除以 n n n元词组的出现次数之和。而且会用额外的BP 惩罚因子(the BP penalty)来调整这项。BP的意思是“简短惩罚”( brevity penalty),能够惩罚输出了太短翻译结果的翻译系统。
在这里插入图片描述
拥有单一实数评估指标(a single real number evaluation metric)的重要性,因为它能够让你尝试两种想法,然后看一下哪个得分更高,尽量选择得分更高的那个,BLEU得分对于机器翻译来说,具有革命性的原因是因为它有一个相当不错的虽然不是完美的但是非常好的单一实数评估指标。

这里有一篇相关参考博客:BLEU算法详解

参考论文:Papineni, Kishore& Roukos, Salim & Ward, Todd & Zhu, Wei-jing. (2002). BLEU: a Method for Automatic Evaluation of Machine Translation.10.3115/1073083.1073135.

3.7注意力模型直观理解(Attention Model Intuition)

注意力模型(the Attention Model)可以使编码解码的构架(a Encoder-Decoder architecture)来完成的机器翻译更好工作。在神经网络中,记忆非常长句子是非常困难的。有了注意力模型,机器翻译系统只会翻译句子的一部分,Bleu score不会随着Setence length的增加而有一个巨大的下倾(huge dip),这个下倾衡量了神经网络记忆一个长句子的能力。
在这里插入图片描述
为了避免与RNN中的感知机(the activations)混淆,用 S S S来表示RNN的隐藏状态。注意力模型会计算注意力权重(a set of attention weights),用 a < t , t > a^{<t,t>} a<t,t>表示生成第t个词时应该放多少注意力在这个第t块信息处。

参考论文:Dimitri, Bahdanau, Camcrun Cho, Yoshe Bengio。(Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science,2014.

3.8注意力模型(Attention Model)

注意力模型让一个神经网络只注意到一部分的输入句子。当它在生成句子的时候,更像人类翻译。
在这里插入图片描述
α < t , t ′ > \alpha^{<t,t'>} α<t,t> y < t > y^{<t>} y<t> t t t处生成输出词时,应该在 t ′ t' t时花在 a a a上注意力的数量。 C < t > C^{<t>} C<t>是上下文向量。
在这里插入图片描述

3.9语音识别(Speech recognition)

本节介绍seq2seq模型是如何应用于音频数据的(audio data),比如语音(the speech)。语音识别算法(a speech recognition algorithm)通过输入音频,然后输出音频的文本内容。人耳并不会处理声音的原始波形,而是通过一种特殊的物理结构来测量不同频率和强度的声波。音频数据的常见预处理步骤是运行这个原始的音频片段,然后生成一个声谱图(a spectrogram),横轴是时间,纵轴是声音的频率(frequencies),图中不同的颜色显示了声波能量的大小(the amount of energy),也就是在不同的时间和频率上这些声音有多大。伪空白输出(the false blank outputs)也经常应用于预处理步骤。在音频被输入到学习算法之前,人耳所做的计算和这个预处理过程非常相似。语音识别系统是用音位(phonemes)来构建的,也就是人工设计的基本单元(hand-engineered basic units of cells)。
在这里插入图片描述
利用CTC损失函数(CTC cost)来做语音识别。CTC是Connectionist Temporal Classification。通常输入的时间步数量(the number of input time steps)要比输出的时间步的数量(the number of output time steps)多出很多。CTC损失函数的一个基本规则是将空白符之间的重复字符折叠起来,上图用下划线表示特殊的空白符(blank character),它和空格(space character)是不一样的。神经网络因为有很多这种重复的字符,和很多插入在其中的空白符,所以最后我们得到的文本会短上很多。

参考文献:Graves A, Gomez F. Connectionist temporal classification:labelling unsegmented sequence data with recurrent neural networks[C]// International Conference on Machine Learning. ACM, 2006:369-376.

3.10触发词检测(Trigger Word Detection)

随着语音识别的发展,越来越多的设备可以通过你的声音来唤醒,这有时被叫做触发字检测系统(rigger word detection systems)。其中的关键字检测系统(keyword detection system)将会更加简单,它可以通过一个更简洁的数量更合理的数据来完成。
在这里插入图片描述
计算出一个音频片段(an audio clip)的声谱图特征(spectrogram features)得到特征向量 x < 1 > 、 x < 2 > . . . x^{<1>}、x^{<2>}... x<1>x<2>...,然后把它放到RNN中。最后定义目标标签。假如音频片段中的某一点是一个触发字,比如"Alexa”,那么在这一点之前在训练集中把目标标签都设为0,在这个点之后把目标标签设为1。该算法一个明显的缺点是它构建了一个很不平衡的训练集(a very imbalanced training set),0的数量比1多太多了。一个简单粗暴的方式是在输出变回0之前,多次输出1,即在固定的一段时间内输出多个1,这样稍微提高了1与0的比例。

错题

  1. 在机器翻译中,如果我们在不使用句子归一化的情况下使用集束搜索,那么算法会输出过短的译文。
  1. 在触发词检测中, x^<t>是时间 t 时的音频特征(就像是频谱特征一样)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值