在介紹EM算法之前,我們先來介紹一下高斯混合模型(GMM)。GMM是多個高斯分布的疊加。表達式如下
其中有i個高斯分布,
表示第i個高斯分布所占的權重(
)。
表示第i個高斯分布的數學表達式。
表示第i個高斯分布的參數。高斯
混合模型的機率密度圖像如下所示.
現在有如下執行個體。從一個高校中随機抽取200個人的身高資料。但是我們不知道這兩200個身高資料中的每一個是屬于男性,還是女性,并且不知道男女比例是多少。但是已知男生和女生的身高分别服從兩個不同的高斯分布。現在我們該如何利用資料去得到男生和女生的各自分布的參數(方差。均值,權重)。這就是我們的EM算法所要解決的事情。
其實男生和女生的分布就是一個明顯的GMM。
一想到參數估計,肯定我們腦海裡第一浮現的就是最大似然估計。當然此處也是如此。前面說了這是一個GMM問題。而且有了GMM表達式。那麼我們就開始按照MLE的解題步驟開始吧。
根據MLE的思想我們要讓随機抽取的200個資料在這個某一個GMM下分布發生的機率最大化。那麼就有對數似然函數
在
中 寫分号表示待估參數
是固定的,隻是目前未知。
應該可以直接認為是p(x),加了
是為了說明這裡有個
的參數。 (其中
參數包含每一個高斯分布的均值,方差,和權重三個未知參數)那麼接下來按照MLE的解題步驟。我們是不是隻要直接對
求最大值就行了呢?實踐證明這樣是不可取的,是無法的到結果的。下面我們引入一個隐變量 z,z表示的是某一個某一個資料所屬的類别(男,女。z=[類1,類2,類3,等])定義
(
),但是我們不知道他的分部是什麼。現在我們改寫
(n組資料,m個分布
表示在參數
下X發生并且是某一個
類的機率)其實這就是對某一個資料在多個類别中的機率的一個疊加。隻不過我們添加了一個隐變量在裡面友善後面操作。
再對
變形
先暫停一會兒。先來了解一個工具jensen不等式如果
是凸函數(二階導大于等于零)有
現在再回到
我們另
繼續改寫
。可以先不用看
這個和
。把他們去掉看這個
。我們知道Q(z)是一個分布,是z的一個權重。而g(z)是一個關于z的函數。是以可以把
看作是對 g(z)求期望。而log看成是一個函數。那麼根據前面的jessen不等式可以得到。
那麼就有
現在我們來分析一下這個不等式。首先把他們隻看做是關于
的函數,把隐變量 z看作常數。
可知
,
是一個凸函數。是以大概圖像如此
其中的A點對應的
值就是我們需要的最優值,現在的問題是我們如何得到這個A點。可知
是
的一個下界函數。由于
還有一個隐變量z,是以
有無數個下界函數。現在我們任意給定參數
。然後調整z的值一定可以讓
,
在圖中的B點相切。這也就是
這個不等式取等号的情況。根據jensen不等式性質我們可以知道。取等号的情況是
(c為一個常數)。變一下型
。因為
是以
是以
,利用這個等式我們可以求出Q(z) 。看到這個式子我們應該就明白了。給定一個初始
值我們就可以求出隐變量z的分布。這時圖中的
的位置就已經固定了。函數表達式也就固定了。然後我們可以去最大化下界函數
。得到在C點對應的一個參數
。然後重複上面的步驟。利用這個
,去得到新的Q(z)。直到
收斂。這時也就得到了結果。其實這有點像梯度上升,利用下界函數去慢慢逼近最優值。