LAS是Listen(Encoder),Attend,和Spell(Decoder)的简称

第一个步骤Listen(Encoder)

listen的作用是输入一段语音信号,输出一段向量,去掉语音中的杂序,只保留和语音有关的部分。

上图中acoustic features表示的是每一帧的声音信号。

listen进行encoder

  • RNN

  • CNN

    将fliter沿着时间的方向扫过每一个acoustic features ,每一个fliter会吃一个范围的acoustic features进去得到一个数值,不同的fliter会产生不同的数值,最后生成的是一个向量。
  • self-attention layers

listen的时候进行down sampling(降采样)

一段声音信号表示成acoustic features的时候太长,1秒钟的声音信号有100个向量,且相邻的向量之间包含的信息量也相差不大,所以在做语音识别的过程中,为了保持训练过程更有效率,就产生了down sampling.

  • 减少RNN的运算量



    pyramid RNN

    Pooling over time

    上图中每一层都是RNN。左边是将相邻两个加起来送到下一层,右边是在相邻两个之间选择一个送到下一层。
  • 减少CNN和self-attention的运算量

    在做attention时,每一个时间点的feature都会去attend 整个输入序列中所有的feature,在做翻译时可能表现很好,但在语音识别中,一秒钟就有100个acoustic features,太长了,无法很好的做attention。因此truncated self-attention限制attention的长度,只看未来和过去一段时间的输入序列。

第二个步骤Attention

两种常用的attention方式

  • dot-product attention

  • additive attention

attntion 的过程

上图中$z_0$和encode的每一个$h$进行一个计算,$z_0$和$h1$计算得到$\alpha_01$ , 和$h2$计算得到$\alpha_02$ , ....。Encoder会输入一串acoustic features ,每一个acoustic features都对应一个输出,每一个输出都会得到一个$\alpha$,然后将得到的$\alpha$经过一个softmax层,得到$\hat{\alpha}$,最终$z_0$的attention的值$c0$为最后概率和输出的乘积形式。$c0$作为下一个decode的输入,在文献中$c^0$一般写成context vector。

第三个步骤Spell

  • 初始的$z_0$做attention后spell

    上图中输出distribute over all tokens就是对词典中每一个词汇生成一个概率,所有概率之和为1。具体输出什么词汇就看那个概率最大,概率最大的即为当前的输出。

  • 再拿hidden state 中的$z_1$继续去做attention



    算出新的$\alpha$的值,经过softmax后$\hat{\alpha}$值,最后用$\hat{\alpha}$乘以$h$得到$c^1$作为下一次decode的输入。



    上一次spell的输出(此处是c),上一个hidden state $z1$,和decode的输入$c1$共同决定了hidden state 的值$z2$,然后将$z2$做一个attention,以此类推,...其示意图如下:

训练

teacher forcing



在训练过程中可能会存在一个问题,就是之后的输出和之前的输出有关,所以如果前面的输入错了的话,后面无论怎么训练都无法达到好的训练效果,因此在训练时加一个teacher forcing ,直接将上一时刻正确的结果作为下一次的输入,避免前面一错全错。

attention的一些知识

  • attention的不同用法

    左边和右边的差异就是,attention得到的结果是在下一个time_step使用还是在这一个time_step使用。到底哪一个好也不好判断,但第一次用此方法做论文的是两种方法都使用了。attention得到的结果在当前步和下一步都使用一次。
  • location-aware attention

    在attention的过程中,按照我们的想法,应该是从左到右,注意力慢慢转移,但是在实际运算中,注意力可能是随便乱跳的,这就和我们的初衷相违背。

    现在在attention进行计算的时候,$z0$在和$h2$进行attention计算时,也要考虑与$h^2$相邻的区域的取值。

补充

1.Beam Search

原始的输出是寻找当前步骤的最大值(类似于贪心算法),很容易陷入局部最优,刚开始很好,但可能最后的一条路径并不是概率最大的。假设每次只有两种情况A,B供选择。beam search不是只保留当前的最大值,而是保留当前最优的k个值,k的具体取值自己调,k越大,找出最大路径的可能性越大,但是所需的算力也越大,k越小,所需的算力小,但是找出最大路径的可能性也越小,当k=1时,beam search 退化为贪心算法。

LAS的局限性

  • 1.LAS包含attention,所以需要encoder将所有的语音听完,这就导致无法听一部分就输出一部分,不能online。

最新文章

  1. 在SQL Server里为什么我们需要更新锁
  2. mysql性能监控相关
  3. ThinkPHP3.2.3--相对路径的写法
  4. ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆AnalyzerTool分词工具.非常实用!
  5. Arithmetic Progressions
  6. java.lang.NoSuchMethodError: org.springframework.web.context.request.ServletRequestAttributes.<init>
  7. 1497: [NOI2006]最大获利 - BZOJ
  8. Android SDK安装时碰到的问题之解决办法
  9. 关于SQL中的Update语句
  10. ASP和PHP限制IP访问 只允许指定IP访问 允许*号通配符过滤IP
  11. DOS和UNIX文本文件之间相互转换的方法
  12. OpenReports操作指南
  13. 【网络流#9】POJ 2135 Farm Tour 最小费用流 - 《挑战程序设计竞赛》例题
  14. linux循环递归设置权限
  15. [高并发]EntityFramework之高性能扩展
  16. vue 设计日历表
  17. 201621123031 《Java程序设计》第14周学习总结
  18. HDU-AcmKeHaoWanLe训练实录
  19. python入门(二):isinstance、内置函数、常用运算等
  20. SqlServer存储过程详解

热门文章

  1. Docker composer搭建Spring Cloud Alibaba 运行环境(二)
  2. Software Construction内容归纳
  3. CF618F Double Knapsack
  4. Lucas(卢卡斯)定理模板&&例题解析([SHOI2015]超能粒子炮·改)
  5. 4G DTU比GPRS/3G DTU的优势
  6. (C#2,.net framework2.0,Visual Studio 2003)之前版本
  7. Spark编程练习题
  8. layui的laypage实现分页/查询
  9. Linux C 获取本机所有网卡的 IP,Mask
  10. 思科ASA放行主/被动FTP