kaldi中CD-DNN-HMM收集参数更新公式手写推导
2019-11-18杂谈搜奇网45°c
A+ A-在基于DNN-HMM的语音辨认中,DNN的作用跟GMM是一样的,即它是庖代GMM的,详细作用是算特征值对每一个三音素状况的几率,算出来哪一个最大这个特征值就对应哪一个状况。只不过之前是用GMM算的,现在用DNN算了。这是典范的多分类题目,所以输出层用的激活函数是softmax,丧失函数用的是cross entropy(交织熵)。不必均方差做丧失函数的原因是在分类题目上它黑白凸函数,不能保证全局最优解(只要凸函数才保证全局最优解)。Kaldi中也支撑DNN-HMM,它还依赖于上下文(context dependent, CD),所以叫CD-DNN-HMM。在kaldi的nnet1中,特征提取用filterbank,每帧40维数据,默许取当前帧前后5帧加上当前帧共11帧作为输入,所以输入层维数是440(440 = 40*11)。同时默许有4个隐蔽层,每层1024个网元,激活函数是sigmoid。本日我们看看收集的种种参数是怎样获得的(手写推导)。因为真正的收集比较复杂,为了推导轻易这里对其进行了简化,只要一个隐蔽层,每层的网元均为3,同时只要weight没有bias。如许收集如下图:
上图中输入层3个网元为i1/i2/i3(i示意input),隐蔽层3个网元为h1/h2/h3(h示意hidden),输出层3个网元为o1/o2/o3(o示意output)。隐蔽层h1的输入为 (q11等示意输入层和隐蔽层之间的权值),输出为
。输出层o1的输入为
(w11等示意隐蔽层和输出层之间的权值),输出为
。其他可相似推出。丧失函数用交织熵。本日我们看看收集参数(以隐蔽层和输出层之间的w11以及输入层和隐蔽层之间的q11为例)在每次迭代练习后是怎样更新的。先看隐蔽层和输出层之间的w11。
1,隐蔽层和输出层之间的w11的更新
先离别求三个导数的值:
所以终究的w11更新公式如下图:
2,输入层和隐蔽层之间的q11的更新
先离别求三个导数的值:
所以终究的q11更新公式如下图:
以上的公式推导中若有毛病,烦请指出,非常感谢!