16

Human Language Processing——CTC

 3 years ago
source link: https://www.wmathor.com/index.php/archives/1462/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

相比LAS算法,CTC能够克服LAS不能online的弊端。只要在Encoder阶段,不采用Bi-LSTM,那么CTC就可以online

CTC算法是如何处理的?

CTC是Connectionist Temporal Classification的缩写,它可以做到线上实时地语音识别。它用的是单向的RNN,且只作为编码器,用MLP作为解码预测文字分布。RNN对当前语音输入xi编码成hi。MLP再对它乘上一个权重,接上Softmax。但有时候当前的语音输入可能并不能对应实际的文本token,所以预测要额外多一个为空的类别,表示模型不知道要输出什么,因此最终会得到V+1大小的概率分布

qUZz6re.png!web

CTC没有下采样,所以输入和输出的序列长度都是T。模型预测完后,它还要进行后处理,一是把重复的token合并,二是空类别去掉,最终才是预测序列。CTC的这种预测方式,会让它的数据标注变得很难,因为要确保刚好每个输入声音特征都对应一个正确的token。而标注语料的数量,会直接影响模型评测的表现。此外,一个序列正确的标注方式又可以存着很多种,造成标注多标准问题。这也加大标注数据选择的困难

7BVbmqE.png!web

CTC的效果如何?

单纯使用CTC的效果并不是很好;单纯使用CTC的WER处在30左右;采用CTC+LM的WER普遍能够达到10左右

EnQfqi7.png!web

事实上,LM的引入正是为了克服CTC independent解码所基于的不合理假设。也因此,通过LM进行后处理后,能够大幅提升CTC的效果。从这个角度来说,CTC并不是end-to-end的

CTC有什么问题?

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

QJvuYji.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK