神经网络
神经网络是一个复杂的函数
前馈神经网络,多层神经网络有强大的拟合能力.
神经网络用于语音识别
Tandem结构
最初:前端:特征提取->DNN (神经网络代替MFCC)
神经网络提取特征:
- 输入
- 连续若干帧的滤波器组输出 (如当前帧+前5帧+后5帧)
- 甚至直接输入波形
- 输出
- 上下文有关音素的分布
- 标准答案由GMM+HMM系统提供
- 特征来自瓶颈层(bottleneck,将某一层控制的特别窄:醉翁之意不在酒,变相提取特征)
Hibrid结构
- 不再进行特征提取
- DNN+HMM声学模型
- 原先,GMM提供P(特征|状态)
- 现在,DNN提供P(状态|输入)
- 成品系统中没有GMM
循环神经网络
HMM对上下文的建模能力有限–源于马尔可夫性(上下文看到的不多)
补救:
- MFCC特征中的差分
- DNN声学模型输入连续多帧滤波器组输出
- 上下文有关的音素模型
用神网来取代HMM–循环神经网络
双向神经网络
- 梯度消失或爆炸问题
- 导致RNN记忆力有限
- 解决:LSTM/GRU(复杂的非线性函数)
- RNN在语音识别中的用途:
- 为什么一直留着HMM?
- 神经网络只进行逐帧判别
- 训练时,需要由HMM提供各音素起止时间
- 解码时,需要考虑状态转移概率
CTC
告别HMM
语音信号->解码器(声学模型CTC/词典/语言模型不限于bigram,可用神经网络)->识别结果
- 不再逐帧施加监督
- 只要求各帧输出练成标答音素串
- 对齐方式由网络自行处理
有写帧输出空
- 代表静音,以及分割相邻的重复音素
- 实际上大部分帧输出为空
训练
- 目标函数
- 所有能连成标答音素串的输出总概率
- 最大化P(音素串|语音) = ∑P(音素串,对齐|语音)
- 条件独立假设
- P(音素串,对齐|语音)可拆成各帧概率之积
- 认为上下文已由RNN处理
- 动态规划算法
解码
- Best-path vs beam search(所有对齐方式求和)
- CTC输出音素串,仍需词典和语言模型转换成单词串
-
Phoneme vs grapheme(字符)
- 训练时,一直字符串,需要转换成音素串
- 解码时,CTC输出音素串,需要结合字典和语言模型转换成字符串
Grapheme系统
语音信号->解码器(CTC神经网络)->识别结果
- 优点
- 简洁
- 不需要语言知识
- 不怕生祠
- 可进行端到端训练
- 缺点
- 需要大量的训练数据
- 难以利用纯文本数据训练语言模型
往往外接语言模型
语音信号->解码器(CTC神经网络)外接语言模型(一般是神网)->识别结果
Transducer
CTC需要外接语言模型还有别的原因–各帧输出独立的假设太过粗暴
加一个RNN作为输出的语言模板
光标移动于状态转移的交错,定义了对齐方式.
- 与CTC相比的优势
- 训练过程与CTC类似
- 解码一般使用beam search
注意力机制
- CTC与Transducer 常常输出空,代表只思考,不输出
-
引入注意力
- 每步主动选择输入,并输出一个音素或字符
- 由编码器和解码器两部分组成
- 编码器(可理解成特征提取)
- 解码器
-
特点
- 软对齐
- 目标函数不再是所有对齐方式概率之和
- 允许对齐不单调
- 系统结构
看似复杂了,实则无伤大雅
- 也可以外界语言模型
- 语音信号->编码器->解码器(语言模型)->识别结
Transducer从原理上最适合语音识别
但不能完爆其他模型
- CTC实时解码效果好
- 注意力在编码采样率低时更鲁棒
有把多种模型相结合的尝试
语音识别现状
- 模型简介,容易训练和使用
- 在理想情况下的性能可与人媲美
- 在恶劣条件下不堪一击
语音识别的未来
- 有针对性的应对恶劣条件
- 收集大数据,让神经网络”长见识”
- 相关领域的配合
赞