LAS模型

1.论文出处

W. Chan, N. Jaitly, Q. Le and O. Vinyals, “Listen, attend and spell: A neural network for large vocabulary conversational speech recognition,” 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Shanghai, 2016, pp. 4960-4964, doi: 10.1109/ICASSP.2016.7472621

因为博客的内容是基于论文内容的理解,方便大家在写论文的时候引用,那就附录参考文献的详细信息啦,希望对大家有用,哈哈,免得大家在需要的时候再去查。博客的内容是基于上述的参考文献,并结合自己的理解,如果问题,希望大家留言讨论。

2.摘要

本文提出的LAS(listen,attend and spell)模型能在不借助发声模型(pronunciation model)、HMM或其他传统语音识别器的条件下,直接将语音信息(speech utterances)直接转换为字符(文章用character表示,即字符或者说字母)。其实,LAS模型是一个端到端的系统,并且是一个端到端的模型,其包含了声学模型(acoustic model)、发声模型(pronunciation model)、语言模型(language model)的功能,即将以前这三个模块的功能包含在一个神经网络里。与DNN-HMM、CTC等模型相比,LAS模型的优点是对输出字符序列的概率分布不作独立假设。LAS模型主要包含两个模型,分别是listener和speller。listener是一个金字塔形的循环网络编码器,其输入是滤波器组的频谱。speller是一个关于注意力机制的循环网络解码器,其输出的每个字符是基于全部的声音序列特征和之前输出的字符。本文选取Google的数据集,在没有字典和外部语言模型的情况下,WER是14.1%,在有语言模型的情况下,WER是10.3%,在同一个数据集上,SOTA的CLDNN-HMM的WER是8.0%

3.简介

(1)目前模型存在的问题:SOTA的语音识别器一般包含不同的模块,如声学模型、语言模型、发声模型、文本归一化等,但是这些模型对其模拟的数据做概率分布的假设(原文会距离说明,这里我就省略一下啦)。这些模型的端到端联合训练是为了减少上述问题(没错,这些问题指的就是模型对模拟数据做概率分布假设的问题)。在这些模型中,发声模型和语言模型很少更新,声学模型会根据WER来更新。
(2)本文的工作:提出一个LAS模型,该模型直接将音频序列信号转换为文字序列,每次转换一个字符,并且不使用其他模型的帮助(没错,其他模型指的就是HMM、语言模型等)。LAS主要包含了编码器和解码器。编码器是listener,解码器是speller。listener是一个金字塔的RNN,其作用是提取语音信号的高层特征。speller是一个RNN网络,其作用是在获取全部声学特征信息和前面输出字符的情况下,将高层特征转换为字符序列。
在每个步骤中,RNN通过内部状态(internal state)产生的注意力机制,从listener的高层特征来计算一个上下文向量context vector。RNN使用上下文向量context vector和内部状态internal state来更新内部状态internal state和预测序列的下一个字符。整个模型是从零开始训练,使用链式分解的方法,优化输出序列的概率。这个模型之所以叫端到端,是因为传统模型的全部参数都统一到神经网络的参数中,并且在训练过程中一起优化。传统的模型做不到这一点,传统的模型是更新声学模型acoustic model,但是其他模块不变。

4.模型算法介绍

下图是LAS模型的架构图。下面将分成五部分来介绍,第一,LAS网络基本框架介绍;第二,listen部分介绍;第三,attend and spell介绍;第四,learning学习部分介绍;第五,decoding和rescoring部分介绍。

在这里插入图片描述

一、LAS框架

