语音识别算法阅读之LAS

LAS:
  listen, attented and spell,Google
思想:
  sequence to sequence的思想,模型分为encoder和decoder两部分,首先将任意长的输入序列通过encoder转化为定长的特征表达,然后输入到decoder再转化为任意长的输出序列;相比于传统sequence to sequence在decoder部分引入attention机制,让模型自学习特征相关性,有助于提升识别效果,对静音和噪声具有较好鲁棒性

  其中,输入序列x=(x1,x2,x3,....xT),每个时间片声学特征为40维logfbank; 隐层状态h=(h1,h2,h3,....,hU),U<T; 输出序列y=(<sos>,y1,y2,y3,....,yS,<eos>),<sos>和<eos>分别代表起始和结束符号

模型:

  • encoder采用1 BLSTM(512)+3 pBLSTM(512)的金字塔状结构,能够将原始时间片减少到1/8,从而剔除冗余信息,加速decoder部分训练;
     其中, i为第i个时间片,j为第j个隐层;
  • decoder采用两层的单向LSTM(521)结构,且引入attention机制
 
    其中,Φ和ψ表示MLP网络
  • 目标函数:最大化每个时间片的log概率
 
 
  • 解码:beam width=32的beam search+n-gram Rescore
 其中,|y|c为字符长度,实验中λ=0.008
细节:
  • pBLSTM结构能够有效解决模型收敛缓慢和识别效果较差的问题,这种金字塔结构可以减少上层隐层的输出时间片个数,从而剔除冗余信息,加速deocder训练
  • LSTM结构相比传统RNN,能够有效缓解梯度弥散,网络采用均匀分布进行初始化u(-0.1~0.1)
  • attention机制能够自学习特征相关性,一定程度上屏蔽干扰信息,比如静音、噪声等
  • decoder部分在训练时,如果采用当前时间片的输入为上一时刻的标签这种模式;那么在测试时,模型因为无法利用groundtruch信息而影响识别结果;论文在训练中采用10%的概率采用上一时刻的预测输出作为当前时刻的输入,从而缓解训练和测试的差异性
  • 解码时采用beam search+LM Rescore形式,能够带来5%的提升效果
  • 解码时,每一时刻的输出概率进行归一化处理,缓解模型偏向较短的路径
  • 论文还证明了,相比于CTC结构,网络结构具有学习隐式语言模型的能力,比如“triple a”和“aaa”
  • 数据部分采用2000小时的Google voice search utterances,抽取10小时dev set和16小时test set;此外,采用混响和噪声增强使的数据量扩大了20倍

效果:

  • 模型在最优的情况下取得了clean 10.3%和noise 12.0%的WER
  • LM Rescore带来了5%的效果提升
  • decoder训练时采用sample方式将上一时刻预测输出作为当前时刻输入,带来了2%的提升
  • google state-of-the-art模型CLDNN clean 8.0%和noise 8.9%;论文分析原因在于CLDNN中采用了CNN的前置结构,CNN作为浅层特征提取器,能够增强频域不变形,为LSTM提供更强大的特征表达
  • 作者对LAS进行了基于pytorch的代码实现,并使用kaldi做数据准备、特征提取和cmvn;并在aishell1上进行了训练
  • 实现中,模型的输入是240维fbank特征
  • 模型的encoder部分采用3层BLSTM结构,结点数为256,采用droput=0.2
  • deocder采用1层LSTM,结点数512
  • attention结构中,MLP网络采用两层线性层,第一层线性层输出维度512,激活函数tanh,第二层线性层输出维度为字典个数4203,MLP输出后接softmax
  • 解码部分采用beam width=30的beam search算法得到最终的最优解码,未使用额外的LM
  • 优化函数adam
  • aishell1 test cer: 13.2%

 Reference:

[1] https://arxiv.org/pdf/1508.01211.pdf
posted @ 2020-09-13 16:00  卑微的蜗牛  阅读(2032)  评论(0编辑  收藏  举报