语音识别学习日志 2019-7-14 语音识别基础知识准备3 {Kmean算法分析与HMM(Hidden Markov Model)模型}
Kmean算法
聚類算法
對于"監督學習"(supervised learning),其訓練樣本是帶有標記信息的,并且監督學習的目的是:對帶有標記的數據集進行模型學習,從而便于對新的樣本進行分類。而在“無監督學習”(unsupervised learning)中,訓練樣本的標記信息是未知的,目標是通過對無標記訓練樣本的學習來揭示數據的內在性質及規律,為進一步的數據分析提供基礎。對于無監督學習,應用最廣的便是"聚類"(clustering)。
??“聚類算法”試圖將數據集中的樣本劃分為若干個通常是不相交的子集,每個子集稱為一個“簇”(cluster),通過這樣的劃分,每個簇可能對應于一些潛在的概念或類別。
kmeans算法又名k均值算法。其算法思想大致為:先從樣本集中隨機選取?k?個樣本作為簇中心,并計算所有樣本與這?k?個“簇中心”的距離,對于每一個樣本,將其劃分到與其距離最近的“簇中心”所在的簇中,對于新的簇計算各個簇的新的“簇中心”
算法的算法過程如下:
D為訓練集,K為聚類簇的個數,maxIter最大迭代次數 KMeans(D, K, maxIter):隨機選取K個中心點for j in range(m):計算每個樣本Xj到各個簇中心的距離根據最近距離,篩選樣本歸屬于哪個簇for i in range(k):計算新的簇的中心,利用均值如果簇中心改變,則更新該簇中心,否則不變如果每個簇的中心都沒更新則退出算法算法分析:
kmeans算法由于初始“簇中心”點是隨機選取的,因此最終求得的簇的劃分與隨機選取的“簇中心”有關,也就是說,可能會造成多種?k個簇的劃分情況。這是因為kmeans算法收斂到了局部最小值,而非全局最小值。
二分k-means算法
??基于kmeans算法容易使得結果為局部最小值而非全局最小值這一缺陷,對算法加以改進。使用一種用于度量聚類效果的指標SSE(Sum of Squared Error),即對于第?ii?個簇,其SSE為各個樣本點到“簇中心”點的距離的平方的和,SSE值越小表示數據點越接近于它們的“簇中心”點,聚類效果也就越好。以此作為劃分簇的標準。
??算法思想是:先將整個樣本集作為一個簇,該“簇中心”點向量為所有樣本點的均值,計算此時的SSE。若此時簇個數小于?k,對每一個簇進行kmeans聚類(k=2) ,計算將每一個簇一分為二后的總誤差SSE,選擇SSE最小的那個簇進行劃分操作。
算法的算法過程如下:
D為訓練集,K為聚類簇的個數,maxIter最大迭代次數 KMeans(D, K, maxIter):將所有點看做一個簇,計算此時“簇中心”向量while “簇中心”個數h<k :for i=1,2,...,h do將第 i 個簇使用 kmeans算法進行劃分,其中 k=2計算劃分后的誤差平方和 SSEi比較 k 種劃分的SSE值,選擇SSE值最小的那種簇劃分進行劃分更新簇的分配結果添加新的“簇中心”until 當前“簇中心”個數達到 k二分k-means算法分析:
二分k-means算法不再隨機選取簇中心,而是從一個簇出發,根據聚類效果度量指標SSE來判斷下一步應該對哪一個簇進行劃分,因此該方法不會收斂到局部最小值,而是收斂到全局最小值。
HMM模型
隱馬爾可夫模型(Hidden Markov Model,以下簡稱HMM)。
1、什么樣的問題需要HMM模型
使用HMM模型的問題一般有一下兩個特征:
? ? ? 1)問題是基于序列的,比如時間序列或者狀態序列。
? ? ? 2)問題中有兩類數據,一列序列數據是可以觀測的,即觀測序列;而另一類數據是不能觀測到的,即隱藏狀態序列,簡稱狀態序列。
有這兩個特征,那么問題一般可以用HMM模型解決。這樣的問題在實際生活中是很多的。比如:打字的過程,在鍵盤上敲出來的一系列字符就是觀測序列,而實際想輸入的句子就是隱藏序列,輸入法的任務就是根據敲入的一系列字符盡可能的猜測我要輸入的詞語,并把最可能的詞語放在最前面,這就可以看做一個HMM模型。
2、HMM模型的定義
HMM模型詳細介紹:http://www.52nlp.cn/hmm-learn-best-practices-two-generating-patterns
http://www.52nlp.cn/hmm-learn-best-practices-three-hidden-patterns
http://www.52nlp.cn/hmm-learn-best-practices-four-hidden-markov-models
對于HMM模型,假設Q是所有可能的隱藏狀態的集合,V是所有可能的觀測狀態的集合,即:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
其中,N是可能的隱藏狀態數,M是所有的可能的觀察狀態數。
對于一個長度為T的序列,I對應的狀態序列,?O是對應的觀察序列,即:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
其中,任意一個隱藏狀態∈Q, 任意一個觀察狀態∈V。
HMM模型做了兩個很重要的假設如下:
1)齊次馬爾科夫鏈假設。即任意時刻的隱藏狀態只依賴于它前一個隱藏狀態。當然這樣假設有點極端,因為很多時候我們的某一個隱藏狀態不僅僅只依賴于前一個隱藏狀態,可能是前兩個或者是前三個。但是這樣假設的好處就是模型簡單,便于求解。如果在時刻t的隱藏狀態是,在時刻t+1的隱藏狀態是?, 則從時刻t到時刻t+1的HMM狀態轉移概率可以表示為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
這樣可以組成馬爾科夫鏈的狀態轉移矩陣A:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
2)觀測獨立性假設。即任意時刻的觀察狀態只僅僅依賴于當前時刻的隱藏狀態,這也是一個為了簡化模型的假設。如果在時刻t的隱藏狀態是, 而對應的觀察狀態為, 則該時刻觀察狀態在隱藏狀態下生成的概率為,滿足:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
這樣可以組成觀測狀態生成的概率矩陣B:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
除此之外,我們需要一組在時刻t=1的隱藏狀態概率分布Π:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ?, 其中?
一個HMM模型,可以由隱藏狀態初始概率分布Π, 狀態轉移概率矩陣A和觀測狀態概率矩陣B決定。Π, A決定狀態序列,B決定觀測序列。因此,HMM模型可以由一個三元組λ表示如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
3、一個HMM模型實例
一個簡單的實例來描述上面抽象出的HMM模型。這是一個盒子與球的模型,例子來源于李航的《統計學習方法》。
假設我們有3個盒子,每個盒子里都有紅色和白色兩種球,這三個盒子里球的數量分別是:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
按照下面的方法從盒子里抽球,開始的時候,從第一個盒子抽球的概率是0.2,從第二個盒子抽球的概率是0.4,從第三個盒子抽球的概率是0.4。以這個概率抽一次球后,將球放回。然后從當前盒子轉移到下一個盒子進行抽球。規則是:如果當前抽球的盒子是第一個盒子,則以0.5的概率仍然留在第一個盒子繼續抽球,以0.2的概率去第二個盒子抽球,以0.3的概率去第三個盒子抽球。如果當前抽球的盒子是第二個盒子,則以0.5的概率仍然留在第二個盒子繼續抽球,以0.3的概率去第一個盒子抽球,以0.2的概率去第三個盒子抽球。如果當前抽球的盒子是第三個盒子,則以0.5的概率仍然留在第三個盒子繼續抽球,以0.2的概率去第一個盒子抽球,以0.3的概率去第二個盒子抽球。如此下去,直到重復三次,得到一個球的顏色的觀測序列:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? O={紅,白,紅}.
注意在這個過程中,觀察者只能看到球的顏色序列,卻不能看到球是從哪個盒子里取出的。
那么按照我們上一節HMM模型的定義,我們的觀察集合是:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?V={紅,白},M=2
我們的狀態集合是:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Q={盒子1,盒子2,盒子3},N=3
而觀察序列和狀態序列的長度為3.
初始狀態分布為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
狀態轉移概率分布矩陣為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
觀測狀態概率矩陣為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
從上一節的例子,可以抽象出HMM觀測序列生成的過程。
輸入的是HMM的模型,觀測序列的長度T
輸出是觀測序列
生成的過程如下:
1)根據初始狀態概率分布Π生成隱藏狀態
2) for t from 1 to T
a. 按照隱藏狀態it的觀測狀態分布生成觀察狀態.
? ? ? ? ? ?b. 按照隱藏狀態it的狀態轉移概率分布產生隱藏狀態.
所有的一起形成觀測序列
HMM模型一共有三個經典的問題需要解決:
1) 評估觀察序列概率。即給定模型λ=(A,B,Π)和觀測序列,計算在模型λ下觀測序列O出現的概率P(O|λ)。這個問題的求解需要用到前向后向算法。
2)模型參數學習問題。即給定觀測序列,估計模型λ=(A,B,Π)的參數,使該模型下觀測序列的條件概率P(O|λ)最大。這個問題的求解需要用到基于EM算法的Baun-Welch算法。這個問題是HMM模型三個問題中最復雜的。
3)預測問題,也稱為解碼問題。即給定模型λ=(A,B,Π)和觀測序列,求給定觀測序列條件下,最可能出現的對應的狀態序列,這個問題的求解需要用到基于動態規劃的維特比(Viterbi)算法。這個問題是HMM模型三個問題中復雜度居中的算法。
Baun-Welch算法,Viterbi解碼算法將在下一篇學習日志中介紹。
?
總結
以上是生活随笔為你收集整理的语音识别学习日志 2019-7-14 语音识别基础知识准备3 {Kmean算法分析与HMM(Hidden Markov Model)模型}的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最大最小距离算法(K-MEANS K-m
- 下一篇: html中contentEditable