LAS、CTC、RNN-T、NT、MoChA

LAS

LAS是一个做语音识别的经典seq2seq模型,主要分为三个部分Listen、Attention、Spell

Listen

Listen部分就是一个encoder。
输入声学特征向量,提取信息、消除噪声,输出向量。
在这里插入图片描述
encoder可以是RNN
在这里插入图片描述
也可以是CNN。比较常见的是先用CNN,再用RNN
在这里插入图片描述
还有一种趋势是使用Self-Attention
在这里插入图片描述

Down Sampling减少取样

由于声音的采集通常都是很大数据量的。比如采样率为16KHz需要在一秒钟采集16000个采样点,所以通常需要对声音的特征向量进行Down Sampling,减少样本数。

对于RNN,
方法一是通过使用两层RNN,4个向量通过第一层RNN输出4个向量,通过第二个RNN输出2个向量
方法二是把通过RNN输出的四个向量中,每隔一个输出向量
在这里插入图片描述

对于CNN,使用TDNN的方法,可以认为一段附近的几个特征向量差不多,采取使用第一个和最后一个向量,减少样本参数。

对于Self-Attention,计算当前向量和所有向量(1秒16K)计算量太大,只计算一个范围内的注意力。
在这里插入图片描述

Attention

我们可以直接编码解码之后直接输出,但是我们当前的编码解码不仅限于这一个编码向量,还取决于周围的编码向量,所以要做attention。

注意力机制如下图所示。 z z z是待训练的向量,初始时随机初始化, z z z与每个 h h h做match得到注意力分数 α α α
match的方法有两种,一种是Dot-product,另一种是Addictive。
在这里插入图片描述
在这里插入图片描述
做完match之后,每个 h h h的注意力分数 α α α做softmax,然后对应比例的h相乘相加,得到向量 c c c c 0 c^{0} c0作为decoder(Spell)的输入。
在这里插入图片描述

Spell

c 0 c^{0} c0作为decoder的输入
随机初始化的 z 0 z^{0} z0经过训练之后得到 z 1 z^{1} z1 z 1 z^{1} z1作为RNN的隐状态输入
通过RNN,输出|V|维向量经过Softmax,输出最大概率的token。
在这里插入图片描述
z 1 z^{1} z1作为待训练的向量,与每个 h h h做attention,得到 c 1 c^{1} c1作为输入
把得到的Token加入RNN网络, z 1 z^{1} z1训练后得到的 z 2 z^{2} z2作为隐状态,训练得到下一个Token
在这里插入图片描述

CTC

在这里插入图片描述

它的结构很简单,就是input经过一个Encoder进行输出,输出经过分类器、softmax之后得到token。

在这里插入图片描述
由于在一小段音频中(10ms),音频中可能没有什么有价值的内容,这时候不容易预测token值,所以在词表中添加一个符号 ∅ \varnothing ,用 ∅ \varnothing 表示目前不能识别此处的token,也许在看到下一个音频段的时候知道了此处是什么,然后再输出此处的token。

在这里插入图片描述
最后处理输出,把 ∅ \varnothing 去掉,把重复的tokens合并起来。

在这里插入图片描述

CTC在训练时,预测的token和真实token计算损失时,会有一个问题,你不知道 ∅ \varnothing 会出现在哪个位置,会有很多种情况。实际上会把所有情况都用于训练。
在这里插入图片描述
CTC的问题:encoder输出后经过一个线性分类器,每个分类器输入一个向量,输出一个向量,token之间没有互相关联,预测时不看前后出现的token。

RNA

在这里插入图片描述
RNA模型就是一种解决CTC问题的模型。
它把CTC的线性分类器改成LSTM,把前一个计算的输出和hidden state参与到后面的token预测中。

RNN-T

目前前面所述的模型的decoder都是一个输入只输出一个token,现实中也有一个输入输出多个token的情况。比如语音说“th”这个单词时,只发了一个音,如果输出是“t”显然不合适。

我们可以改变词表,手动加入一些像“th”,“zh”等等这些作为token。但我们更希望模型本身灵活且健壮。

RNN-T输入一小段音频之后,一直进行输出,直到没有token可输出时,输出 ∅ \varnothing

在这里插入图片描述
它有和CTC一样的问题, ∅ \varnothing 会出现在任何位置,在计算损失时增加训练难度。

解决方法是,在最后增加一个RNN模型(语言模型),这个RNN忽略 ∅ \varnothing ,只把Token当作输入进行训练,所以可以通过大量文字训练这个RNN。
在这里插入图片描述

Neural Transducer

上述模型,每次只读一个音频片段就进行输出。

NT每次读 w w w个片段, w w w个片段做attention,然后经过LSTM
在这里插入图片描述

在这里插入图片描述

MoChA

Neural Transducer每次移动的窗口是固定的。MoChA是一种不断变换窗口大小的。
在这里插入图片描述
encoder层输出之后的,按序判断窗口是否该在此h处
在这里插入图片描述

总结

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CNN-RNN-CTC是一种用于语音识别深度学习模型。这个模型结合了卷积神经网络(CNN),循环神经网络(RNN)和连续标签分类(CTC)的算法。 首先,卷积神经网络(CNN)被用来从原始语音信号中提取特征。CNN通过一系列卷积和池化操作,可以有效地捕捉到语音信号中的时频特征。这些特征在后续的处理中起到了很重要的作用。 其次,循环神经网络(RNN)在特征提取后的序列数据上进行处理。RNN具有记忆功能,可以处理变长的序列数据。这使得RNN能够更好地建模语音信号的时序关系,从而提高语音识别的性能。 最后,连续标签分类(CTC)是一种解决无对齐标签序列训练问题的方法。在语音识别中,输入序列和输出序列之间的对齐是未知的,这使得传统的监督学习方法难以应用。CTC通过引入一个空白标签和重复标签,可以将输入序列的输出序列映射到最有可能的标签序列。通过优化CTC损失函数,我们可以训练模型来进行语音识别,并且不需要进行手工的对齐。 总而言之,CNN-RNN-CTC模型将卷积神经网络的特征提取能力,循环神经网络的序列建模能力和连续标签分类的对齐能力相结合,能够有效地解决语音识别中的训练问题,提高语音识别的性能。 ### 回答2: CNN-RNN-CTC是一种常用的深度学习模型,适用于序列标注任务,如语音识别或文本识别。该模型结合了卷积神经网络(CNN)、循环神经网络(RNN)和连续条件随机场(CTC)的优势。 首先,CNN经常被用于图像处理任务,能够有效提取图像特征。在CNN-RNN-CTC模型中,CNN用来对输入的声学特征或图像进行特征提取,将其转化为更适合序列任务的形式。 其次,RNN是一种能够处理序列数据的神经网络,能够捕捉到数据的时间依赖关系。在CNN-RNN-CTC模型中,RNN用来对CNN提取的特征进行进一步处理,从而得到更加准确的序列标注结果。 最后,CTC是一种解决序列对齐问题的方法。在CNN-RNN-CTC模型中,CTC用来实现无对齐标签的序列学习,可以自动进行对齐和标注的训练。它中的条件随机场层可以根据输入序列和标签序列之间的对应关系,计算出最可能的标签序列。 综上所述,CNN-RNN-CTC模型能够利用CNN提取输入的特征,RNN处理序列数据,CTC解决标签对齐问题,从而有效地解决序列标注任务。在语音识别或文本识别等方面有较好的应用效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值