如何用 RNN 实现语音识别?| 分享总结

2017 年 12 月 15 日 AI研习社 杨文

循环神经网络(RNN)已经在众多自然语言处理中取得了大量的成功以及广泛的应用。但是,网上目前关于 RNNs 的基础介绍很少,本文便是介绍 RNNs 的基础知识,原理以及在自然语言处理任务重是如何实现的。文章内容根据 AI 研习社线上分享视频整理而成。

在近期 AI 研习社的线上分享会上,来自平安科技的人工智能实验室的算法研究员罗冬日为大家普及了 RNN 的基础知识,分享内容包括其基本机构,优点和不足,以及如何利用 LSTM 网络实现语音识别。

罗冬日,目前就职于平安科技人工智能实验室,曾就职于百度、大众点评,担任算法研究员;中国科学院研究生院硕士,主要研究方向为语音识别,自然语言处理。

  循环神经网络(RNN)基础

主要内容:

  • 普通 RNN 结构

  • 普通 RNN 的不足

  • LSTM 单元

  • GRU 单元

  • 采用 LSTM 实现语音识别的例子

RNN 和 CNN 的区别

普通卷积神经网络(CNN)处理的是 “静态” 数据,样本数据之间独立,没有关系。

循环神经网络(RNN)处理的数据是 “序列化” 数据。 训练的样本前后是有关联的,即一个序列的当前的输出与前面的输出也有关。比如语音识别,一段语音是有时间序列的,说的话前后是有关系的。

总结:在空间或局部上有关联图像数据适合卷积神经网络来处理,在时间序列上有关联的数据适合用循环时间网络处理。但目前也会用卷积神经网络处理语音问题, 或自然言语理解问题,其实也是把卷积神经网络的计算方法用到这上面。

RNN 的基本结构和结构展开示意图:

普通 RNN 的不足之处

首先是神经网络里面的计算,可以大致分为三类:函数合成,函数相加,加权计算。

在计算过程中,经常会用到激活函数,比如 Sigmoid 激活函数。残差在往前传播的过程中,每经过一个 Sigmoid 函数,就要乘以一个 Sigmoid 函数的导数值,残差值至少会因此消减为原来的 0.25 倍。神经网络每多一层,残差往前传递的时候,就会减少至少 3/4。如果层数太多,残差传递到前面已经为 0,导致前层网络中国呢的参数无法更新,这就是梯度消失。

LSTM 单元和普通 RNN 单元的区别

主要大的区别是,采用一个叫 “细胞状态(state)” 的通道贯穿了整个时间序列。

通过精心设计的称作 “门” 的结构来去除或增加信息到细胞状态的能力。

" 忘记门”

“输入门” 的打开关闭也是由当前输入和上一个时间点的输出决定的。

“输出门”,控制输出多少,最终仅仅会输出确定输出的那部分。

所有的公式汇总:

增加 peephole 的 LSTM 单元

让几个 “门” 的输入数据除了正常的输入数据和上一个时刻的输出以外,再接受 “细胞状态” 的输入。

GRU 单元

它是各种变种之一,将 “忘记门” 和 “输入们” 合成了一个单一的 “更新门”,同时还混合了细胞状态和隐藏状态。

接下来用 RNN 做一个实验,给大家介绍一个简单的语音识别例子:

关于 LSTM+CTC 背景知识

2015 年,百度公开发布的采用神经网络的 LSTM+CTC 模型大幅度降低了语音识别的错误率。采用这种技术在安静环境下的标准普通话的识别率接近 97%。

CTC 是 Connectionist Temporal Classification 的缩写,详细的论文介绍见论文 “Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks”

CTC 的计算实际上是计算损失值的过程,就像其他损失函数一样,它的计算结果也是评估网络的输出值和真实差多少。

声音波形示意图

在开始之前,需要对原始声波进行数据处理,输入数据是提取过声学特征的数据,以帧长 25ms、帧移 10ms 的分帧为例,一秒钟的语音数据大概会有 100 帧左右的数据。

采用 MFCC 提取特征,默认情况下一帧语音数据会提取 13 个特征值,那么一秒钟大概会提取 100*13 个特征值。用矩阵表示是一个 100 行 13 列的矩阵。

把语音数据特征提取完之后,其实就和图像数据差不多了。只不过图像数据把整个矩阵作为一个整体输入到神经网络里面处理,序列化数据是一帧一帧的数据放到网络处理。

 如果是训练英文的一句话,假设输入给 LSTM 的是一个 100*13 的数据,发音因素的种类数是 26(26 个字母),则经过 LSTM 处理之后,输入给 CTC 的数据要求是 100*28 的形状的矩阵(28=26+2)。其中 100 是原始序列的长度,即多少帧的数据,28 表示这一帧数据在 28 个分类上的各自概率。在这 28 个分类中,其中 26 个是发音因素,剩下的两个分别代表空白和没有标签。

设计的基本网络机构

