语音识别系统大科普【长文预警】【第二章】
Opened this issue · 0 comments
刚弄完与语音有关的毕业设计,对于语音识别系统算是入门了。
不同于图片识别,语音识别系统与其他时序系统一样,都是极度复杂的,为了让大家对这类系统有一定了解,特开此天坑。
//word图片不能直传,手动复制黏贴五十张图。。。辛酸
//word格式转换有点问题,因此部分公式不能较清楚地显示
//大部分图片取自网络,但所有文字均为手打
第二章隐马尔科夫模型(HMM)
语音识别任务需要对时间信号进行识别,只识别出某个语音帧是对应哪个音素还是不够的,需要考虑当前音素的上下文信息,即对音素的分类需要综合考虑当前帧的之前一段时间与之后一段时间出现的语音帧的分类结果。这通常是有效的,因为实践中语音信号作为一种短时平稳信号,某个音素通常会跨越多个语音帧,同时考虑上下文也可以排除一些不可能的音素序列(如汉语韵母+韵母的组合)。目前最常用的建模方式是采用隐马尔科夫模型。
2.1马尔科夫模型(Markov Model)
马尔科夫模型由安德烈·马尔可夫(Andrey Markov,1856-1922)提出,是一种离散随机过程。该模型描述了某个事物的状态随时刻变化时,某时刻处于某个状态的概率。
马尔科夫模型假设时刻t所处的状态St与之前时刻的状态有关,而与之后的状态无关。如事物A时刻1到t-1的状态依次是S1,S2...St,那么时刻t处于状态St的概率是:P(St|S1,S2...St-1),以天气为例,假设第1到3天的天气依次是晴,阴,雨,那么,第四天下雨的概率是P(雨|晴,阴,雨);第四天天晴的概率是P(晴|晴,阴,雨),假如现在是阴雨连绵的春季,那么有可能P(雨|晴,阴,雨)>P(晴|晴,阴,雨),即一下雨就会连续下好多天。
然而,在实际运用中,由于需要保存的离散概率数目随着状态的种类与时刻的长度成次方倍增长,假如时刻长度为n,每个时刻可能处于的状态数目是m,那么需要保存的概率数目将是m^n,因此,不可能保存无限长的时刻概率,事实上,这些概率通常由统计得到,因此也要求大到不现实的数据量来支持。通常而言,人们采用马尔科夫链,即假设当前时刻的状态对应的概率分布只与前一时刻有关,即:P(St|S1,S2...St-1)≈P(St|St-1)
而如果要求解某一状态变化序列发生的概率,则有:
P(S1,S2...St)=P(S1)*P(S2|S1)P(S3|S1,S2)...*P(St|S1,S2...St-1)
≈P(S1)*P(S2|S1)P(S3|S2)...*P(St|St-1)
特别地,当t=1时,S1的概率分布由统计得到或者自行定义,记为,即为初始时刻处于状态i的概率。
由此,状态之间的变化便大大地简化了,可以由一个图来说明,如图2-1:
图2-1 ,马尔科夫模型,图片取自网络
该图由四个结点与多条有向孤组成,在该模型中,存在四个状态0、1、2、3,当前一时刻处于状态1时,下一时刻处于状态0的概率是由1指向0的那条弧上的概率,而当前时刻处于1的概率是自环,由此不难想象,某个事物的状态在0、1、2、3这几个状态之间不断跳转。这个图可以由一个矩阵表示:
其中a12表示当St-1是状态1时,St是状态2时对应的概率P(St=2|St-1=1),该矩阵称为状态转移矩阵A。
2.2隐马尔科夫模型(Hidden Markov Model)
当事物的状态难以测量,而只能通过其他一些现象来推断时,便需要HMM来进行建模。假设事物只有某种特征可供观测,t时刻的观测状态称为Ot,t时刻对应的不可观测的本质状态称为隐藏状态,此外,HMM假设:
a、当前隐藏状态只与前一时刻有关
b、当前时刻的观测状态只与当前时刻的隐藏状态有关。
那么,t时刻的观测状态的概率分布如下式计算:
求解HMM生成某个特定的观测状态序列O1,O2...Ot的概率即求解:
P(O1,O2...Ot|HMM)
为了求解这个概率,需要计算所有隐藏状态的排列组合生成观测状态序列O1,O2...Ot的概率的和,即计算并求和所有的:
P(O1,O2...Ot,S1,S2...St)=P(O1|S1)*P(S1)*P(O2|S2)P(S2|S1)...*P(Ot|St)*P(St|St-1)
为了计算这个式子,考虑局部概率:
(2.1)
这个概率是穷尽所有t时刻以前的状态后,t时刻隐藏状态是i,观察状态是Ot的概率。注意如果隐藏状态有N个,那么对应的局部概率就有N个。
特别的,当t=1时,上式变为:
(2.2)
其中π(i)表示状态的初始概率,结合式(2.1)和(2.2)即可逐时刻求解,模型最终的概率为:
HMM的观察状态可以用一个矩阵表示,称为混淆矩阵B,与A矩阵类似,其中bi(j)表示隐藏状态为xi,观察状态为yj的概率(存在另一种表示方法,i,j含义相反,但是意思一样),此时该网络可以表示为一个稍微复杂的图,如图2-2:
图2-2,一个隐马尔科夫模型,图片取自网络
2.3隐马尔科夫模型的解码
解码的目的是给定特定的观测序列O1,O2...Ot,根据HMM模型反过来求解出一个特定的隐藏状态序列,使得产生该观测序列的概率最大,即求解:
Argmax{S1,S2...St}(P(O1,O2...Ot|S1,S2...St)*P(S1,S2...St))
最直接的求解方法是穷举所有可能的S1,S2...St,计算上面的那个概率公式,然后求取其中的极大值,然而,这将需要计算极其大量的参数,假如序列长度为t,隐藏状态数目是n,那么排列组合将有n^t,是无法在可能的时间内完成的任务,也不符合实际应用的需求。
很容易想到的优化方法是固定一部分的序列S1,S2...Sn然后以此为基础计算剩下部分的排列组合Sn+1...St,接着变化S1,S2...Sn,再继续求解。
最优的解法是维特比算法,算法假设存在一条最优的路径(或者序列)到达t-1时刻的状态i,记为:
注意这里的路径与求解HMM生成某个特定的观测状态序列O1,O2...Ot的概率是不同的,后者是需要逐层求和的,而前者是逐层求最大值的。式子中,t-1时刻的n个状态分别各有一条最优路径,由于到达t时刻状态j的路径只能从t-1时刻的n个状态中的一个出发,如图2-3:
图2-3,从t-1时刻一个状态点到达t时刻的一个状态点
单从t-1时刻状态i到t时刻状态j的这条路径而言,由于是定值,又存在一条从初始时刻到t-1时刻状态i的最优路径,因此对于从i到j的这条路径是最优的。那么,到达t时刻状态j的最优路径必然是上述n个路径中的一条,即:
由此也可以求出该路径对应的t-1时刻的状态i。而对于初始时刻,有:
当到达后一个时刻T时,全局最优的路径是。
于是给定一个观测序列O1,O2...Ot后,即可利用维特比算法逐时刻求解最优路径,然后再利用指针反向找回该最优路径经过的隐藏状态序列S1,S2...St,完成解码任务,该算法的优点是具有线性时间和空间的复杂度。对于语音识别应用,在该算法的基础上会稍作变化,详见第三章。
2.4隐马尔科夫模型的训练
在实践中,对于某个事物进行建模,需要对其的各项参数进行估计。对于HMM而言,这些参数的极大似然估计可以由HMM的前向-后向算法推导出(推导略),其中:
这里的次数统计自样本空间。
假如只知道观测状态序列,那么需要进行EM算法训练HMM模型,步骤如下:
I、对A、B矩阵进行初始化
II、E步:对观测序列进行维特比解码得到对应的隐藏状态序列
III、M步:统计(i)、、
IV、重复执行2、3直到模型收敛
需要注意的是,这是一个局部最优解,这个求解办法是针对离散的观测概率的,而对于语音识别任务这种连续的观测概率,将在第三章详细说明。
参考文献
[1]赵力. 语音信号处理-第2版[M]. 机械工业出版社, 2009.
[2]吴军. 数学之美.第2版[M]. 人民邮电出版社, 2014.
[3]俞栋, 邓力, 俞凯,等. 解析深度学习语音识别实践[M]. 电子工业出版社, 2016.
[4]郑泽宇, 顾思宇. TensorFlow实战Google深度学习框架[M]. 电子工业出版社. 2017.
[5]卡拉特.苏彦捷.生物心理学[M].第10版.北京.人民邮电出版社,2012
[6]Rabiner L, Juang B H. Fundamentals of speech recognition[M]. Tsinghua University Press, 1999.
[7]Bishop C M. Pattern Recognition and Machine Learning (Information Science and Statistics)[M]. Springer-Verlag New York, Inc. 2006.
[8]Andrew NG, Jiquan Ngiam, Chuan YU Foo, et al. UFLDL tutorial. http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial. 2013.
[9]Young S J. Token Passing: a Simple Conceptual Model for Connected Speech Recognition Systems[J]. Help, 1994.
[10]Hinton G, Deng L, Yu D, et al. Deep Neural Networks for Acoustic Modeling in Speech Recognition: The Shared Views of Four Research Groups[J]. IEEE Signal Processing Magazine, 2012, 29(6):82-97.
[11]Young S. A review of large-vocabulary continuous-speech[J]. IEEE Signal Processing Magazine, 1996, 13(5):45.
[12]Miao Y, Metze F. Improving low-resource CD-DNN-HMM using dropout and multilingual DNN training[J]. Proc Interspeech, 2013.
[13]Rath S, Povey D, Veselý K, et al. Improved feature processing for Deep Neural Networks[C]. conference of the international speech communication association, 2013.
[14]Mohamed A R, Dahl G, Hinton G. Deep Belief Networks for phone recognition[J]. 2009, 4.