EM算法-完整推導


前篇已經對EM過程,舉了扔硬幣和高斯分布等案例來直觀認識了, 目標是參數估計, 分為 E-step 和 M-step, 不斷循環, 直到收斂則求出了近似的估計參數, 不多說了, 本篇不說栗子, 直接來推導一波.

Jensen 不等式

在滿足:

  • 一個 concave 函數, 即 形狀為 "\(\bigcap\)" 的函數 \(f(x)\)

  • \(\lambda_j \ge 0\)

  • \(\sum \limits _j \lambda_j = 1\) 類似於隨機變量的分布

的前提條件下, 則有不等式:

\(f(\sum \limits _j \lambda_j x_j) \ge \sum \limits _j \lambda_j f(x_j)\)

恆成立, 則該不等式稱為 Jensen 不等式. 是有些不太直觀哦, (sum 是最后哦, 有時候會犯暈).

為了更直觀一點, 考慮 \(\lambda\) 只有兩個值, 即:

\(\lambda_1 = 1-t \\ \lambda_2 = 1\)

\(其中, 0 \leqslant t \leqslant 1\)

"\(\bigcap\)" 函數 f(x) 中有一段區間 [a, b], 構造出該 范圍內的一個點 \(x_t\)

當, \(x_t = (1+t)a + tb\) 則有:

\(f((1-t)a +tb) \ge (1-t)f(a) + tf(b)\)

這里跟之前寫過的 convex 其實是一模一樣的, 要是還不直觀, 就自個畫個草圖就秒懂了.

左邊是函數的值, 右邊連接兩個端點a,b的函數值的 直線, 因為是 "\(\bigcap 的\)", 故函數值必然在直線的上方.

用數學歸納法, 當 M > 2:

\(f(\sum \limits _{j=1}^M \lambda_j x_j) \ge \sum \limits _{j=1}^M \lambda_j f(x_j)\)

EM算法推導

假設給定一個包含 n 個獨立的訓練樣本的數據集, \(D = \{ x_1, x_2, x_3...x_n) \}\) 希望擬合一個概率模型 \(p(x, z)\) , 其對數似然函數(log likelihood) 為:

為啥要 log, 乘法變加法, 不太想說了, 自己都重復吐血了

似然, 不加log 前是: \(l(\theta) = \prod \limits _{i=1}^n p(x; \theta)\) 的嘛, 樣本的聯合概率最大

\(l(\theta) = \sum \limits _{i=1}^n log \ p(x; \theta)\)

\(= \sum \limits _{i=1}^n log \ \sum \limits _{z} p(x, z; \theta)\)

理解

\(\sum \limits _{z} p(x, z; \theta)\) 給定 \(\theta\) 的前提下, 關於 x, z 的 聯合概率

