PLDA的原理和em訓練(爲了be user friendly開始用latex寫公式)

最近一直在學習和操作PLDA,感覺這個算法太有才了,對身份驗證如人臉識別,聲紋識別,OCR都有用.

 

先對自己的工作和麪試別人以及被面試有一份感悟:

1.數學太重要了,有些人看論文難啃的原因就是公式看不懂,公式看不懂就是數學不好,後面要慢慢補起來

2.感覺工程能力太重要,不管是在工作中還是面試,算法最終能否實現還是要看你的手上的活.這是我的弱項,慢慢補

3.很多面試官不管候選人簡歷,直接問一些候選人沒接觸過的問題,還是慢尷尬的,既然如此,當初獵頭就是溝通好啊...做算法的經常被問道各種開發問題,各種接口,sdk,服務...,以後還是補補

 

把我做的筆記拿其中關鍵記錄在博客,以免日後忘記


PLDA 用來處理說話人和信道的變形, ivector從音頻中提取了說話人和信道的特徵, 當用PLDA時,進行了兩次降維操作: 一次是提取ivector時,從2048的GMM降到了400-600的ivector維度,第二次就是用PLDA模型.

在說話人識別中,誤差很大的一部分來自於信道的差異, 兩種方法去解決該問題,第一,是在前端信號處理中探索語音的判別信息特徵,比如 語音來源, 韻律學等
第二種是後端的模型分類設計建模,如GMM-UBM,GMM-SVM,JFA,I-vector,PLDA等

在JFA中,因爲信道空間包括了一些殘餘的說話人信息,所以在說話人識別中,他的性能並不會太突出.

Ivector 用一個低維的空間涵蓋了所有的變化,包括說話人和信道的變量. ivector有一個好處是,所有的音頻都用一個恆定長度的ivector表示.因爲mfcc的特徵的長度式不同的,幀數不一樣.
它簡化了建模和打分的過程,還有打分的速度

 

PLDA模型是如下公式(PS: 模型即方程,方程即公式):

X$_{ij}$=\mu+Fh$_i$ + Gw$_{ij}$ + \epsilon$_{ij}$

\muFh_i只跟說話人有關而跟說話人具體的某一條語音無關,稱爲信號部分, 這裏描述了說話人類間的差異,
Gw_{ij}\epsilon_{ij}描述了同一說話人的不同語音之間的差異,這裏爲噪音部分. 這樣用兩個假設來描述一段語音
mu是所有訓練數據的均值.

Fh_i+Gw_{ij} 是一個矩陣和一個向量互乘的思嗯是. 這兩個矩陣F和矩陣G包含了各自假想變量空間的基本因子,這些因子可以看作是各自空間的特徵向量. 比如F的每一列就相當與類間空間的特徵向量,G的每一列相當於類內空間的特徵向量.
h和w可以分看作是分別在各自空間的特徵表示, 比如h_i就可以看作是x_{ij}在說話人空間中的特徵表示.在識別打分階段,如果兩條語音的hi特徵相同的似然度越大,那麼兩條語音更大概率屬於同一個人.

模型訓練:

PLDA的模型的參數有4個, 數據矩陣mu, 空間特徵矩陣F和G, 噪聲協方差 \Sigma,模型的訓練過程用EM,因爲有隱變量所以用EM.需要的是去得到能最大程度擬合訓練數據集x的參數 \theta=\mu,F,\Sigma, 如果我們能知道隱變量h_iw_{ij},就會容易很多,反過來看,如果知道\theta,能估計出h_iw_{ij}也會容易很多. 所以用EM來做估計,保證每次迭代他的似然讀是增長的.
在做EM的Expectation時,計算關於h和w的全後驗概率分佈,給定相關參數. 在Maximization步驟時,計算最優的參數值\theta

由於我們只關心區分不同的說話人的類間特徵而不用去管同一個說話人的類內特徵,所以其實沒有必要向上面一樣對類內空間G參數進行求解。於是,我們可以得到一個簡化版本的PLDA,如下如:

X$_{ij}$=\mu+Fh$_i$ + \epsilon$_{ij}$
\epsilon 服從\mathcal N(0,\Sigma), h_i服從\mathcal N(0,1)

模型的訓練具體公式可以直接參考如此paper中的Appendix裏面的公式:

PLDA論文,EM訓練公式: Probabilistic Linear Discriminant Analysis for Inferences About Identity

簡單總結一下就是初始化\theta=\mu,F,\Sigma, 怎麼初始化呢,隨機生成即可,但是注意維度!
1. 均值處理
計算所有訓練數據X_allX_{all}的均值\mu,然後從訓練數據中減去該均值X_{all}=X_{all} - \mu
然後,假如該訓練數據中有N個人,則再計算N個人的均值N_\mu

2. 初始化
特徵維度是D, \mu是D X 1維, N_\mu 是 D X N 維的,身份空間維度,需要我們預先預訂,記爲N_F, F是D\times N_F維的,同時h_iN_F \times 1 維的.噪聲空間維度,需同樣要預先指定,記爲N_G,即G是D \times N_G維,同時w_{ij}N_G\times 1

E步計算出paper中的E[y_i], E[y_iy^T_i]

然後用E步得出的這兩個值帶到M步的\mu,B,\Sigma跟新模型參數,論文中的B即是說話人空間特徵矩陣.

 

模型識別(打分步驟):

識別:
假設爲我們去比較R個不同的模型的似然度. 我們把模型 稱作本徵音因子和數據的表示
相同的人會有相同的本徵音因子hi 也叫做identity variable,如果兩個音頻不一樣,那麼他們會有不一樣的identity variables.
對於第q個模型,我們能得到的似然度爲p(X|q^{th}) 的模型


同一個人,不同的音頻,但共享相同的說話人本徵音因子
所有模型的絲然是各個模型描述各個數據的似度相乘

 

打分:
測試時,我們要去計算兩條語音時否由說話人空間中的特徵h_i生成,或者由h_i生成的似然程度,而不用管類內空間的差異. 我們用對數絲然得分比來計算得分.

 

score=log\left ( \frac{p(\eta_{1} ,\eta_2|H_s )}{p(\eta_1|H_d)p(\eta_2|H_d)} \right )
如果有兩條語音\eta_1,\eta_2,來自同一空間的假設爲Hs,來自不同空間的假設爲H_d,通過計算對數似然比,就能衡量兩條語音的相似程度,得分越高,屬於同一個人的可能性越大

對於打分的具體操作,當我們在em訓練後得到了我們所需要的plda模型參數 \mu,F,\Sigma ,根據下面論文的公式來進行打分計算

PLDA論文,打分公式:Analysis of I-vector Length Normalization in Speaker Recognition Systems

這個得分過程總結就是,通過EM我們能得到plda參數\mu,F,\Sigma ,然後我們根據paper提供的公式(6,7,8,9)分別得到所需要參數Q和P,通過score= {\tilde{\eta _1^}}^T\tilde{Q} \tilde{\eta _1}+ {\tilde{\eta _2^}}^T\tilde{Q} \tilde{\eta _2}+2{\tilde{\eta _1^}}^T\Lambda \tilde{\eta _2}+const, 該公式各個變量所代表的意義請直接參考論文,講的很詳細

下次結合另外一偏論文講一下GPLDA,HT-PLDA和TWO-Covariance PLDA的區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章