LSTM+CTC详解(4)

2018-12-27 15:54

这个热力图反映了什么,CTC这个误差从前向后的时候误差非常集中,说明从前向后说对这个声音的确定性很高。但是从后向前的时候,声音迅速分散,代表声音的不确定性很高。

这说明在语音识别中,从左向右对语音识别的结果贡献更大,从右向左有价值,但并非很重要。这意味着,我们可能做单向的LSTM模型,不需要右边的文本,也许可以精确建模。

而只有单向的LSTM模型才是工业产品可以接受的,因为它没有延迟,可以在线去解码。那么这个理论的分析结果,是在做之前实际上我们就想探寻的。如果后向Dominate了这个Process,那CTC的训练必须依赖右边的信息,否则的话整个语音识别是没有办法,整个的CTC训练是没有办法很好的收敛的。

但是很有幸,左边Dominate,右边有价值。CTC的解码过程,实际上CTC的空白占了绝对的优势,我给大家只是找到了一个简单的例子。比如说我们建模“简单可依赖”,那我们就简单每一个字去建模,blank可以无限延展,最后的解码路径就是这样的一个路径。每一个字只有一帧,无论你是什么样的建模单元只有一

帧。那这样的解码结果,在解码的时候会有很多优势,我们会有一个解码的算法加速。

然后CTC训练了尖峰生成,大家用机器学习直接做CTC训练,就是从一个裸的模型就硬做,可以做到。我见过很好的结果。而且做的过程,我们用一个概念叫拉尖峰,这个尖峰是一点点拉出来的,刚开始这个锯子什么也没有,“简单可依赖”的几个字,可能拉出来一个简单可可出来了,然后逐渐的拉紧,就把简单可依赖尖峰生成。那么对应的右边是误差的降低,刚开始的误差很大,逐渐误差会降低,这就是CTC训练的优化过程。

那么CTC有两个问题,第一,CTC能够提高人类对于语音的辨识能力吗,这个实际上是一种能力,这种算法是不是超越了现在所有的。第二个CTC能提供能提供工业产品的识别率吗?这个是有差异的。

比如说第一种方法我可以采用双向的建模,我可以采用多面的解码,反正我就无休止的做,我拿到最好的结果,我跟人去PK。第二个结果是指工业产品有设定的要求,有机在线解码的很多的需求,不能让用户无偿的等待,以及计算机计算资源的消耗,必须满足产品要求,那实际上这是两个问题。

那么我主要想对比一下HMM,DNN和CTC的差异。第一是模型结构差异,CTC引入了blank,我们实际上是有SP的,但是我姑且把它命名为差异。第二个CTC训练无须固定边界,对CTC而言是不需要的,裸的模型随便给我一个序列我可以做,自动的end to end 优化模型参数,这是他对应的两个,这是传统我们的CE训练,我们必须知道这个label,根据label算出误差去优化网络,那上面这个模型训练实际上就是CTC的模型。

那我们做CTC整个training的过程,我不是去拉尖峰,我是按照压尖峰的模式,我的尖峰都是往下压的。我的训练过程实际上是这样一个过程,首先出来两个空白,空白长大一点,空白又长大一点,空白再长大一点,最后留下来了一个尖峰,这是我的训练过程。我所有的训练都是采用这种训练模式,推荐给大家,大家可以选择,希望大家可以提出比我更好的训练方法。

CTC训练的区分度是非常关键的,区分度我用美国微软研究院的,当年是我的老板Jeff的话说这是艺术。区分度训练不是技术,很少有人能做的很好。这个东西全部是要通过各种细节去调节,全部运用参数去做。但它是语音识别领域对人工智能的重要贡献,这一点我永远引以为傲。在所有的机器学习理论中没有区分度训练,我认为区分度训练才是真正的end to end的学习。他直接得到解码结果,根据解码错误反馈来修正误差。

CTC的区分度跟传统的区分度没有差别,这里有两个重要的,一个是深度学习网络内部的梯度,一个是解码的区分度信息,这两个实际上是在一起的。然后我们可以在做CTC模型的时候,我可以对CTC模型维特比得到固定边界,这一点我们就是我们是这样做,大家也可以不这样做。

这个实际上就已经进入了传统语音识别的领域了,我有一个模型,我做一次切分,哪一个最大,哪一个定一些边界。得到固定边界之后,我们就可以进行区分度,这个过程跟传统的区分度一模一样,但是空白对CTC很关键,需要去做。

然后异步SGD的优化,我这个训练是采用异步SGD去做,我是属于一边解码一边update 模型,我两个是一同去做的。区分度训练CTC模型的收益和我的固定边界的模型是相当的,所以这一点是非常可贵的,这是我们区分度的结果,我们都有所有的实验。

然后我要讲的是CTC的解码,那CTC技术的解码,实际上跟传统的解码是有一定差异的,第一在图状态空间构建的时候,

每一个原来的你的一个建模单元,我们都是采用单状态。原来的一个因素必须是三状态,这是传统的状态建模,CTC是单状态的。

同时要增加一个可跳转的空白。解码的那个图空间构件基本元素就是这样的拓扑,CTC的解码很快,从两倍实施,把DNN打出来的结果固定,只是去算解码的时间。两倍的时速很慢,我把时间放的非常快,缩短到0.15倍实施,识别率没有任何降低。而缩短到0.05倍实施,识别率只降到0.2。


LSTM+CTC详解(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:SIYB创业培训复习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: