语音识别2 -- Listen,Attend,and Spell (LAS)
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。
语音识别2 -- Listen,Attend,and Spell (LAS)的更多相关文章
- Paper | LISTEN, ATTEND AND SPELL: A NEURAL NETWORK FOR LARGE VOCABULARY CONVERSATIONAL SPEECH RECOGNITION
目录 1. 相关工作 2. 方法细节 2.1 收听器 2.2 注意力和拼写 本文提出了一个基于神经网络的语音识别系统List, Attend and Spell(LAS),能够将语音直接转录为文字. ...
- 深度学习与人类语言处理-语音识别(part1)
语音识别 语音识别该何去何从? 1969年,J.R. PIERCE:"语音识别就像把水变成汽油.从大海中淘金.治疗癌症.人类登陆月球" 当然,这是50年前的想法,那么语音识别该如何 ...
- LAS(Listener、Attender、Speller)端到端构架
基于注意力(Attention)机制的端到端系统,又被称为LAS端到端构架. [6] W. Chan, N. Jaitly, Q. Le, O. Vinyals. Listen, Attend and ...
- 什么是end-to-end神经网络?
https://www.zhihu.com/question/51435499 来源:知乎著作权归作者所有. 国立台湾大学的李宏毅教授在其机器学习课程中有讲到深度神经网络的 End-to-end Le ...
- Attention and Augmented Recurrent Neural Networks
Attention and Augmented Recurrent Neural Networks CHRIS OLAHGoogle Brain SHAN CARTERGoogle Brain Sep ...
- 深度学习与人类语言处理-语音识别(part2)
上节回顾深度学习与人类语言处理-语音识别(part1),这节课我们将学习如何将seq2seq模型用在语音识别 LAS 那我们来看看LAS的Encoder,Attend,Decoder分别是什么 Lis ...
- 深度学习与人类语言处理-语音识别(part3)
上节回顾深度学习与人类语言处理-语音识别(part2),这节课我们接着看seq2seq模型怎么做语音识别 上节课我们知道LAS做语音识别需要看完一个完整的序列才能输出,把我们希望语音识别模型可以在听到 ...
- (zhuan) Deep Reinforcement Learning Papers
Deep Reinforcement Learning Papers A list of recent papers regarding deep reinforcement learning. Th ...
- 极客DIY:制作一个可以面部、自主规划路径及语音识别的无人机
引言 现在大部分无人机厂商都会为第三方开发者提供无人机API接口,让他们更容易地开发无人机飞行控制应用程序,让无人机想怎么玩就怎么玩.有的API接口可以帮助开发者开发基于Web版的APP.手机APP甚 ...
随机推荐
- 走在深夜的小码农 Fourth Day
Css3 Fourth Day writer:late at night codepeasant 学习大纲 一.emmet语法 1.简介 Emmet语法的前身是Zen coding,它使用缩写,来 ...
- 专题五:redis的数据类型之set
一.基本简介 现在出现了新的查询需求:存储大量数据的同时,还需要在查询方面提供更高的效率.虽然list满足存储大量的数据,也可以通过索引来进行访问,但是list底层是双向链表的结构,在查询上的效率并没 ...
- Flink的DataSource三部曲之二:内置connector
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Docker(5)- docker version 命令详解
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 作用 显示 Docker 版本信 ...
- solr 文档二
SOLR 5.5.5文档 参考博文: http://blog.csdn.net/matthewei6/article/details/50620600 作者:毛平 时间:2018年1月15日 17:3 ...
- leetcode 98:n-queens-ii
题目描述 继续思考"n-queens"问题 这次我们不是输出皇后的排列情况,而是输出n皇后问题一共有多少种解法 Follow up for N-Queens problem. No ...
- 对于STM32F103的USART的通讯调试
USART:(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步串行接收/发送器USART是一个全双工通用同步/异步串行收发 ...
- Spider--补充--Requests--session&cookie
# session 与 cookie # 可能大家对session已经比较熟悉了,也大概了解了session的机制和原理,但是我们在做爬虫时如何会运用到session呢,就是接下来要讲到的会话保持. ...
- centos常用指令之-卸载
卸载centos自带java: rpm -qa|grep java // 查询javax相关 xxxxxxxxxxxxxx # 卸载1.2方式 # 1 yum -y remove java xxxxx ...
- 2012年游戏软件开发独立本科段01B0815自考科目
01B0815自考科目 课程代码[学分] 课程名称 03708[02] 中国近现代史纲要 03709[04] 马克主义基本原理概论 03684[10] 综合英语(四) 01042[05] 应用数学 0 ...