- 1. 语音情感识别、人工神经网络,深度学习神经网络发展历程介绍
- 2. 语音情感识别的基本理论
- 3. 人工神经网络
- 4. 深度学习神经网络基本理论
1. 语音情感识别、人工神经网络,深度学习神经网络发展历程介绍
- 深度学习常用模型: 自编码器、限制玻尔兹曼机、卷积神经网络
- 应用:图像识别、语音设别、广告推荐系统
- 情感分类:anger,joy,sadness,surprise,disgust,fear,netural
- 情感表现:语音,面部表情,肢体语言
- 语音情感识别定义:同各国对人类的语音进行分析,似的计算机能够识别出人类语音中的情感
- 语音识别工作:
- 搭建数据库:样本量大,具有代表性,样本标签具有平衡性的数据库是建立语音情感识别的基本条件。
- 建立描述模型:对语音的情感描述,并且语音的情感做分门别类
- 特征提取:将能够表现语音情感的特征进行提取
- 特征选择:将原本提取出来的特征进行选择,除去那些会影响结果准确率的特征;降低特征的维度,避免维度灾难
- 识别算法:机器学习中的分类算法,大部分的机器学习分类方法都适合语音情感识别算法:贝叶斯网络,支持向量机,神经网络,隐马尔科夫模型,高斯混合模型,集成算法,近邻算法
- 语音情感识别发展历史
- 1985年,学者Minsky提出
- 1985-1990,MIT 发明了“情感编辑器”
- 1990, Moriyama 提出语音与情感之间关联模型,应用到了电子商务系统中的用户语音情感识别
- 1990-2000,初步阶段,语音情感识别主要研究语音的声学特征
- 2000, 第一个语音情感识别研究国际会议在爱尔兰召开,之后创立包含语音情绪感知的会议和期刊
- 人工神经网络的发展
- 人工神经网络是对大脑生物系统进行一定的描述模仿简化和抽象得到的。
- 19世纪末,Waldeger开始提出神经元学概念
- 1943,W·Mcculloch W·Pitts在神经元学基础上抽象归纳,提出神经网络模型的基本数学模型
- 1948, 冯诺依曼提出了自动再生网络结构
- 1950, 感知机提出
- 1968, 感知机存在限制
- 1982, 加州理工学院Hopfield 提出递归神经网络,将神经网络作为一个动态系统,并在系统系统中引用能量函数进行训练,依靠能量函数,神经网络的稳定性的研究得到证明。
- 1984, Hopfield 使用神经网络进行优化计算以及联想存储
- 1986,在神经网络领域中提出并行分布式计算
- 1986,BP算法问世
- 1988, 利用径向函数提出分层神经网络
- 1990, 支持向量机和VC维数概念提出
- 到现在,从理论研究到实践应用,已经成为了跨学科理论
深度学习神经网络的发展史
- 深度学习是用来直接尝试解决抽象认知这个难题的方案
- 2006,加拿大Geoffery Hinton提出深度新年网络算法,使用非监督学习的逐层贪心训练算法
- 2012,Geoffery Hinton 在世界上最大的图像数据库ImageNet实验,错误率从20%降到了15%
- 2012, AndrewNg(吴恩达)和Jeff Dean 开始谷歌大脑项目研究工作,1.6万个GPU并行计算平台训练深度神经网络的参数,项目在图像识别和语音识别方面取得了巨大的进步。
- 2012, 微软提出自动同声传译系统。首先要通过语音识别将演讲的内容变成对对应语言的文字;将识别的文字使用机器翻译成中文文本;将中文文本翻译成为中文。
- 2013,谷歌收购DNN Research创业公司,GeoffreyHinton机器学习之父在这家公司
- 2013,Facebook 邀请了学术专家Yann LeCun任人工智能实验室主任
- 2013,百度成立深度学习研究院,聘请专家AndrewNg---斯坦福大学教授,入学时代周刊著名科学家
语音情感识别应用:
- 电子商务系统中,采集用户的语音进行识别
- 客服
2. 语音情感识别的基本理论
- 语音情感识别的基本流程
- 建立语音情感数据库
- 语音信号预处理
- 语音情感特征提取
- 特征选择
- 识别模型训练
- 语音情感识别结果
语音情感数据库介绍
Befaset英语情感数据库
通过40位录音这,对5个段落进行演讲录制得到。年龄范围在18岁到69岁,其中20各男生20个女生。演讲者按照anger,sadness,happiness,fear,neutrual演绎每一段话
柏林EMODB德语情感数据库
10位演员,5男5女,10个句子7中期干演绎
FAU AIBO 儿童情感数据库
语音样本最大的数据库,18000多条语句,人工识别打标签
CASIA汉语情感数据库
国内比较完善的语音数据库之一。五类情感:悲哀,生气,高兴,中性,害怕,人工筛选后还剩9600条语句
ACCorpus 系列汉语情感数据库
国内另一个比较出名的数据库,清华大学和中科院心理研究所合作录制。
Surrey 视听表情情感数据库
7类情感:生气(anger),厌恶(disgust)害怕(fear), 高兴(happiness), 中性(neutral), 伤心(sadness), 惊讶(suprise)
语音信号预处理
采样和量化
原始语音信号是一个连续的模拟信号,经过采样后变成了时间离散但是幅度连续的信号,需要对这个语音信号进行量化处理,常用的量化处理方法:均匀量化和非均匀量化。
预加重和分帧加窗
语言信号在一个很短的时间里面,可以看做是一个稳定的状态,叫做准稳态。 通常会把语音信号进行分帧,每一帧的长度大概是20ms~30ms.
但是现实中,相邻的帧是有相关性的,所以,一般前后两帧之间有重叠的部分,也就是帧移。
分帧和帧移可以用来更好的描述声音信号。语音情感特征的提取
- 特征提取的好坏关系分类器准确率的高低。
- 常见的特征分类:
- 连续性特点的韵律特征
- 反应较短时间特点的谱特征
- 其他特征:
- 声音质量特征
- 融合特征
- i-vector特征
- TEO特征
- EMD特征
- FD特征
- 深度学习提取的特征
interspeech2010基准特征集上囊括了绝大部分的韵律特征。其中, MFCC 是谱特征,其他的都是韵律特征
常用的谱特征
- 线性预测倒谱系数LPCC
- 过度幅度峰值ZCPA
- Mel倒谱系数MFCC
- 感知线性预测倒谱系数PLP
- RASTA感知线性预测倒谱系数 RASTA-PLP
- 短时连贯性SMC
Mel倒谱系数 语音情感特征的提取
- MFCC是Mel频率倒谱系数的缩写,参数原理是根据人类耳朵听觉机理的特征提取出来的。在人类的听觉系统中,对于声音的高频部分,存在着某种掩蔽效应,并且在高频部分,Mel跟频率f是存在非线性关系,接近对数关系,但是,人类的听觉系统在声音的低频部分比较敏感,声音的感知与声音的频率f是成正比的
- MFCC 提取流程: 首先将经过加窗预处理的语音信号进行快速傅里叶变换,将时域信号变换为频域信号,从而得到了信号的功率谱;然后进行滤波,滤波器通过的区域大概是人类听力的区域;最后再通过离散余弦变化去除各维信号之间的相关性,将信号映射到低维空间
- 语音情感特征短时能量 短时能量是指语音信号在较短时间内的能量值,与声音震动强弱相关,通缩来讲一个人说话越大声,能量越大。而一个人生气惊讶的时候发出的能量要比平时大很多
- 语音情感特征统计函数 除了之前来源于生理学的特征之外,还有些来源于统计学的特征:最大值,最小值,均方差,平均值,回归参数,协方差等等
特征选择算法
- 特征选择是指在提取出来的全部特征中选择一定的特征子集,从而利用这些特征子集构造出更好的分类模型,在机器学习的实际应用中得到的特征的数量较多,容易出现冗余或者是不相关特征。特征不相关或者特征冗余出现两个缺点:分析特征训练模型需要的时间特别长;引起维度灾难,模型太过复杂导致推广能力也随之下降
- 特征选择算法的时间复杂度较高,一般先从提取出的特征本质表达来判断是否有助于提高识别准确率,然后再使用特征选择算法。
- 特征选择算法分为:线性特征选择算法和非线性特征选择算法
- 特征选择算法步骤:
- 将全部特征在产生的过程中生成哥哥特征子集;
- 通过一条评价函数对哥哥特征子集进行评价,计算各个特征子集分数
- 查看评价分数较高的特征子集是否达到算法初始设置的停止准则要求,如果达到,进行函数验证,否则从头再继续生产特征子集
语音情绪识别分类算法
语音情感识别的分类算法跟机器学习中常用的分类算法并无太大的区别。在机器学习中,常用且公认的效果比较好的算法有:高斯混合模型、贝叶斯网络、人工神经网络、近邻算法、隐马尔科夫模型、支持向量机模型、k-means聚类算法、Softmax回归分类器等
- 高斯混合模型GMM
- 理解:语音信号的本质特征来讲,语音经过特征提取后的声音特征向量其实是一个概率密度函数,这个特征向量可以看是状态数是1的连续的分布的隐马尔科夫模型。而对应的高斯混合模型,可以看成是只有一个状态的多为概率密度函数。同时,对于每一种语音情感生成的概率密度分布都具有模型比较稳定,参数比较简单的优点,并且能够体现出声学的基本特征。 高斯混合模型要比隐马尔科夫模型得到的效果要好一些。
- 使用GMM识别流程:
- 将语音情感数据提取特征
- 进行聚类,聚类的方法可以是常见的聚类方式,如K-means,AP聚类等
- 将各个聚类得到的结果当成高斯分布函数,同时对应计算这个高斯分布函数的均值,协方差矩阵,概率值,从而得到一个训练模板来训练各种语音情感
- 将各个语音情感测试数据分别一一输入到训练时得到的训练模板,得到该语音属于每一种情感的后验概率,后验概率最大的训练模板就是该语音情感数据的输出结果
- 支持向量机SVM
- 理解: 支持向量机的主要思想理论是将所有的特征向量都映射到更高维空间上面,然后,在这个空间中,寻找最大的超平面将这些特征向量分开。理论上讲,当来两个平行的超平面的间隔距离越大,分类器计算出来的结果的误差就越小。
- 支持向量机模型的参数设置关键在于核函数的选择,从理论上讲,使用不同的核函数得到的额分类模型也会不一样。核函数的作用是将低维空间向量映射到高维空间向量上,从而解决低维空间中比较难寻找间隔超平面的问题。 但是也会存在维数灾难的问题
- 隐马尔科夫模型HMM
- 隐马尔科夫模型现在已经被很多研究工作者应用到语音情感识别中,在语音情感识别中,利用语音具有时序的特征,隐马尔科夫模型可以将状态变换与特征进行结合,随着时间的变化,不同的情感之间也会产生不同的变化。
- 隐马尔科夫的识别准确率(75.6%)高于支持向量机模型,高斯混合模型识别准确率高于隐马尔科夫模型
- SoftMax 回归分类器
- 逻辑回归分类器是一个二元分类器,Softmax回归分类器是一个多类分类器。
- 使用多个逻辑回归分类器同样可以进行多类分类,但是,作为逻辑回归分类器的拓展,Softmax对于分类类别有互斥的情况下优选,其他情况下还是选择多个逻辑回归分类比较好
- 高斯混合模型GMM
3. 人工神经网络
- 人工神经网络
- 人工神经网络的优点:
- 具有自学能力
- 具有联想存储功能
- 高速寻找最优解
- 具有分布式的特点
- 人工神经网络的缺点:
- 人工神经网络在证明自己的基础上没有完全的理论依据
- 使用的数据必须特别充分,不充分容易出现过拟合的现象
- 把所有的特征变成数字化,是数值计算,容易丢失一定的数据信息
- 使用相当靠用户的经验,人工神经网络参数设置相当重要,靠人力设置
- 人工神经网络的优点:
神经网络模型
- 人工神经网络的神经元的功能是将多个输入分量,以及每个输入分量自己对应的权值,通过某种函数关系得到一个输出值。
- 神经元是人工神经网络模型的基本单位
- Xn 是输入向量,
- Wn 是每个输入分量的权重
f是激励函数,也称为激活函数,传输函数,传递函数,常见的激励函数有硬限值函数(hardlim),线性函数,高斯径向基函数,Sigmoid函数等。
不同的激励函数会导致人工神经网络出现跟大的差异,一般来讲,使用人工神经网络时候,激励函数的确定也需要根据网络的结构特征以及研究对象本身的特点来选择合适的激励函数
b 值是一个偏置值,也称为阈值
V 是基函数值,常见的基函数为:距离基函数,椭圆基函数等。其中,如果在多维空间里面,距离基函数则表示为一个以权重为中心的超球,椭圆机函数则是一个椭球体。
分层神经网络 Xn 称为输入层,中间的神经元称为隐藏层,最后的输出称为输出层。
隐藏层可以有很多,关于神经元的层数问题,不同书籍常常有不同的定义,主要看输入层和输出层是否计入层次的数量中。
神经元是细胞的数字化,神经网络模型是以神经元为基础的数学模型,它可以看做是人类大脑的一个简单的数字化
神经网络类别
神经网络分类方式如果是依靠学习策略来分类,此时人工神经网络可分为:
- 有监督学习网络:依靠研究目标领域中提供训练数据中进行模型训练,训练的依据包括输入数据,同样包括样本标签
- 无监督学习:模型在训练的时候并不知道数据分类的结果是否正确,也就是说,训练过程中,人工神经网络并不知道什么样的学习方式是正确的,就是么有收到监督式增强。此时,网络仅仅根据提供收入的淑女,就从提供的数据中找到其中潜在的类别规则
依靠网络结构进行分类:
- 前馈网络:数据的流向只能向前。前馈网络中,神经元节点分为两类,输入节点:与外界相连得到外界数据的节点;计算节点:有多个输入,但是只有一个输出。在前馈网络中,第K层只与第K-1层跟K+1层相连,其中K-1层的输出是第K层的输入,K+1层的输入又是第K层的输出。
- 反馈网络:从输入到输出都具有反馈连接的特点。而前馈网络只有前馈连接。反馈网络根据网络的结构特点,还可以进一步分为泉反馈与部分反馈两种类型
反向传播算法(BP 算法)
- 1974年被提出,80年代中期得到应用重视。
- BP算法主要由两个环节组成,分别是:
- 激励传播
- 前向传播阶段
- 反向传播阶段
- 权重更新
- 激励传播
- 激励传播跟权重更新不断迭代循环,直到输出数据跟原始数据误差小于初始设置的阈值。 
- 算法流程:前向传播阶段是输入数据从输入层开始,逐层计算,通过了全部的隐藏层之后再经过输出层得到最终结果,然后将输出层的实际结果跟期望结果进行比较,看两者的误差是否小于初始设置的阈值,如果不小于则进入反向传播阶段,在反向传播的过程中,把之前计算出来的误差信号按照跟前向传播相反方向回传,然后对各个隐藏层之间的神经元的权重进行学习调整,使得最后的误差满足初始设定的要求。
4. 深度学习神经网络基本理论
深度学习算法主要解决的是人工智能中抽象认知的难题,是目前最接近人脑的智能学习算法
深度学习是一种神经网络,传统的人工神经网络一般只是一种浅层模型,深度学习是一种深层模型,深层模型可以提高机器学习分类器的准确性
天然层次化的特征,研究对象本身就具有层次化的特征。
- 英文文本的语义理解中,先输入各种字母,各种字母可以按照一定的组合组成单词,单词之间组合成词组,词组迭代组合成句子,段落,最后变成文章,最后再进行语义理解
- 图像识别中,输入的数据是图像的像素矩阵,得到浅层特征是由矩阵中的部分像素构成的线条文理,之后中层特征由浅层特征构成了图案局部,最后构成了整个对象,然后完成对图像识别
- 对于语音识别,元时输入是语音信号,特征逐步抽象为频段,声音,音调,音速,单词,语音识别等等
- 
仿生学依据
- 人工神经网络是模仿了人类神经系统而被科学家提出来的一门学科。1981年,生物学家David Hubel 和Torsten Wesel 通过实验发现了人类大脑对眼睛看到的信息处理是分级的。视皮层是分级的。
- 人类的大脑是对一个原始信号,先做低级的抽象然后逐渐向更高级的抽象迭代过去, 人类的大脑最后的思考方法,便是使用了高度抽象
- 特征层次的可表现性
深度学习神经网络常用模型
- 自编码器 通过使用无监督学习的方法学习出一个输入值与输出值接近相等的神经网络模型。 在网络中,往往存在着大量的数据之间存在着某种关系,使用这些数据训练自编码器之后,使得输入与输出接近相等时,我们可以即使你认为,自编码器未经解码最后的隐藏层的输出是对这些数据很好的压缩。变体有:稀疏自编码器,栈式自编码器,栈式降噪自编码器等
- 卷积神经网络 一般的神经学习网络是属于全连接的网络,如自编码器与限制玻尔兹曼机,但是这种全连接的网络在输入层神经元个数表较少的情况下的学习速度可以,当输入连接节点数据很大的时候,耗费的时间成本是巨大的,因此,为了解决一些输入维度比较大的问题,一般是采用部分连接的网络模型:如卷及神经网络。
深度学习神经网络参数的设置
- 网络结构的选取,使用稀疏自编码,卷积神经网络,限制玻尔兹曼机
- 层次数量上的选择,层次越多,代表提取出越高级的特征,但是在实践中,简单的增加层次的数量有时候会不见得准确率,反而还会增加计算量
- 学习率的设置也不是越大越好,越小越好,不同的具体问题有不同的学习率
- 还有其他的参数如:神经元数量的设置,最小批处理的数量,卷积核大小的设置,参数初始化等问题
深度学习神经网络训练的加速
GPU加速
在深度学习中使用GPU进行加速的原理主要是基于矢量编程,而GPU处理器有自己独特的结构,包含了上千个流程处理器,通过这些流程处理器,矢量化变成才能真正的并行运行,实现他高效计算的特点。
图形处理器在使用矢量化编程的时候,其程序执行时间一般只有一个CPU的几十分之一,甚至是千分之一。
通过图形处理器的计算能力来学习深度学习神经网络,能够很好地利用众多流程处理器的特点。
数据并行
数据并行的意思是说将分类器学习需要的数据进行分块,然后每个分块的数据可以在同一时间上进行学习,数据之间还是要做一些信息的交互的,一般通过一个参数服务器来实现这种交互。
在学习的过程中,每个分块数据的学习彼此之间不相关,但是这些分块数据的学习结果,最后必须上传到参数服务器,之后参数服务器再根据之前得到的结果重新更改出新的模型参数;最后,把得到的模型参数重新发给哥哥数据分块学习程序中,这些数据分块就再重新进行学习,如此反复。
数据并行的实现方法有两种:
同步模式
全部的数据分块学习程序都是学习同一个批次的学习数据,学习结束后,经过同步处理,一起进行参数交换,然后通过参数服务器得到最新的模型数据,再同事学习这个最新的模型数据
异步模式
每一个分块数据学习程序结束后,不需要考虑其他分块数据的学习程序,直接跟参数服务器进行信息交互,也就是说,第二种方法中,每一个分块数据的学习程序的得到的结果,没有及时反映到其他分块数据的学习程序中, 除非等到其他程序也完成了学习,跟参数服务器进行了信息交互。
计算集群
使用计算集群加速学习深度学习神经网络的方法也就是构建一个CPU集群,这也是目前互联网公司搭建的深度学习开源框架中常用的一种方法。目前国内外常用的CPU集群搭建深度学习软件框架的比较出名的两个:
谷歌的DisBelief 系统
AndrewNg 和 Jeff Dean 在谷歌用来实现DNN学习的系统
腾讯的Mariana系统。
Mariana 是腾讯深度学习发展的大趋势而大力投入的一款系统,目前已经落地正是应用在实际应用中,值得一体的是Mariana系统主要是以图形处理器为主搭建的,不过在Mariana系统的三个主要框架中有一个框架是搭建了CPU集群来实现DNN学习的
开源软件
- Kakli 是一款语音交互软件,但不涉及语音合成的工具集
- Cuda-convert Hinton 学生Alex 放到开源社区上的工具集
- Theano 使用Python来写,继承了numpy功能,拥有强大的矩阵计算的能力
- Caffe 开源软件的作者是谷歌工作的华人贾清扬。caffe的中文名称是卷积神经网络框架。caffe最大的特点是它可以在CPU和GPU上加速CNNs的实现和学习。
- OverFeat 主要开发语言是C++,同时集成了其他脚本语言:Python Lua Matlab
- Torch7 使用了LuaJIT脚本
实际应用的软件框架
- 谷歌:DisBelief系统,基于CPU集群实现数据并行化和模型并行化方法加速学习
- Facebook:通过GPU实现数据并行化和模型并行化。
- 百度:Paddle,使用GPU实现数据并行化和模型并行化,同时百度的软件框架中有一个参数服务器协调各个GPU之间的学习。
- 腾讯: Mariana实现了数据并行化和模型并行化,不仅使用GPU也使用了CPU集群。