標簽(空格分隔): 機器學習
(最近被一波波的筆試+面試淹沒了,但是在有兩次面試時被問到了同一個問題:K-Means算法的收斂性。在網上查閱了很多資料,並沒有看到很清晰的解釋,所以希望可以從K-Means與EM算法的關系,以及EM算法本身的收斂性證明中找到蛛絲馬跡,下次不要再掉坑啊。。)
EM算法的收斂性
1.通過極大似然估計建立目標函數:
\(l(\theta) = \sum_{i=1}^{m}log\ p(x;\theta) = \sum_{i=1}^{m}log\sum_{z}p(x,z;\theta)\)
通過EM算法來找到似然函數的極大值,思路如下:
希望找到最好的參數\(\theta\),能夠使最大似然目標函數取最大值。但是直接計算 \(l(\theta) = \sum_{i=1}^{m}log\sum_{z}p(x,z;\theta)\)比較困難,所以我們希望能夠找到一個不帶隱變量\(z\)的函數\(\gamma(x|\theta) \leq l(x,z;\theta)\)恆成立,並用\(\gamma(x|\theta)\)逼近目標函數。
如下圖所示:
- 在綠色線位置,找到一個\(\gamma\)函數,能夠使得該函數最接近目標函數,
- 固定\(\gamma\)函數,找到最大值,然后更新\(\theta\),得到紅線;
- 對於紅線位置的參數\(\theta\):
- 固定\(\theta\),找到一個最好的函數\(\gamma\),使得該函數更接近目標函數。
重復該過程,直到收斂到局部最大值。
2. 從Jensen不等式的角度來推導
令\(Q_{i}\)是\(z\)的一個分布,\(Q_{i} \geq 0\),則:
$l(\theta) = \sum_{i=1}^{m}log\sum_{z^{(i)}}p(x^{(i)},z^{(i)};\theta) \( \) = \sum_{i=1}^{m}log\sum_{z^{(i)}}Q_{i}(z^{(i)})\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})}\( \)\geq \sum_{i=1}^{m}\sum_{z^{(i)}}Q_{i}(z^{(i)})log\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})}$
(對於log函數的Jensen不等式)
3.使等號成立的Q
盡量使\(\geq\)取等號,相當於找到一個最逼近的下界:也就是Jensen不等式中,\(\frac{f(x_{1})+f(x_{2})}{2} \geq f(\frac{x_{1}+x_{2}}{2})\),當且僅當\(x_{1} = x_{2}\)時等號成立(很關鍵)。
對於EM的目標來說:應該使得\(log\)函數的自變量恆為常數,即:
\(\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})} = C\)
也就是分子的聯合概率與分母的z的分布應該成正比,而由於\(Q\)是z的一個分布,所以應該保證\(\sum_{z}Q_{i}(z^{(i)}) = 1\)
故\(Q = \frac{p}{p對z的歸一化因子}\)
\(Q_{i}(z^{(i)}) = \frac{p(x^{(i)},z^{(i)};\theta)}{\sum_{z}p(x^{(i)},z^{(i)};\theta)}\)
\(= \frac{p(x^{(i)},z^{(i)};\theta)}{p(x^{(i)};\theta)} = p(z^{(i)}|x^{(i)};\theta)\)
4.EM算法的框架
由上面的推導,可以得出EM的框架:
回到最初的思路,尋找一個最好的\(\gamma\)函數來逼近目標函數,然后找\(\gamma\)函數的最大值來更新參數\(\theta\):
- E-step: 根據當前的參數\(\theta\)找到一個最優的函數\(\gamma\)能夠在當前位置最好的逼近目標函數;
- M-step: 對於當前找到的\(\gamma\)函數,求函數取最大值時的參數\(\theta\)的值。
K-Means的收斂性
通過上面的分析,我們可以知道,在EM框架下,求得的參數\(\theta\)一定是收斂的,能夠找到似然函數的最大值。那么K-Means是如何來保證收斂的呢?
目標函數
假設使用平方誤差作為目標函數:
\(J(\mu_{1},\mu_{2},...,\mu_{k}) = \frac{1}{2}\sum_{j=1}^{K}\sum_{i=1}^{N}(x_{i}-\mu_{j})^{2}\)
E-Step
固定參數\(\mu_{k}\), 將每個數據點分配到距離它本身最近的一個簇類中:
M-Step
固定數據點的分配,更新參數(中心點)\(\mu_{k}\):
\(\mu_{k} = \frac{\sum_{n}\gamma_{nk}x_{n}}{\sum_{n}\gamma_{nk}}\)
所以,答案有了吧。為啥K-means會收斂呢?目標是使損失函數最小,在E-step時,找到一個最逼近目標的函數\(\gamma\);在M-step時,固定函數\(\gamma\),更新均值\(\mu\)(找到當前函數下的最好的值)。所以一定會收斂了~