原始的 wav 文件经过声学特征提取变成 N*13,N 代表这段数据有多长,13 是每一帧数据有多少特征值。N 不是固定的。然后把 N*13 矩阵输入给 LSTM 网络,这里涉及到两层双向 LSTM 网络,隐藏节点是 40 个,经过 LSTM 网络之后,如果是单向的,输出会变成 40 个维度,双向的就会变成 80 个维度。再经过全连接,对这些特征值分类,再经过 softmax 计算各个分类的概率。后面再接 CDC,再接正确的音素序列。

真实的语音识别环境要复杂很多。实验中要求的是标准普通话和安静无噪声的环境。

如果对代码讲解(详细代码讲解请点击视频)感兴趣的话,可以复制链接中的代码:https://github.com/thewintersun/tensorflowbook/tree/master/Chapter6

运行结果如下:



新人福利




关注 AI 研习社(okweiwu),回复  1  领取

【超过 1000G 神经网络 / AI / 大数据,教程,论文】



基于 LSTM-RNN 的语音声学建模技术

  

登录查看更多
3

相关内容

RNN:循环神经网络,是深度学习的一种模型。
最新《多任务学习》综述,39页pdf
专知会员服务
264+阅读 · 2020年7月10日
【ICML2020-华为港科大】RNN和LSTM有长期记忆吗?
专知会员服务
74+阅读 · 2020年6月25日
一份循环神经网络RNNs简明教程,37页ppt
专知会员服务
172+阅读 · 2020年5月6日
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
212+阅读 · 2020年4月26日
《深度学习》圣经花书的数学推导、原理与Python代码实现
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
深度学习自然语言处理综述,266篇参考文献
专知会员服务
229+阅读 · 2019年10月12日
复旦大学邱锡鹏老师《神经网络与深度学习》书册最新版
神经网络与深度学习,复旦大学邱锡鹏老师
专知会员服务
118+阅读 · 2019年9月24日
你有哪些深度学习(rnn、cnn)调参的经验?
七月在线实验室
10+阅读 · 2019年3月27日
干货 | 循环神经网络(RNN)和LSTM初学者指南
THU数据派
15+阅读 · 2019年1月25日
三次简化一张图:一招理解LSTM/GRU门控机制
机器之心
15+阅读 · 2018年12月18日
猿桌会 | 语音识别技术分享
AI研习社
5+阅读 · 2018年11月14日
阿里流行音乐趋势预测-深度学习LSTM网络实现代码分享
机器学习研究会
11+阅读 · 2017年12月5日
RNN在自然语言处理中的应用及其PyTorch实现
机器学习研究会
4+阅读 · 2017年12月3日
RNN | RNN实践指南(1)
KingsGarden
21+阅读 · 2017年4月4日
Neural Image Captioning
Arxiv
5+阅读 · 2019年7月2日
Arxiv
11+阅读 · 2018年10月17日
Symbolic Priors for RNN-based Semantic Parsing
Arxiv
3+阅读 · 2018年9月20日
Arxiv
11+阅读 · 2018年5月13日
Arxiv
6+阅读 · 2018年2月24日
Arxiv
10+阅读 · 2018年2月17日
Arxiv
8+阅读 · 2018年1月25日
VIP会员
相关VIP内容
最新《多任务学习》综述,39页pdf
专知会员服务
264+阅读 · 2020年7月10日
【ICML2020-华为港科大】RNN和LSTM有长期记忆吗?
专知会员服务
74+阅读 · 2020年6月25日
一份循环神经网络RNNs简明教程,37页ppt
专知会员服务
172+阅读 · 2020年5月6日
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
212+阅读 · 2020年4月26日
《深度学习》圣经花书的数学推导、原理与Python代码实现
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
深度学习自然语言处理综述,266篇参考文献
专知会员服务
229+阅读 · 2019年10月12日
复旦大学邱锡鹏老师《神经网络与深度学习》书册最新版
神经网络与深度学习,复旦大学邱锡鹏老师
专知会员服务
118+阅读 · 2019年9月24日
相关资讯
你有哪些深度学习(rnn、cnn)调参的经验?
七月在线实验室
10+阅读 · 2019年3月27日
干货 | 循环神经网络(RNN)和LSTM初学者指南
THU数据派
15+阅读 · 2019年1月25日
三次简化一张图:一招理解LSTM/GRU门控机制
机器之心
15+阅读 · 2018年12月18日
猿桌会 | 语音识别技术分享
AI研习社
5+阅读 · 2018年11月14日
阿里流行音乐趋势预测-深度学习LSTM网络实现代码分享
机器学习研究会
11+阅读 · 2017年12月5日
RNN在自然语言处理中的应用及其PyTorch实现
机器学习研究会
4+阅读 · 2017年12月3日
RNN | RNN实践指南(1)
KingsGarden
21+阅读 · 2017年4月4日
相关论文
Neural Image Captioning
Arxiv
5+阅读 · 2019年7月2日
Arxiv
11+阅读 · 2018年10月17日
Symbolic Priors for RNN-based Semantic Parsing
Arxiv
3+阅读 · 2018年9月20日
Arxiv
11+阅读 · 2018年5月13日
Arxiv
6+阅读 · 2018年2月24日
Arxiv
10+阅读 · 2018年2月17日
Arxiv
8+阅读 · 2018年1月25日
Top
微信扫码咨询专知VIP会员