模型的输入和输出分别为 x x x y y y
x = ( x 1 , x 2 , . . . , x n ) x=(x_1,x_2,..., x_n) x=(x1,x2,...,xn)
y = ( [ s o s ] , y 1 , y 2 , . . . , y s , [ e o s ] ) y=([sos],y_1,y_2,...,y_s,[eos]) y=([sos],y1,y2,...,ys,[eos])
其中 y i ∈ { a , b , . . . , z , 0 , 1 , . . . , 9 , [ s p a c e ] , [ c o m m a ] , [ p e r i o d ] , [ a p o s t r o p h e ] , [ u n k ] } y_i\in \{ a,b,...,z,0,1,...,9,[space],[comma],[period],[apostrophe],[unk] \} yi{a,b,...,z,0,1,...,9,[space],[comma],[period],[apostrophe],[unk]} y i y_i yi是输出序列的字符。[sos]、[eos]分别是句子开头和结尾的标志,[unk]表示未知标志。
LAS根据前面输出的字符 y < i y_{<i} y<i和输入信号 x x x,使用概率的链式规则,将输出字符 y i y_i yi建模成条件分布。
P ( y ∣ x ) = ∏ i P ( y i ∣ x , y < i ) (1) P(y|x)=\prod_i P(y_i |x,y_{<i})\tag{1} P(yx)=iP(yix,y<i)(1)
LAS模型主要包括两个子模块:listener和speller。
listener是声学模型的编码器,主要执行Listen操作,这个操作主要将原始信号 x x x转换为高层次的表示 h = ( h 1 , . . . , h U ) \boldsymbol h=(h_1,...,h_U) h=(h1,...,hU)且满足 U ≤ T U\leq T UT
speller是一个基于注意力机制的编码器,只要执行操作AttendAndSpell,这个操作将 h \boldsymbol h h作为输入,计算一个概率分布:
h = L i s t e n ( x ) (2) \boldsymbol h={\rm Listen}(x)\tag{2} h=Listen(x)(2)
P ( y i ∣ x , y < i ) = A t t e n d A n d S p e l l ( y < i , h ) (3) P(y_i|x,y_{<i})={\rm AttendAndSpell}(y_{<i},\boldsymbol h)\tag{3} P(yix,y<i)=AttendAndSpell(y<i,h)(3)
这两个模块如上图所示。

二、Listen

Listen操作使用金字塔型的BLSTM,记为pBLSTM,这个结构可以 h \boldsymbol h h的长度从 T T T减到 U U U,因为 T T T是输入信号的长度,输入信号可以很长。本文设置的结构是每层减少2倍。传统的BLSTM,当在第 i i i时间第 j j j层时,输出为:
h i j = B L S T M ( h i − 1 j , h i j − 1 ) (4) h^{j}_{i}={\rm {BLSTM}}(h^{j}_{i-1},h^{j-1}_{i})\tag{4} hij=BLSTM(hi1j,hij1)(4)
在pBLSTM中,其表达式如下:
h i j = p B L S T M ( h i − 1 j , [ h 2 i j − 1 , h 2 i + 1 j − 1 ] ) (5) h^{j}_{i}={\rm pBLSTM}(h^{j}_{i-1},[h^{j-1}_{2i},h^{j-1}_{2i+1}])\tag{5} hij=pBLSTM(hi1j,[h2ij1,h2i+1j1])(5)
在这个模型中,本文主要使用了3层的模型,所以模型减少了8倍。所以,注意力机制可以在更小的空间搜索相关信息。另外,深度模型可以学习数据的非线性表示。

三、Attend and Spell

