本次学习笔记主要记录学习深度学习时的各种记录,包括吴恩达老师视频学习、花书。作者能力有限,如有错误等,望联系修改,非常感谢!
序列模型(三)- 序列模型和注意力机制
- 一、序列结构的各种序列(Various sequence to sequence architectures)
- 二、选择最可能的句子(Picking the most likely sentence)
- 三、集束搜索(Beam Search)
- 四、改进集束搜索(Refinements to Beam Search)
- 五、集束搜索的误差分析(Error analysis in Beam Search)
- 六、(选)Bleu得分(Bleu Score)
- 七、注意力模型直观理解(Attention Model Intuition)
- 八、注意力模型(Attention Model)
- 九、语音识别(Speech recognition)
- 十、触发字检测(Trigger Word Detection)
第一版 2022-07-22 初稿
一、序列结构的各种序列(Various sequence to sequence architectures)
如图的法语翻译为英语,首先建立编码网络(图下左),是一个RNN结构,RNN的单元可以是GRU也可以是LSTM,每次只向该网络输入一个法语单词,将输入序列接收完毕后,会输出一个向量代表这个右边解码器的输入序列。
解码器每次输出一个翻译后的单词,直到结尾。
给一张猫图,能自动的输出改图的描述。图下为AlexNet结构,去掉最后的softmax层,预训练的网络可以是图像的编码网络。
得到4096维的向量,输入到RNN中,生成图像的描述,
二、选择最可能的句子(Picking the most likely sentence)
1.建立一个语言模型:
能让你估计句子的可能性。
2.机器翻译:
绿色是编码网络,而紫色是解码网络,解码网络和刚才语言模型几乎一摸一样,而语言模型几乎以零向量开始,而解码网络以绿色输出为输入,称为条件语言模型。概率取决于输入的法语句子。
将被告知不同英语翻译所对应的概率,并不是从得到的分布中随机取样,而是找到一个英语句子y,使得条件概率最大化。通常算法是Beam Search。
为什么不用贪心搜索呢?
贪心搜索,生成第一个词的分布后,将会根据条件语言模型选出最有可能的第一个词进入机器翻译模型,然后挑选第二个词等。
但是,真正要做的是一次性挑选整个单词序列,从y1到yTy使得整体的概率最大化。
如图第一个翻译明显比第二个好,但挑选完Jane is后,若每次挑选则going概率会高。
三、集束搜索(Beam Search)
集束搜索算法,首先挑选要输出的英语翻译中的第一个单词,列出了10000个词的词汇表(忽略大小写),绿色为编码网络,紫色为解码部分,来评估一个单词的概率值。
1.集束搜索会考虑多个选择,会有个参数B,叫做集束宽,本例设为3,于是集束搜索会考虑3个可能结果,然后存入计算机内存。
2.针对每个第一个单词考虑第二个单词是什么,如下图Step1到Step2的过程。
3.为了评估第二个词的概率,如图右上第一个网络,假设第一个估计in,传给下一个,在in情况下第二个是什么单词。找的是第一个和第二个单词对的最大概率。网络机构下为概率。
4.如第二个网络图,若第一个单词是jane,同样操作。
5.若搜索到"in September",“jane is”,"jane visits"三个可能,去掉setember作为第一个单词的选择,减少到两种可能。
6.集束搜索会挑选出针对前三个单词的三个最可能的选择。
7.再加一个单词继续,直到结尾标志
四、改进集束搜索(Refinements to Beam Search)
长度归一化是对集束算法稍作调整的一种方式。
概率小于1,乘起来会得到很小很小的数字,会造成数值下溢。实践中取log,严格单调递增的函数。最大化logP。
同样可以归一化,除以翻译结果的单词数量。更柔和的方法,是在Ty上加上指数a。有时称作“归一化的对数似然目标函数”
B很大,更好的结果,但算法运行慢,内存占用大;
B很小,结果没那么好,但运行块。
不同于广度优先搜索和深度优先搜索,集束搜索更快,但不保证找到argmax的准确最大值。
五、集束搜索的误差分析(Error analysis in Beam Search)
一部分是神经网络结构,实际是个编码器-解码器结构;另一部分是集束搜索算法。
上述模型计算P(y*|x),RNN计算P(yhat|x),比较两者大小,其实是小于等于。
1.P(y*|x)大,意味着,集束搜索选择了yhat,而y*更大。
2.P(y*|x)小于等于,可能是RNN模型出错了。
若使用了长度归一化,就不是比较这两种可能性的大小,而是比较长度归一化后的最优化目标函数值。
如图过程,即误差分析过程。
六、(选)Bleu得分(Bleu Score)
Bleu(bilingual evaluation understudy双语评估替补)做的是,给定一个机器生成的翻译,它能够自动地计算一个分数来衡量机器翻译的好坏。
机器翻译缩写为MT,观察输出结果的每个单词是否出现在参考中,被称为机器翻译的精确度。
改良的评估:把每个词的积分上限定为它在参考句子中出现的最多次数。在句1中,the出现两次,比句2多。
使用二元词组,定义截取计数Count_clip,计算其总和为4,除以二元词组的总个数。
一元词组:
P
1
=
Σ
u
n
i
g
r
a
m
s
∈
y
^
C
o
u
n
t
c
l
i
p
(
u
n
i
g
r
a
m
)
Σ
u
n
i
g
r
a
m
s
∈
y
^
C
o
u
n
t
(
u
n
i
g
r
a
m
)
P_1=\frac{\underset{unigrams∈\hat{y}}{\varSigma}Countclip\left( unigram \right)}{\underset{unigrams∈\hat{y}}{\varSigma}Count\left( unigram \right)}
P1=unigrams∈y^ΣCount(unigram)unigrams∈y^ΣCountclip(unigram)
n元词组:
P
n
=
Σ
u
g
r
a
m
s
∈
y
^
C
o
u
n
t
c
l
i
p
(
u
g
r
a
m
)
Σ
u
g
r
a
m
s
∈
y
^
C
o
u
n
t
(
u
g
r
a
m
)
P_n=\frac{\underset{ugrams∈\hat{y}}{\varSigma}Countclip\left( ugram \right)}{\underset{ugrams∈\hat{y}}{\varSigma}Count\left( ugram \right)}
Pn=ugrams∈y^ΣCount(ugram)ugrams∈y^ΣCountclip(ugram)
BP为惩罚因子。
七、注意力模型直观理解(Attention Model Intuition)
使用双向RNN,不用A表示感知机,S表示RNN的隐藏状态。注意力模型会计算注意力权重,用a<1,1>表示当你生成第一个词时你应该放多少注意力在这个第一块信息处。会有一个上下文c。
注意力模型参考。
八、注意力模型(Attention Model)
如图右方紫,a<1,t>'是注意力权重,a<t’>来自上边。a<t,t’>就是y<t>应该在t’时花在a上注意力的数量。
s<t-1>是上一个时间步的隐藏状态,a<t’>就是上个时间步的特征是另一个输入。
此算法缺点是要花费三次方的时间。
日期标准化:
九、语音识别(Speech recognition)
seq2seq应用于语音识别:
音频数据常见的预处理步骤就是,运行这个原始的音频片段,然后生成一个声谱图。
注意力机制用于语音识别。
连接暂时分类:
假设语音一段话,_是空白符。
基本规则是,将空白符之间的重复的字符折叠起来
十、触发字检测(Trigger Word Detection)
触发字系统,如Apple的Siri。
如图,要做的是,把一个音频片段计算出它的声谱图特征得到特征向量,然后发放到RNN中,最后要做的是,定义目标标签y。
但0的数量比1多太多。还有个解决办法:其实可以在输出变回0之前,多次输出1。