前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Human Language Processing——CTC

Human Language Processing——CTC

作者头像
mathor
发布2020-07-28 15:18:08
3580
发布2020-07-28 15:18:08
举报
文章被收录于专栏:mathormathor

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

CTC算法是如何处理的?

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

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

CTC的效果如何?

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

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

CTC有什么问题?

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CTC算法是如何处理的?
  • CTC的效果如何?
  • CTC有什么问题?
相关产品与服务
时序数据库 CTSDB
腾讯云时序数据库(TencentDB for CTSDB)是一种高效、安全、易用的云上时序数据存储服务。特别适用于物联网、大数据和互联网监控等拥有海量时序数据的场景。您可以根据实际业务需求快速创建CTSDB 实例,并随着业务变化实时线性扩展实例。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档