最近在學(xué)習(xí)語音識別吓笙,由于傳統(tǒng)的基于HMM-GMM架構(gòu)的語音識別具有成熟的理論映屋、工具鏈,且其一直以來神秘感讓人十分好奇膊升;所以我打算從傳統(tǒng)框架入手學(xué)習(xí)怎炊,并嘗試認真地弄懂相關(guān)技術(shù);在看了一些語音識別相關(guān)簡介后廓译,知道雖然GMM模型在很多年前评肆,在”混合模型“(hybrid model)中就被DNN所取代了;甚至在當今深度學(xué)習(xí)背景下非区,HMM也有被完全取代的趨勢瓜挽;但是從學(xué)習(xí)的角度,我覺得GMM仍然是很好的學(xué)習(xí)材料征绸。
注:由于包含大量LaTeX公式久橙,可能需要多次刷新才能渲染成功
密度函數(shù)
其中:D為數(shù)據(jù)空間的維數(shù),K為混合分支個數(shù)
在多元正態(tài)分布文中管怠,中我們證實了的積分為1朽色,在這里由積分的線性性質(zhì)有:
所以需要谭期,且為了保證概率都為正數(shù),這里還要求都大于0,這時成為合法的密度函數(shù)耿眉。
下面關(guān)于參數(shù)的極大似然估計主要學(xué)習(xí)PRML書中的相關(guān)討論悲关,這里我補充了一些推導(dǎo)過程中的數(shù)學(xué)細節(jié),這些數(shù)學(xué)細節(jié)書上不會寫出來,所以這里我決定自己推推看鹰贵,心里更加踏實。
導(dǎo)數(shù)的計算
為了不至于使得下面ML估計的公式推導(dǎo)太亂康嘉,我們在這里提前把部分相關(guān)的導(dǎo)數(shù)計算好碉输。
1. 設(shè)二次型為,其中為D維列向量亭珍,而為D階方陣敷钾,而為點處的切空間(tangent space)中的向量,根據(jù)下式:
顯然是關(guān)于切空間中向量的線性函數(shù)块蚌;且顯然是關(guān)于的高階部分闰非,即當時,峭范。
即:?
以上便是函數(shù)的可微性定義财松,因而導(dǎo)數(shù)(雅可比矩陣)為:。
進而纱控,若是對稱矩陣辆毡,則? ? ?
2. 同樣是上面的二次型,這次我們把參數(shù)矩陣看作變量甜害,即舶掖,有:,寫成矩陣形式就有:
3. 行列式的求導(dǎo)尔店,行列式函數(shù):眨攘,是n階實方陣空間上的實值函數(shù);事實上我們直接將行列式看作原型是的函數(shù)即可嚣州,因為這里我們關(guān)心的求導(dǎo)運算跟矩陣的代數(shù)運算沒有關(guān)系鲫售,因此可以忽略其結(jié)構(gòu);從線代課本可知有兩種方式定義行列式:
1)組合式定義:该肴,其中是n階方陣情竹,是n元對稱群,是其中任取的置換匀哄,也可以將看作的一個全排列秦效,而是全排列的符號。
2)遞歸定義涎嚼,按第k行展開:
??
其中:是矩陣的第k行第j列元素阱州,是元素對應(yīng)的余子式,而記為元素的代數(shù)余子式法梯。
在這里應(yīng)該用遞歸定義比較方便苔货,比如要對元素求導(dǎo):來自第行、第列,又因為按照行列式的遞歸定義(3)式蒲赂,同樣的第行,但是不同的列上的元素的余子式顯然不會包括當前被求導(dǎo)元素刁憋,因為它不會包含第行除了以外的任何元素滥嘴。因此,我們有:
即行列式關(guān)于第元素的偏導(dǎo)數(shù)至耻,就是該元素對應(yīng)的代數(shù)余子式若皱。因此把所有的偏導(dǎo)數(shù)整理到矩陣里面,就有:
?其中為的伴隨矩陣的轉(zhuǎn)置尘颓。
再次走触,若為對稱矩陣,且可逆疤苹,則根據(jù)公式有:互广,即的伴隨矩陣也是對稱的。
最大似然估計
現(xiàn)在我們用一組數(shù)據(jù)來擬合GMM模型卧土,假設(shè)數(shù)據(jù)之間是獨立的惫皱,則該組數(shù)據(jù)在模型上的對數(shù)似然為:
下面根據(jù)微分學(xué)計算該似然函數(shù)取得極大值的必要條件,由于需要滿足約束尤莺,根據(jù)Lagrange乘子法旅敷,求下面關(guān)于參數(shù)的函數(shù)的極大值點:
先對求導(dǎo):根據(jù)多元復(fù)合函數(shù)的鏈式求導(dǎo)法則,有:
颤霎,其中為密度函數(shù)指數(shù)部分的二次型媳谁,即:
令,則:友酱,其中:根據(jù)之前的推導(dǎo)晴音,雅可比矩陣,而雅可比矩陣粹污,所以:????段多。
按照書中所說將定義為關(guān)于隱變量的后驗概率,則(6)式變?yōu)椋?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Cfrac%7B%5Cpartial%20%5Cboldsymbol%7BL%7D%7D%7B%5Cpartial%20%5Cboldsymbol%7B%5Cmu_k%7D%7D%20%3D%5Csum_%7Bn%3D1%7D%5EN%5Cgamma(z_%7Bnk%7D)(%5Cboldsymbol%20x_n%20-%20%5Cboldsymbol%20%5Cmu_k%20%20)%5ET%20%20%5Cboldsymbol%20%5CSigma_k%5E%7B-1%7D" alt="\frac{\partial \boldsymbol{L}}{\partial \boldsymbol{\mu_k}} =\sum_{n=1}^N\gamma(z_{nk})(\boldsymbol x_n - \boldsymbol \mu_k )^T \boldsymbol \Sigma_k^{-1}" mathimg="1">壮吩,寫成梯度形式进苍,就有:,令其等于鸭叙,并利用的非奇異性觉啊,兩邊同時左乘,將其解出來得:
下面對協(xié)方差矩陣求導(dǎo):為了保持一致沈贝,我們還是用代替作為行列式函數(shù)杠人;但是這里為了方便,我們不直接對協(xié)方差矩陣求導(dǎo),而是對其逆矩陣求導(dǎo)嗡善,我們令辑莫,重寫一遍(0)式:
在上式中,令罩引,則根據(jù)乘法求導(dǎo)法則有:
其中各吨,根據(jù)上面的(4)式有:
因為是對稱矩陣,故而也是對稱矩陣(由易知)袁铐,再利用上面證過的(5)式就得到了上式揭蜒。
令其乘以,有:
再利用上面證好的(2)式剔桨,有:
其中:
同樣屉更,令其乘以,有:
最后將(9),(10)兩式代入(8)式洒缀,整理整理就得到:
令其等于瑰谜,且注意到,我們得到:
最后帝洪,我們對混合系數(shù)求導(dǎo):
我們發(fā)現(xiàn)其中:與只相差一個似舵,令,并在等式兩邊同乘以得:
現(xiàn)在葱峡,對一個特定的k砚哗,將代入(11)式,得:
EM過程
由于無法閉式求解砰奕,可以用EM算法來迭代式地拉高數(shù)據(jù)在模型參數(shù)上的似然蛛芥,抄一抄書本上的算法,加深一下印象:
1. 初始化GMM所有分支的均值向量军援、協(xié)方差矩陣仅淑,以及各分支的混合系數(shù);
2. E Step: 固定當前模型參數(shù),計算胸哥,即書上所說的分支要為解釋數(shù)據(jù)承擔(dān)的那部分責(zé)任涯竟,即后驗概率分布:
3. M Step: 利用當前的后驗概率分布,重新估計模型的所有參數(shù):
4. 計算對數(shù)似然:
檢查參數(shù)或者對數(shù)似然值是否已經(jīng)達到收斂條件空厌;若否庐船,返回第2步,繼續(xù)訓(xùn)練嘲更。
參考:《PRML》