在每一步的操作中,模型根据目前已经预测出的字符,来估计下一个字符概率分布。输出字符 y i y_i yi的分布与解码状态 s i s_i si和上下文向量context vector( c i c_i ci)有关。解码状态 s i s_i si与三个参数有关,分别为:前一个解码状态 s i − 1 s_{i-1} si1、前面预测的字符 y i − 1 y_{i-1} yi1、前一个上下文变量 c i c_i ci。上下文向量 c i c_i ci根据注意力机制计算得到。
c i = A t t e n t i o n C o n t e x t ( s i , h ) (6) c_i={\rm {AttentionContext}}(s_i,\boldsymbol h) \tag{6} ci=AttentionContext(si,h)(6)
s i = R N N ( s i − 1 , y i − 1 , c i − 1 ) (7) s_i={\rm {RNN}}(s_{i-1},y_{i-1},c_{i-1}) \tag{7} si=RNN(si1,yi1,ci1)(7)
P ( y i ∣ x , y < i ) = C h a r a c t e r D i s t r i b u t i o n ( s i , c i ) (8) P(y_i|x,y_{<i})={\rm{CharacterDistribution}}(s_i,c_i)\tag{8} P(yix,y<i)=CharacterDistribution(si,ci)(8)
其中,CharacterDistribution是MLP关于字符的输出,RNN是2层LSTM。
在时间 i i i中,注意力机制(文中用AttentionContext表示)产生一个上下文向量 c i c_i ci,这个上下文向量可以从声学模型获取产生下一个字符的信息。注意力模型是内容相关,解码器状态 s i s_i si与高层特征表示 h u h_u hu匹配,可以产生注意力因子 α i \alpha_i αi,用参数 α i \alpha_i αi对向量 h u h_u hu进行线性压缩,即可得到上下文向量 c i c_i ci
具体而言,在时间 i i i里,AttentionContext函数使用参数 h u h_u hu s i s_i si来计算标量波能量scalar energy(记为 e i , u e_{i,u} ei,u),其中 h u ∈ h h_u\in \rm{\boldsymbol h} huh。然后,标量波能量 e i , u e_{i,u} ei,u使用softmax函数,转换为概率分布。softmax概率当做混合权重,用于将高层特征 h u h_u hu压缩成上下文向量 c i c_i ci,如下所示:
e i , u = < ϕ ( s i ) , ψ ( h u ) > (9) e_{i,u}=<\phi (s_i),\psi (h_u)>\tag{9} ei,u=<ϕ(si),ψ(hu)>(9)
α i , u = e x p ( e i , u ) ∑ u ′ e x p ( e i , u ′ ) (10) \alpha_{i,u}=\frac{exp(e_{i,u})}{\sum_{u'}exp(e_{i,u'})}\tag{10} αi,u=uexp(ei,u)exp(ei,u)(10)
c i = ∑ i α i , u h u (11) c_i=\sum_i \alpha_{i,u} h_u\tag{11} ci=iαi,uhu(11)
其中, ϕ \phi ϕ ψ \psi ψ是多层感知机网络,训练后, α i \alpha_i αi分布比较集中,只关注小部分 h \boldsymbol h h中的帧;上下文向量 c i c_i ci可以看成是 h \boldsymbol h h的权重向量。

四、Learning

本文训练的目的是概率的对数最大,如下所示:
θ ~ = m a x θ ∑ i l o g P ( y i ∣ x , y ~ < i ; θ ) (12) \widetilde \theta=\mathop{max}\limits_{\theta} \sum_i log P(y_i|x,\widetilde y_{<i};\theta)\tag{12} θ =θmaxilogP(yix,y <i;θ)(12)
其中, y ~ i − 1 \widetilde y_{i-1} y i1是前一个字符的ground truth或从模型随机抽取的一个字符。

五、解码和重打分

在推理阶段,本文希望在已知声学输入的情况下,找到最合适的字符序列:
y ^ = a r g m a x y l o g P ( y ∣ x ) (13) \hat{y}=arg \mathop{max}\limits_{y} log P(y|x)\tag{13} y^=argymaxlogP(yx)(13)
本文在实验中发现对于短的语音,模型有小的偏移,所以,使用字符的数量和语言模型的概率 P L M ( y ) P_{LM}(y) PLM(y),对概率进行归一化:
s ( y ∣ x ) = l o g P ( y ∣ x ) ∣ y ∣ c + λ l o g P L M ( y ) (14) s({\rm{y|x}})=\frac{log P({\rm{y|x}})}{{|{\rm y}|}_c}+\lambda log P_{LM}({{\rm{y}}}) \tag{14} s(y∣x)=yclogP(y∣x)+λlogPLM(y)(14)
λ \lambda λ是语音模型的权重。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值