1. 混合模型簡介
如果我們定義觀測變量和潛在變量的一個聯合概率分布,那么對應的觀測變量本身的概率分布可以通過求邊緣概率的方法得到。這使得觀測變量上的復雜的邊緣概率分布可以通過觀測與潛在變量組成的擴展空間上的更加便於計算的聯合概率分布來表示。
因此,潛在變量的引入使得復雜的概率分布可以由簡單的分量組成。
2. 混合模型的一個特例 - KMean聚類
除了提供一個構建更復雜的概率分布的框架之外,混合模型也可以用於數據聚類,或者說聚類是混合模型一種特定形式。
我們從這小結開始,嘗試從“數據聚類問題”切入對混合模型的討論,我們來討論數據點集合中的聚類的問題。
0x1:K均值聚類
我們首先使用一個非概率的方法解決這個問題,即K均值算法。
在我們后面談到混合概率分布的潛在變量的時候,其中離散潛在變量可以被看作將數據點分配到了混合概率分布具體成分當中。K均值算法對應於用於高斯混合模型的EM算法的一個特定的非概率極限
1. 問題場景
我們考慮尋找多維空間中數據點的分組或聚類的問題。假設我們有一個數據集,它由 D 維歐幾里德空間中的隨機變量 x 的 N 次觀測(N次獨立分布采樣)組成。我們的目標是將數據集划分為 K 個類別。現階段我們假定 K 的值是給定的。
2. 形式化描述K均值
直觀上講,我們會認為由一組數據點構成的一個聚類中,聚類內部點之間的距離應該小於數據點與聚類外部的點之間的距離。
為了形式化地說明這個概念,引入一組 D 維向量,其中 k = 1,2,....,K,且
是與第 k 個聚類關聯的一個代表,我們可以認為
表示了聚類的中心。我們的目標是找到數據點分別屬於的哪一個
類,使得每個數據點和與它最近的向量
之間的誤差評估函數(例如平方和)最小。
我們定義一些記號來描述數據點的聚類情況,對於每個數據點,我們引入一組對應的二值指示變量
,其中k = 1,2,....,K 表示數據點
屬於 K 個聚類中的哪一個,從而如果數據點
被分配到類別 k,那么
=1,且對於 j != k,有
=0。這其實就是一種”“one-hot”編碼方法。
之后我們可以定義一個目標函數,也即損失函數(loss function):
它表示每個數據點與它被分配的向量之間的距離的平方和。我們的目標是找到
和
的值,使得 J 達到最小值。
3. 求解目標函數極值的過程 - EM過程
我們可以用一種迭代的方法完成K均值的目標函數,其中每次迭代涉及到兩個連續的步驟,分別對應於和
的最優化。
1)首先,我們為選擇一些初始值。即隨機選擇一些初始的質心。
2)然后,在第一階段,我們關於最小化 J,保持
固定。對
求偏導我們就會發現,最優化公式可以轉化為
。很顯然,即在現有質心的前提下,將數據點歸類為距離最近的聚類點,即使 J 最小。
3)在第二階段,我們關於最小化 J,保持
固定。目標函數 J 是
的一個二次函數,直接求導求極值即可,
,可以很容易地解出
,即
。這個表達式有一個簡單質朴的含義,即在現有聚類概率分布的前提下,重新計算各類中新的質心(取均值),這樣即使得 J 最小。
4)不斷重復這個二階段優化直到收斂(直到聚類的分配不改變,或直到迭代次數超過了某個最大值)。
我們看到,更新和更新
的兩個階段分別對應於 EM 算法中的 E(期望)步驟和 M(最大化)步驟。
由於每個階段都減小了目標函數 J 的值,因此算法的收斂性得到了保證。
0x2:K均值改進 - K中心點算法(K-medoids algorithm)
K均值算法的基礎是將平方歐幾里德距離作為數據點與代表向量之間不相似度的度量,這不僅限制了能夠處理的數據變量的類型(例如離散標簽情況),而且使得聚類中心的確定對於異常點不具有魯棒性。
我們可以這樣推廣K均值算法:引入連個向量 x 和 x′ 之間的一個更加一般的不相似度的度量,然后最小化如下的失真度量(損失函數):
與普通的K均值一樣
1)對於給定的聚類代表,E步驟涉及到為每個數據點分配聚類,使得與對應的聚類集中數據點間的不相似程序最小。這一步的計算代價為
,與標准的K均值算法的情形相同。
2)對於不相似程度度量的一般選擇,M步驟通常比K均值的情形更加復雜,因此通常會將聚類原型限制為等於某個分配到那個聚類的數據向量,因為這使得算法可以適用於任何不相似程度的度量,
只要它能夠被計算。因此,對於每個聚類 k,M步驟涉及到在分配到那個聚類的個點上的離散搜索,這需要
次對於
的計算。
0x3:硬划分與概率分布軟划分
K均值算法的一個值得注意的特征是,在每次迭代中,每個數據點都被分配到一個唯一的聚類中,這友類類似經典決策樹每層葉子的硬划分。雖然某些數據點與其聚類中心的距離遠小於其他中心的聚類,但是也存在其他的數據點,位於兩個聚類中心的大概中間的位置。在后一種情形中,強行將數據點分配到最近的聚類不是最合適的。
類似於XGboost對決策樹的改進(采用權值的方式代替決策樹的硬分類),通過對K均值采用概率的方法,我們可以得到對數據點聚類的“軟分配”,它反映了在最合適聚類分配上的不確定性,這個概率形式帶來了一些數值計算上的優勢。
3. 混合高斯
我們知道,高斯混合模型可以看成高斯分量的簡單線性疊加,目標是提供一類比單獨的高斯分布更強大的概率模型(多峰分布概率分布)。更進一步探求本質,我們可以使用離散潛在變量來描述高斯混合模型,這會讓我們更加深刻地認識混合高斯模型,也會讓我們了解期望最大化算法。
0x1:通過一個簡單的“1-of-K”例子理解高斯混合分布的聯合概率形式
讓我們引入一個 K 為二值隨機變量 z,這個變量采用了“1-of-K”表示方法,其中一個特定的元素等於1,其余所有的元素都等於0。
我們看到的值滿足概率分布的要求,即
,我們根據邊緣概率分布
和條件概率分布
定義聯合概率分布
。
z 的邊緣概率分布根據混合系數進行賦值,即:
,其中
以及
因此,給定 z 的一個特定的值(即選定一個特定的基模型),x 的條件概率分布是一個高斯分布:
聯合概率分布為,從而 x 的邊緣概率分布可以通過將聯合概率分布對所有可能的 z 求和的方式得到,即:
對於每個觀測數據點,存在一個對應的潛在變量
這非常關鍵,因為這意味着潛在變量不在是一個未知的變量,我們可以將其轉化為對 x 的計算優化過程中(例如求導)。
得到這個聯合概率分布的好處體現在幾個方面:
1. 我們找到了高斯混合分布的一個等價的公式,可以將潛在變量 z 顯示地寫出
這么做的意義在於,我們現在能夠對聯合概率分布操作。而不是對邊緣概率分布
操作,這會產生極大的計算上的簡化,后面我們將要討論的期望最大化(EM)算法,將會看到這點。
2. 給定 x 的條件下,潛在變量 z 的條件概率可以用貝葉斯定義求出
我們可以用表示
,它的值可以使用貝葉斯定理求出:
我們將看成
=1的先驗概率
將看成觀測到 x 之后,對應的后驗概率,也可以理解為分量 k 對於“解釋”觀測值 x 的“責任”(responsibility)
0x2:最大似然公式 - 高斯混合模型求解參數的基本策略
假設我們有一個觀測的數據集,我們希望使用混合高斯模型來對數據進行建模。我們可以將這個數據集表示為一個
的矩陣
,其中第 n 行為
。類似地,對應的隱含變量會被表示一個
的矩陣
,其中第 n 行表示為
。
如果我們假定數據點獨立地從概率分布中抽取,那么我們可以使用下圖所示的圖模型來表示這個獨立同分布數據集的高斯混合模型。
它對應的對數似然函數為:
最大化高斯混合模型的對數似然函數,比單一的高斯分布的情形更加復雜。困難的來源在於公式中,對 k 的求和出現在對數計算內部,從而對數函數不再直接作用於高斯分布。如果我們令對數似然函數的導數等於零,那么我們不會得到一個解析解,這給求導計算帶來很大的困難。
一種方法是使用基於梯度的優化方法。雖然梯度的方法是可行的,並且梯度方法在混合密度網絡的計算中起到了重要作用。但是我們這里討論另一種主流的算法,被稱為EM算法。它具有廣泛的適用性,同時也是變分推斷的基礎。
0x3:用於高斯混合模型的EM
一種優雅並且強大的,用於尋找帶有潛在變量的模型的最大似然解方法,被稱為期望最大化算法(expectation-maximization algorithm),或者EM算法 。實際上,EM算法是可以推廣到更一般化的變分推斷框架中的,但是我們在這小結不着急,我們從高斯混合模型作為切入點,給出EM算法的一種非形式化的描述。
首先,讓我們寫下似然函數的最大值必須滿足的條件,令公式中
關於高斯分量的均值
的均值等於零,我們有:
值得注意的是,后驗概率(或者說是“責任”)很自然地出現在了等式右側分母中。兩側同乘
(假設矩陣是非奇異的),整理,可得:
,其中
我們可以將看作分配到聚類 k 的數據點的有效數量。仔細觀察這個公式會發現,第 k 個高斯分量的均值
通過對數據集里所有的數據點求加權平均的方式得到,而這里所謂的權因子又是由后驗概率
給出,而
表示分量 k 對生成
的責任(也可以理解為數據集分布的概率分布)。
如果我們對關於
的導數為零,然后用一個類似的推理過程,使用單一高斯分別協方差矩陣的最大似然結果,我們有:
這與一元高斯分布的對應的結果具有相同的函數形式,但是所不同的是,每個數據點都有一個自己的權值(不像K均值那樣是硬划分),權值等於對應的后驗概率,分母為與對應分量相關聯的數據點的有效數量(分類集中的樣本數量)。
最后,我們關於混合系數最大化
,把限制條件考慮進去,即混合系數的累加和等於1。使用拉格朗日乘數法,最大化下面的量:
求導可得:
在右側分母中,我們再次看到了“責任”這一項。將兩側乘以
,對 k 求和,會發現
。使用這個結果消去
,整理可得:
。
一個非常質朴的表征含義:第 k 個分量的混合系數為那個分量對於解釋數據點的“責任”的平均值。
值得注意的是,上式並沒有給出混合模型參數的一個解析解,因為“責任”在公式
中是以一種復雜的方式依賴這些參數。
然而,這些結果給出了一個簡單的迭代方法來尋找問題的最大似然解。整個迭代過程是EM算法應用於高斯混合模型的一個實例。
1)我們首先為均值、協方差
、混合系數
選擇一個初始值,計算對數似然函數的初始值。
2)然后,我們交替進行兩個更新,被稱為
2.1)E步驟(使用當前參數值計算責任):在E步驟中,我們使用參數的當前計算公式給出的后驗概率(也被稱為責任)
2.2)M步驟(使用當前的責任重新估計參數):然后在M步驟中,我們將E步驟計算出的概率用於最大化步驟,重新對模型參數(均值、協方差、混合系數)進行估值。,
,
。然后使用新的模型參數進入下一輪E步驟
3)計算對數似然函數::檢查參數或者對數似然函數的收斂性,如果沒有滿足收斂的准則,則返回第2)步。
每次通過E步驟和接下來的M步驟對參數的更新確保了對數似然函數的增大,在實際應用中,當對數似然函數的變化量或者參數的變化量地域某個閾值時,我們就認為算法收斂。
上圖給出了將兩個⾼斯分布組成的混合概率分布的EM算法應⽤於⽼忠實間歇噴泉數據集的情形。這⾥,我們使⽤了兩個⾼斯分布的混合(K=2)。
分布中⼼的初始值與圖中的K均值算法使⽤了相同的初始值,精度矩陣被初始化為正⽐於單位矩陣。
圖(a)⽤綠⾊標記出了數據點,以及初始的混合模型的配置,其中兩個⾼斯分量的⼀個標准差位置的輪廓線分別⽤紅⾊圓圈和藍⾊圓圈標記。
圖(b)給出了初始E步驟的結果,其中每個數據點的顏⾊中,藍⾊所占的⽐重等於由藍⾊分量⽣成對應數據點的后驗概率,紅⾊所占的⽐重等於由紅⾊分量⽣成對應數據點的后驗概率。因此,對於屬於兩個聚類的后驗概率都較⼤的數據點來說,顏⾊看起來是紫⾊的。
圖(c)給出了第⼀個M步驟之后的結果,其中藍⾊⾼斯分布的均值被移⾄數據點的均值,同時根據屬於藍⾊類別的每個數據點的概率進⾏加權。換句話說,它被移到了藍⾊標記數據點的質⼼。類似地,藍⾊⾼斯分布的協⽅差被設置為藍⾊標記數據點的協⽅差。紅⾊分量的情形與此類似。圖(d),(e)和(f)分別給出了2次、5次、20次完整的EM循環之后的結果。在圖(f)中,算法接近收斂。
注意:
1. 與K均值算法相比,EM算法在達到(近似)收斂之前,經歷了更多次的迭代,每個迭代需要更多的計算量。因此,通常運行K均值算法找到高斯混合模型的一個合適的初始化值,輸入EM,接下來使用EM算法進行微調節。 2. 協方差矩陣可以初始化為通過K均值算法找到的聚類的樣本協方差。 3. 混合系數可以被設置為分配到對應類別中的數據點所占的比例。
4. EM的另一種觀點 - 泛化討論
我們繼續討論EM算法的另⼀種觀點,其中潛在變量起着重要的作。我們⾸先使⽤⼀種抽象的⽅式討論這種⽅法,然后我們再次考慮⾼斯混合模型的例⼦,來具體說明這個模型。
EM算法的目標是找到具有潛在變量的模型的最大似然解。
我們將所有觀測數據的集合記作,其中第 n 行表示
,所有潛在變量的集合記作
,對應的行為
。所有模型參數的集合被記作
。
因此對數似然函數為:,該式同樣適用於連續潛在變量的情形,只需要對
的求和替換為積分即可。
一個關鍵的現象是,對於潛在變量的求和位於對數的內部。即使聯合概率分布屬於指數族分布,但是由於這個求和式的存在,求和得到的結果邊緣概率分布
通常也不是指數族分布。求和式的出現阻止了對數運算直接作用於聯合概率分布,使得最大似然接的形式更加復雜。
現在假設對於中的每個觀測,我們都有潛在變量
的對應值。我們將
稱為完整(completely)數據集,並且我們稱實際的觀測數據集
是不完整的(incomplete)。
完整數據集的對數似然函數的形式為,並且我們假定對這個完整數據的對數似然函數進行最大化是很容易的。然而遺憾的是,在實際應用中,我們沒有完整數據集
(事實上如果有完整數據集就不要建模預測了),只有不完整的數據
。我們關於潛在變量
的取值的知識僅僅來源於后驗概率分布
。
1)由於我們不能使用完整數據的對數似然函數,因此我們反過來考慮使用當前的參數值,在潛在變量的后驗概率分布
下,使用這個后驗概率分布計算完整數據對數似然函數對於一般的參數值
的期望。這個期望被記作
,這對應於EM算法中的E步驟:
2)在接下來的M步驟中,我們最大化該式:來確定修正后的參數估計
。如果當前對於參數的估計為
,那么一次連續的E步驟和M步驟會產生一個修正的估計
。
注意,在的定義中,對數操作直接作用於聯合概率分布
,因此根據假設,對應的M步驟的最大化是可以計算的。
每個EM循環都會增大不完整數據的對數似然函數(除非已經達到局部極大值),EM的迭代過程是由數據集本身的概率分布驅動的,如果數據集本身存在局部最優區域,EM算法就有可能在EM過程中落入該區域。
0x1:重新考察高斯混合模型
我們繼續考慮將EM算法的潛在變量的觀點應用於高斯混合模型例子。我們知道,在高斯混合模型的求解中,我們的目標是最大化對數似然函數:
(1)
它是使用觀測數據集進行計算的,我們看到這個計算比單一高斯分布的情形更加困難,因為對 k 的求和出現在對數運算內部。
現在考慮對完整數據進行最大化。根據公式
和公式
,似然函數的形式為:
,其中
表示
的第 k 個分量。取對數,我們有:
(2)
(2)公式和(1)公式對比,我們看到在 k 上的求和與對數運算的順序交換了。對數運算現在直接作用於高斯分布上,而高斯分布本身是指數族分布的一個成員,這個方法產生了最大似然問題的一個簡單得多的解。
因此我們看到,完整數據的對數似然函數可以用一種簡單的方法求出最大值的解析解。然而,在實際應用中,我們並沒有潛在變量的值,因此,與之前討論的一樣,我們考慮完整數據對數似然函數關於潛在變量后驗概率分布的期望,形式為:
。
因此后驗概率分布可以在 n 上進行分解,從而是獨立的,指示值
的期望為:
它就是 k 分量對於數據點的“責任”,於是,完整數據的對數似然函數的期望值為:
,接下來可以使用EM步驟進行迭代求解。在后面的討論中,我們會繼續深入討論完整數據的對數似然函數的期望的作用。
0x2:與K均值的關系
高斯模型的EM算法和K均值算法,在本質上有很強的相似性。
1. K均值算法對數據點的聚類進行了“硬”分配,即每個數據點只屬於唯一的聚類。 2. 而EM算法基於后驗概率分布,進行了一個“軟”分配
實際上,我們可以將K均值算法看成高斯混合模型的EM算法的一個特殊的極限情況。下面我們來討論這種情況:
考慮一個稍微特殊的高斯混合模型,其中混合分量的協方差矩陣為,
是一個被所有分量共享的方差參數,
是單位矩陣,從而:
。
我們現在考慮K個這種形式的高斯分布組成的混合模型的EM算法,其中我們將看作一個固定的常數,而不是一個需要重新評估的參數。
對一個特定的數據點,后驗概率(“責任”)為:
。
如果我們考慮極限情況(所有的數據點都有且只屬於一個分類,不存在概率分布,則方差為0),那么我們看到,在分母中,
最小的項將會慢慢地趨近於零,因此對於數據點
,只有項 j 的“責任”
趨近於1,其他的項的責任都趨近於0.
因此,在這種極限情況下,我們得到對數據點聚類的一個硬分類,與K均值算法相同,從而,因此,每個數據點都被分配為距離最近的均值的聚類。這樣,EM重估計就簡化為了K均值的結果。
最后,在極限的情況下,公式
給出的完整數據的對數似然函數變成了:
。
因此在極限的情況下,最大化完整對數似然函數的期望等價於最小化K均值算法的失真度量J。
0x3:與伯努利分布的混合
我們之前的討論集中在由混合高斯模型描述的連續變量的概率分布上,為了更加泛化的討論混合模型(混合模型不依賴具體的概率分布先驗假設),我們現在討論由伯努利分布描述的離散二值變量的混合,這個模型也被稱為潛在分布(latent class analysis)。這個模型不僅具有實際應用的價值,還是我們討論離散變量上的馬爾科夫模型的基礎。
考慮D個二值變量組成的集合,其中
,每個變量都由一個參數為
的伯努利分布控制,即:
,其中,
,且
。我們看到,在給定
的條件下,各個變量
是獨立的。
因此,在獨立同分布情況下,這個分布的均值和方差可以很容易求得:。
我們先來嘗試討論這種分布的有限混合,即:,其中,
,且
。
這個混合分布的均值和方差為:,其中
。
由於協方差矩陣不再是對角矩陣,因此混合分布可以描述變量之間的相關性,這與單一的伯努利分布不同。
如果我們有一個數據集,那么這個模型的對數似然函數為:
。
和在高斯混合模型中一開始的情況一樣,我們看到求和運算位於對數運算內部,從而最大似然解沒有解析解。
為了解決這個問題,我們需要引入混合伯努利分布的最大化似然函數的EM算法。
1. 混合伯努利分布的最大化似然函數的EM算法推導
我們首先引入一個潛在變量 z,它與 x 的每個實例相關聯。與高斯混合模型的情形相同,是一個二值 K 維變量,其中只有一個元素等於1,其余元素等於0。這樣,給定潛在變量,我們可以寫出 x 的條件概率分布,形式為:
。
而潛在變量的先驗概率分布與高斯混合模型的形式相同,即:。
如果我們將和
相乘,然后對 z 求和,我們同樣得到該公式:
為了推導EM算法,我們首先寫出完整數據的對數似然函數,形式為:
,其中
。
接下來我們取完整數據對數似然函數關於潛在變量后驗概率分布的期望,得:
,其中
是給定數據點
的條件下,分量 k 的后驗概率分布,或者“責任”。
在E步驟中,這些后驗概率使用貝葉斯定理計算,形式為:
在上面關於潛在變量后驗概率分布的期望公式中,我們可以看到,如果我們對 n 求和,“責任”只出現在兩項中,這兩項可以寫成:
,其中
是與分量 k 的均值組成的集合等於數據的加權平均值,權系數為分量 k 對於數據點的“責任”。對於關於
的最大化,我們需要引入一個拉格朗日乘數來滿足限制條件
。采用與高斯混合模型中類似的步驟,我們有:
,即分量 k 的混合系數等於數據集里那個分量的數據點所占的比例,
伯努利分布參數的共軛先驗是Beta分布。我們已經看到一個Beta先驗分布等價於引入 x 的額外的有效觀測。類似地,我們可以引入伯努利混合模型的先驗分布,然后使用EM算法最大化后驗概率分布。
Relevant Link:
http://sklearn.apachecn.org/cn/stable/modules/mixture.html
5. 一般形式的EM算法
期望最大化算法,或者EM算法,是尋找具有潛在變量的概率模型的最大似然解的一種通用的方法。
這里,我們考慮一個概率模型,其中我們將所有的觀測變量聯合起來記作,將所有的隱含變量記作
。聯合概率分布
由一組參數控制,記作
。我們的目標是最大化似然函數:
這里,我們假設是離散的,但是當
是連續變量或者離散變量與連續變量的組合時,方法是完全相同的,只需要把求和換成適當的積分即可。
我們假設直接優化比較困難,但是最優化完整數據似然函數
就容易得多。接下來,我們引入一個定義在潛在變量上的分布
。我們觀察到,對於任意的
,下面的分解成立:
注意,是概率分布
的一個泛函,並且是參數
的一個函數。
根據上式,我們看到是
和后驗概率分布
之間的Kullback-Leibler散度。我們知道,Kullback-Leibler散度滿足
,當且僅當
時等號成立。因此,根據公式
我們得
。換句話說,
是
的一個下界,如下圖:
0x1:從KL散度角度看EM一般化過程
EM算法是一個兩階段的迭代優化算法,用於尋找最大似然解。我們可以使用公式來定義EM算法,證明它確實最大化了對數似然函數。
假設參數向量的當前值為
在E步驟中,下界關於
被最大化,而
保持固定。最大化問題的解很容易看出來。我們注意到
不依賴於
,因此
的最大值出現在Kullback-Leibler散度等於0的時候,換句話說,最大值出現在
與后驗概率分布
相等的時候。此時,下界等於對數似然函數,如下圖所示:
在接下來的M步驟中,分布保持固定,下界
關於
進行最大化,得到了某個新值
。這會使得下界
增大(除非已經達到了極大值),這會使得對應的對數似然喊增大。由於概率分布 q 由舊的參數值確定,並且在M步驟中保持固定,因為它不會等於新的后驗概率分布
,從而KL散度非零。於是,對數似然函數的增大量大於下界的增加量,如下圖所示:
此時,下界的形式為:
其中,常數就是分布 q 的熵,因此與無關。從而在M步驟中,最大化的量是完整數據對數似然函數的期望,正如我們在之前的混合高斯模型的情形中看到的一樣。
0x2:從參數空間角度看EM一般化過程
EM算法的計算也可以被看作參數空間中的運算,如下圖所示:
紅色曲線表示(不完整數據)對數似然函數,它的最大值是我們想要得到的。我們首先選擇某個初始的參數值,然后在第一個E步驟中,我們計算潛在變量上的后驗概率分布,得到
的一個更小的下界,它的值等於在
處的對數似然函數值,用藍色曲線表示。注意,下界與對數似然函數在
處以切線的方式連接,因此兩條曲線的梯度相同。這個界是一個凹函數,對於指數族分布的混合分布來說,有唯一的最大值。
在M步驟中,下界被最大化,得到新的值,這個值給出了比
處更大的對數似然函數只。
接下來的E步驟構建了一個新的下界,它在處與對數似然函數切線連接,用綠色線白哦是。如此循環往復。