跟之前扔硬幣是一樣的, 對於每個獨立數據的產生, 其實還有一個隱含的因素 z (扔硬幣中,到底這次試驗是來自於硬幣A 還是硬幣B

每個Z因素, 影響着 p(x,z) 的 聯合概率分布. 考慮所有的 z, 則是全概率了呀.

  • 對於 \(p(x; \theta)\) 直接通過 x 來觀測 \(\theta\) 比較難 (扔硬幣中, 沒有上帝視角, 不知道扔結果是哪個硬幣產生的)
  • \(z^{(i)}\) 是一個隱變量(latent), 如果能觀測到 \(z^{(i)}\) 則參數預測會容易很多, EM算法就是來解決這個問題的

EM 算法呢, 分為兩個步驟:

  • 在 E 步中, 構建 \(l(\theta)\) 的下界函數 (給定 \(\theta\) 來找 z)
  • 在 M 步中, 最大化 這個下界函數

不太直觀, 就回顧上篇扔硬幣的栗子, 這里的 z 就是那個 來自哪里A 還是 B 的概率(每次試驗)

\(Q_i\) 為關於 z 的概率分布, 即 \(\sum \limits _{z} Q_i(z) = 1\) (z 如是連續變量則 \(\sum \rightarrow \int_z\)) ,

則對於上面的對數似然函數:

\(= \sum \limits _{i=1}^n log \ \sum \limits _{z} p(x_i, z_i; \theta) \ (1)\)

對 p 的部分, 同時 乘上 和除以 \(Q_i(z_i)\) 不改變等式 , 這種技巧, 中學的 "配平方 或 數列裂項求和" 一樣滴

\(= \sum \limits _i log \sum \limits _{z_i} Q_i(z_i) \frac {p(x_i, z_i; \theta)}{Q_i(z_i) } \ (2)\)

log 函數是 concave 的, 聯想 jensen不等式

\(f(\sum \limits _j \lambda_j x_j) \ge \sum \limits _j \lambda_j f(x_j)\)

即 log 對於與 f(); \(\sum \limits _{z_i} Q_i(z_i) 對應於 \sum \limits _j \lambda_j\) ; 最后一項對 \(x_j\)

\(\ge \sum \limits_{i} \sum \limits_{z_i}Q_i(z_i) \ log \frac {p(x_i, z_i; \theta)}{Q_i(z_i) } \ (3)\)

就類似與, 把一個, 函數里面的參數, 提取到 函數外面來. 如還是不理解, 回看之前寫的 convex 篇

什么時候會取到 等於?

即當 \(\frac {p(x_i, z_i; \theta)}{Q_i(z_i) } = c\) 是個常數的時候, (2) 和 (3) 是相等的.

\(p(x_i, z_i; \theta) = c \ * Q_i(z_i)\)\(\theta\) 給定下, 關於 x, z 的聯合概率分布 與 隱變量 z 的分布是一個線性關系

因為 \(\sum \limits_{z_i} Q_i(z_i) = 1\), 如果將 \(Q_i(z_i)\) 認為是 給定 \(x_i 和 z_i\)后驗概率分布, 這樣就得到了該似然函數的一個下界,

根據全概率(后驗) 與貝葉斯公式:

\(Q_i(x_i) = \frac {p(x_i, z_i; \theta)}{\sum \limits _{z_i} p(x_i, z_i; \theta)}\)

\(=\frac {p(x_i, z_i; \theta)}{p(x; \theta)}\)

\(=p(z_i|x_i, \theta)\)

相當於求 給定 \(\theta 和 x_i\) 的情況下, 求 z_i 的條件概率, 果然, 深刻理解貝葉斯公式顯得多么重要呀

再回顧一波貝葉斯公式:

設A1,A2,A3..構成完備事件組, 則對任意一事件B有:

\(P(A_i|B) = \frac {P(A_i)P(B|A_i)}{\sum \limits _{i=1}^n P(A_i)P(B|A_i)}\)

同上述, 只要當我們取 \(Q_i(z_i)\) 的值為 給定 \(\theta 和 x_i\) 的后驗概率分布的時候, 就能保證:

\(\frac {p(x_i, z_i; \theta)}{Q_i(z_i) }\)

的值是一個常數 (反過來推的), 既然是個常數, 也就**前面 (3) 的地方可以取 等號 啦, 即: **

\(\sum \limits _{i=1}^n log \ \sum \limits _{z} p(x_i, z_i; \theta) = \sum \limits_{i} \sum \limits_{z_i}Q_i(z_i) \ log \frac {p(x_i, z_i; \theta)}{Q_i(z_i) }\)

這樣一來, 相當於在 E 步得到了似然函數的一個下界, 然后在 M 步, 求解(3) 最大值時候的參數 \(\theta\) . 然后重復以上的 E, M 步驟:

E-步: For each i:

\(Q_i(z_i) = p(z_i | x_i; \theta)\)

M-步, 更新\(\theta\):

\(\theta = arg \ max _\theta \sum \limits_{i} \sum \limits_{z_i}Q_i(z_i) \ log \frac {p(x_i, z_i; \theta)}{Q_i(z_i) }\)

....

循環直到收斂, 則估計出了 參數 \(\theta\) 但, 萬一不收斂呢?, so, 必須證明一波, EM算法是收斂的哦

證明EM算法會收斂

假設 \(\theta^{(t)} 和 \theta^{(t+1)}\) 為EM算法的連續兩個步驟的參數值, 欲證\(l (\theta)\)收斂, 只需證:

\(l(\theta^{(t)}) \leq l(\theta^{(t+1)})\)

即可EM算法使得似然函數的值單調遞增即可

根據前面關於用 jensen不等式的取等條件, 推導出, 取得 \(Q_i(z_i)^{(t)}\) 的方式是:

\(Q_i ^{(t)} (z_i) = p(z_i | x_i; \theta ^{(t)})\)

此條件下, 使得jensen不等式取等即:

\(l(\theta^{(t)}) = \sum \limits_{i} \sum \limits_{z_i}Q_i(z_i) \ log \frac {p(x_i, z_i; \theta ^t)}{Q_i(z_i) }\)

而參數 \(\theta^{(t+1)}\) 的取值方式, 是使得上面的這個等式的值最大, 則必然 \(l(\theta^{(t+1)}) \ge l(\theta^{(t)})\) 展開一波:

\(l(\theta^{(t+1)}) \ge \sum \limits_{i} \sum \limits_{z_i}Q_i^t(z_i) \ log \frac {p(x_i, z_i; \theta ^{(t+1)})}{Q_i^t(z_i) } \ (4)\)

\(\ge \sum \limits_{i} \sum \limits_{z_i}Q_i^t(z_i) \ log \frac {p(x_i, z_i; \theta^t)}{Q_i^t(z_i) }\ (5)\)

\(=l(\theta^{(t)}) \ (6)\)

  • (4) 源於不等式的性質, 必然成立嘛
  • (5) 就是取最大值的一個過程必然成立
  • (6) 取相等的方式去是應用了 Jensen不等式

即證明了\(l(\theta^{(t)}) \leq l(\theta^{(t+1)})\) , 即EM算法是收斂的呀.

小結

首先是要理解,參數估計的 是在干嘛, 需要回顧統計學的基礎知識, 或理解上篇扔硬幣的栗子

核心, 用到了一個jensen 不等式, 需要回顧凸函數的一些性質來理解一波

推導的方式呢, 依舊是極大似然估計, 帶log (乘法邊加法)

推導核心技巧是 全概率與貝葉斯公式, 真正理解太重要, 如LDA, 邏輯回歸, 貝葉斯...這些算法都用到了.

證明收斂, 其實只是一些, 推理的技巧, 還是挺有意思的.

總體上, EM算法, 理解起來,我感覺不是很容易, 但, 也沒有想象的那樣難, 只要肯堅持, 正如愛因斯坦所說的那樣嘛, 當然也為了自勉目前在經濟和精神雙重困境中的自己:

耐心和恆心, 總會獲得收獲的


免責聲明!

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



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