Listen,Attend,and Spell(LAS)
Listen是Encoder,Spell是Decoder
以下这些模型都是seq2seq模型。只是不同的类别。
1.Listen的做法
Listen是讲输入源acoustic feature x转为h(向量)的过程。
输出的h即为资料库。
Listen的模型:(Encoder)(抽象)
功能:
- 抽出有关内容的信息
- 消除杂声
特点:
1.输入与输出个数相同
2.输出的是更高级的表示
Encoder的做法:(具体实现)
输入量与输出量相同
1.使用RNN
2.使用1-D CNN
x1,x2,x3组成了一个filter,同样的声音特点可以生成不同的filter。不同的filter可以生成更高层的filter。如下例,b1,b2,b3生成的filter就已经遍历到了x1,x2,x3,x4.
3.使用RNN+CNN(最常见的做法)
前面几层用CNN,后面几层用RNN
Self-attention Layers
参考机器学习。
Down Sampling:
目的:减少数据的输入量:相邻的向量,差距不大
*Pyramid RNN:*将相邻的两个合成一个。
Pooling over time:相邻的两个只选择一个。
Time-delay DNN(TDNN)
由于相邻向量相似,为了减少数据量,去掉中间两个向量。
Truncated Self-attention
由于数据量众多,所以我们在输出h3的时候只考虑一部分范围内的x,而不是考虑整段声音讯号。
2.Attention的做法
Attention的模型:(抽象)
Encoder输出的h为资料库,z0是外部定义的关键字向量,attention的目的是将h和z0通过match进行数学运算,输出一个新的向量α10。
而α10代表了h和z的相似度。
Attention的实现(具体)
Dot-product Attention
将h和z分别进行linear transform(线性变换),生成的新的向量再通过Dot-product运算生成α。
&alpha即为h和z的相似度。
Additive Attention
将h和z分别进行linear transform(线性变换),生成的新的向量相加,再进行tanh变换,变换后的向量再经过linear transform输出α。
Context Vector:(Decoder的输入)
经过上述方法得到的α1,α2,α3,α4,经过SoftMax(即让α的加和为1),再将每一个α*对应的h加和,即为c0。
c0在文献中叫Context Vector,它作为decoder中,RNN模型的输入。
3.Spell的做法
得到的c0作为RNN的输入,z1是它的hidden state output,z1再乘以一个transform就得到了distribution。
distribution就是所有token的概率,它的向量size为V,相当于用向量表示每个token出现的概率是多少。
将生成的z1与h再做Attention,会生成c1。
然后c1作为RNN的输入,而这次hidden state的输出会考虑到前一个输出的token,才生成的z2。
递归调用直到输出EOS。(End of sentence)
Beam Search:
在decode中会使用beam search.
假设V=2,只有A,B两个字母。在decode时一直选择概率最大的字母,叫做Greedy Decoding。
问题:Greedy decoding不一定能够找到几率最大的输出。
反例如下,我们先选择B,开始的概率可能低,但后来0.9的概率很高。
解决这种问题使用的方法是beam search.
Beam Search中一直保留B个最好的路径,如下例,B为2,一直选择概率最高的两条路径。
4.Training
one-hot vector:由V组成的向量,其向量值只为0或1,如字母为c,则=[0,0,1,0,0···,0]
将c和Distribution做Cross entropy,让cross entropy的值越小越好,即让distribution的值接近c。
Teacher forcing:
在最初训练时,不论第一个字母输出的是什么,我们都先给第二个字母出入正确的答案。因为最初模型内数据为随机值,最初的训练可能是混乱的,所以为了节约时间,都给到正确的输入,防止训练产生错误结果。
5.Back to Attention
3种Attention的方式:
1.将生成的ct作为下一轮的输入
2.将生成的ct作为这一轮的输入
3.将生成的ct既作为这一轮的输入,又作为下一轮的输入。
Location-aware attention
目的:使在生成结果的时候更多的从左向右考虑,而减少来回跳动考虑。
即在上一轮中,选定一部分α放在process history中,也作为match输入的一部分。
LAS的问题:
没办法一边听一边做语音辨识。