梯度下降和EM算法,kmeans的em推導


I. 牛頓迭代法
給定一個復雜的非線性函數f(x),希望求它的最小值,我們一般可以這樣做,假定它足夠光滑,那么它的最小值也就是它的極小值點,滿足f′(x0)=0,然后可以轉化為求方程f′(x)=0的根了。非線性方程的根我們有個牛頓法,所以

 

然而,這種做法脫離了幾何意義,不能讓我們窺探到更多的秘密。我們寧可使用如下的思路:在y=f(x)的x=xn這一點處,我們可以用一條近似的曲線來逼近原函數,如果近似的曲線容易求最小值,那么我們就可以用這個近似的曲線求得的最小值,來近似代替原來曲線的最小值

顯然,對近似曲線的要求是:
1、跟真實曲線在某種程度上近似,一般而言,要求至少具有一階的近似度;
2、要有極小值點,並且極小值點容易求解。

這樣,我們很自然可以選擇“切拋物線”來近似(用二階泰勒展開近似原曲線):

 

該拋物線具有二階的精度。對於這條拋物線來說,極值點是(-b/(2*a))

所以我們重新得到了牛頓法的迭代公式:

如果f(x)足夠光滑並且在全局只有一個極值點,那么牛頓法將會是快速收斂的(速度指數增長),然而真實的函數並沒有這么理想,因此,它的缺點就暴露出來了:

1、需要求二階導數,有些函數求二階導數之后就相當復雜了;
2、因為f″(xn)的大小不定,所以g(x)開口方向不定,我們無法確定最后得到的結果究竟是極大值還是極小值

 

II. 梯度下降

這兩個缺點在很多問題上都是致命性的,因此,為了解決這兩個問題,我們放棄二階精度,即去掉f″(xn),改為一個固定的正數1/h:

這條近似曲線只有一階精度,但是同時也去掉了二階導數的計算,並且保證了這是一條開口向上的拋物線,因此,通過它來迭代,至少可以保證最后會收斂到一個極小值(至少是局部最小值)。上述g(x)的最小值點為

所以我們得到迭代公式

對於高維空間就是

這就是著名的梯度下降法了。當然,它本身存在很多問題,但很多改進的算法都是圍繞着它來展開,如隨機梯度下降等等。

這里我們將梯度下降法理解為近似拋物線來逼近得到的結果,既然這樣子看,讀者應該也會想到,憑啥我一定要用拋物線來逼近,用其他曲線來逼近不可以嗎?當然可以,對於很多問題來說,梯度下降法還有可能把問題復雜化,也就是說,拋物線失效了,這時候我們就要考慮其他形式的逼近了。事實上,其他逼近方案,基本都被稱為EM算法,恰好就只排除掉了系出同源的梯度下降法,實在讓人不解。

根據一階泰勒展開,對於一個可微函數,對於任意的x,有:

$ f(x+\alpha p)=f(x)+\alpha * g(x)*p+o(\alpha *\left| p \right|) $

其中:$ g(x)*p = \left| g(x) \right| *\left| p \right| *cos\theta $  ,$\theta$是兩向量之間的夾角,p是搜索方向

當 $\theta $ 為180度得時候,$g(x)*p$ 可取到最小值,即為下降最快的方向。所以,負梯度方向為函數f(x)下降最快的方向,x為未知參數,對X進行迭代更新

如果f(x)是凸函數,則局部最優解就是全局最優解。

V. K-Means

K-Means聚類很容易理解,就是已知N個點的坐標xi,i=1,…,N,然后想辦法將這堆點分為K類,每個類有一個聚類中心cj,j=1,…,K,很自然地,一個點所屬的類別,就是跟它最近的那個聚類中心cj所代表的類別,這里的距離定義為歐式距離。
所以,K-Means聚類的主要任務就是求聚類中心cj。我們當然希望每個聚類中心正好就在類別的“中心”了,用函數來表示出來,就是希望下述函數L最小(kmeans目標函數是平方損失函數):

 

其中,min操作保證了每個點只屬於離它最近的那一類。
如果直接用梯度下降法優化L,那么將會遇到很大困難,不過這倒不是因為min操作難以求導,而是因為這是一個NP的問題,理論收斂時間隨着N成指數增長。這時我們也是用EM算法的,這時候EM算法表現為:
1、隨機選K個點作為初始聚類中心;
2、已知K個聚類中心的前提下,算出各個點分別屬於哪一類,然后用同一類的所有點的平均坐標,來作為新的聚類中心。

這種方法迭代幾次基本就能夠收斂了,那么,這樣做的理由又在哪兒呢?

聚類問題:給定數據點x_1, x_2, \ldots, x_N \in \mathbb{R}^m,給定分類數目K,求出K個類中心\mu_1, \mu_2, \ldots, \mu_K \in \mathbb{R}^m,使得所有點到距離該點最近的類中心的距離的平方和\sum_{i=1}^N{\min_{1\le k \le K} ||x_i-\mu_k||_2^2}最小。

含隱變量的最大似然問題:給定數據點x_1, x_2, \ldots, x_N \in \mathbb{R}^m,給定分類數目K,考慮如下生成模型,

p(x,z|\mu_1, \mu_2, \ldots, \mu_K)\propto
\begin{cases} 
\exp\left(-\left|\left|{x-\mu_z}\right|\right|_2^2\right) & ||x-\mu_z||_2=\min_{1\le k \le K} ||x-\mu_k||_2\\ 
0 & ||x-\mu_z||_2>\min_{1\le k \le K} ||x-\mu_k||_2 \\ 
\end{cases}

模型中z\in\{1,2,\ldots,K\}為隱變量,表示簇的類別

這個式子的直觀意義是這樣的,對於某個將要生成的點x和類別號z,如果不滿足“x到中心\mu_z的距離小於等於x到其他中心\mu_k的距離”的話,則不生成這個點。如果滿足的話,則z取值就是這個“最近的”類中心的編號(如果有多個則均等概率隨機取一個),以高斯的概率密度在這個類中心周圍生成點x

用EM算法解這個含隱變量的最大似然問題就等價於用K-means算法解原聚類問題。

Q函數是完全數據的對數似然函數關於在給定X和參數$\mu$的情況下對隱變量Z的條件概率的期望,em算法通過求解對數似然函數的下界的極大值逼近求解對數似然函數的極大值

這和K-means算法中根據當前分配的樣本點求新的聚類中心的操作是一樣的


k-means是GMM的簡化,而不是特例。 

共同點:都是使用交替優化算法,要優化的參數分為兩組,固定一組,優化另一組。

  • GMM是先固定模型參數,優化\gamma(z_{nk}) ;然后固定\gamma(z_{nk}),優化\mu, \Sigma, \pi
  • k-means是先固定\mu(聚類中心),優化聚類賦值;然后固定聚類賦值,優化\mu

k-means對GMM的簡化有:

  • \pi_k = 1/K模型中混合權重相等
  • \Sigma_k = \epsilon I各個成分的協方差相等,且固定為單位矩陣的倍數
  • x_n分配給各個component的方式,由基於概率變為winner-take-all方式的 hard 賦值。(kmeans中,某樣本點和模型中某個子成分,如果該樣本點與子成分的中心距離最小,則以高斯的概率密度在中心點周圍生成這個點,否則就不生成這個點。而GMM中,每個子成分都有可能生成該樣本點,概率值為子成分的系數)

所以說GMM是更為flexible的model,由於大量的簡化,使得k-means算法收斂速度快於GMM,並且通常使用k-means對GMM進行初始化。

 

  

轉自: 

http://spaces.ac.cn/archives/4277/

https://www.zhihu.com/question/49972233


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM