ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【笔记】HLP - 李宏毅 - 4 - 语音识别 - Part 3 CTC, RNN-T and more

2020-07-08 15:40:25  阅读:635  来源: 互联网

标签:输出 RNN 李宏毅 解码 HLP 隐层 CTC 标注


Connectionist Temporal Classification (CTC)

CTC可以用于线上实时地语音识别,编码器用的是单向的RNN,解码是用MLP来预测文字分布。
编码器将语音输入\(x^i\)编码成\(h^i\),MLP再对它乘上一个权重,接上Softmax,得到词表V大小的概率分布。
但有时候当前的语音输入可能并不能对应实际的文本token,所以预测要额外多一个为空的类别,表示模型不知道要输出什么。

CTC中没有使用下采样,所以输入和输出的序列长度都是T。
模型预测完后要进行后处理,一是把重复的token合并,二是把空类别去掉,得到最终的预测序列。

CTC的这种预测方式,会让它的数据标注变得很难,因为要确保刚好每个输入声音特征都对应一个正确的token。而标注语料的不足,会直接影响模型评测的表现。
此外,一个序列正确的标注方式又可以存着很多种,造成标注多标准问题。这也加大标注数据选择的困难。

由此采用的方法是穷举所有的可能的标注去训练。在数据集充足的情况下,CTC的效果还是不错的。

CTC模型的问题主要在,每个MLP的解码器工作是独立的。它可能会遇到一个奇怪的问题。
比如语音数据部分前三帧都在发音c,第一个隐层\(h^i\)解码出是c后,后面两个隐层就无须再解码出c了。
但由于它们是独立工作的,后面的解码部分不知道前面解码的是什么,所以第二个可能解码成空或c,第三个也可能解码成空或c。
但如果编码器是足够深的RNN,它也可能在编码过程中考虑这种前后关系的依赖,让第一个输出隐层包含更多关于c的信息,而后面两个隐层包含更多关于空类别的信息。

RNN Tansducer (RNN-T)

Recurrent Neural Aligner (RNA)

RNA:RNA是一个介于CTC和RNN-T的过渡模型,针对CTC独立解码问题,把MLP换成了RNN。

RNN-T:可以输出多个token。比如要输出th,CTC只能先输出t,然后在下一个时间点解码输出h,而RNN可以输入一个隐层,预测多个tokens。
不过,RNN-T与CTC一样会遇到训练数据难标注,标注多标准的问题。对此也是穷举所有可能的标注给模型训练。

RNN-T在解码过程中是如何确保输入一个隐层,输出多个token的呢?
输入一个\(h^t\),RNN-T会决定要产生一个"t"。这个"t"会被放到另一个RNN中,输出的隐层会放回RNN-T的解码器中作为隐层和之前的ht输入,来产生新的输出"h"。再反复一次。由于那另一个RNN看到过"h"了,就会输出新的东西。这个新东西再与之前的ht输入RNN-T,可能会得到一个空类别。而另一个RNN会无视掉这个空类别,把之前输出"h",与下一个隐层ht+1输入到RNN-T得到的新输出"e"。

标签:输出,RNN,李宏毅,解码,HLP,隐层,CTC,标注
来源: https://www.cnblogs.com/yanqiang/p/13267172.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有