機器學習(V)--無監督學習(三)EM算法

EM算法

極大似然估計

極大似然估計:(maximum likelihood estimate, MLE) 是一種常用的模型參數估計方法。它假設觀測樣本出現的概率最大,也即樣本聯合概率(也稱似然函數)取得最大值。

為求解方便,對樣本聯合概率取對數似然函數
log ? L ( θ ) = log ? P ( X ∣ θ ) = ∑ i = 1 N log ? P ( x i ∣ θ ) \log L(\theta) =\log\mathbb P(X|\theta)=\sum_{i=1}^N\log \mathbb P(\mathbf x_i|\theta) logL(θ)=logP(Xθ)=i=1N?logP(xi?θ)
優化目標是最大化對數似然函數
θ ^ = arg ? max ? θ ∑ i = 1 N log ? P ( x i ∣ θ ) \hat\theta=\arg\max_{\theta}\sum_{i=1}^N\log \mathbb P(\mathbf x_i|\theta) θ^=argθmax?i=1N?logP(xi?θ)

假設瓜田里有兩種類型的西瓜🍉,瓜農隨機抽取了10個西瓜,來了解西瓜的重量分布 p ( x ∣ θ ) p(x|\theta) p(xθ),記錄結果如下:

變量樣本
西瓜重量 x x x5.3 , 5.7, 4.7, 4.3, 3.2, 4.9, 4.1, 3.5, 3.8, 1.7
西瓜品種 z z z1, 1, 1, 1, 2, 2, 2, 2, 2, 2

其中,西瓜的品種 z z z 是離散分布 P ( z = k ) = π k \mathbb P(z=k)=\pi_k P(z=k)=πk?,一般假設兩種類型的西瓜服從均值和方差不同的高斯分布 N ( μ 1 , σ 1 2 ) N(\mu_1,\sigma^2_1) N(μ1?,σ12?) N ( μ 2 , σ 2 2 ) N(\mu_2,\sigma^2_2) N(μ2?,σ22?)。由全概率公式,西瓜重量的概率密度模型
p ( x ; θ ) = π 1 N ( x ; μ 1 , σ 1 2 ) + π 2 N ( x ; μ 2 , σ 2 2 ) p(x;\theta)=\pi_1\mathcal N(x;\mu_1,\sigma^2_1)+\pi_2\mathcal N(x;\mu_2,\sigma^2_2) p(x;θ)=π1?N(x;μ1?,σ12?)+π2?N(x;μ2?,σ22?)

我們嘗試用極大似然估計求解參數 θ = ( π 1 , π 2 , μ 1 , σ 1 2 , μ 2 , σ 2 2 ) \theta=(\pi_1,\pi_2,\mu_1,\sigma^2_1,\mu_2,\sigma^2_2) θ=(π1?,π2?,μ1?,σ12?,μ2?,σ22?)

優化目標函數
max ? θ ∑ z i = 1 log ? π 1 N ( x i ; μ 1 , σ 1 2 ) + ∑ z i = 2 log ? π 2 N ( x i ; μ 2 , σ 2 2 ) s.t.? π 1 + π 2 = 1 \max_{\theta}\sum_{z_i=1}\log \pi_1\mathcal N(x_i;\mu_1,\sigma_1^2)+\sum_{z_i=2}\log \pi_2\mathcal N(x_i;\mu_2,\sigma_2^2) \\ \text{s.t. } \pi_1+\pi_2=1 θmax?zi?=1?logπ1?N(xi?;μ1?,σ12?)+zi?=2?logπ2?N(xi?;μ2?,σ22?)s.t.?π1?+π2?=1
使用拉格朗日乘子法容易求得
π 1 = 0.4 , π 2 = 0.6 μ 1 = 5 , σ 1 2 = 0.5 4 2 μ 2 = 3.53 , σ 2 2 = 0.9 8 2 \pi_1=0.4,\quad \pi_2=0.6 \\ \mu_1=5,\quad \sigma_1^2=0.54^2 \\ \mu_2=3.53,\quad \sigma_2^2=0.98^2 \\ π1?=0.4,π2?=0.6μ1?=5,σ12?=0.542μ2?=3.53,σ22?=0.982

最終得到

p ( x ) = 0.4 × N ( x ; 5 , 0.5 4 2 ) + 0.6 × N ( x ; 3.53 , 0.9 8 2 ) p(x)=0.4\times\mathcal N(x;5,0.54^2)+0.6\times\mathcal N(x;3.53,0.98^2) p(x)=0.4×N(x;5,0.542)+0.6×N(x;3.53,0.982)

但是,實際中如果瓜農無法辯識標記西瓜的品種,此時概率分布函數變為
p ( x ; θ ) = π N ( x ; μ 1 , σ 1 2 ) + ( 1 ? π ) N ( x ; μ 2 , σ 2 2 ) p(x;\theta)=\pi\mathcal N(x;\mu_1,\sigma^2_1)+(1-\pi)\mathcal N(x;\mu_2,\sigma^2_2) p(x;θ)=πN(x;μ1?,σ12?)+(1?π)N(x;μ2?,σ22?)

其中品種 z z z 成為隱藏變量。對數似然函數變為
log ? L ( θ ) = ∑ i log ? ( π N ( x i ; μ 1 , σ 1 2 ) + ( 1 ? π ) N ( x i ; μ 2 , σ 2 2 ) ) \log L(\theta)=\sum_{i}\log (\pi\mathcal N(x_i;\mu_1,\sigma^2_1)+(1-\pi)\mathcal N(x_i;\mu_2,\sigma^2_2)) logL(θ)=i?log(πN(xi?;μ1?,σ12?)+(1?π)N(xi?;μ2?,σ22?))
其中參數 θ = ( π , μ 1 , σ 1 2 , μ 2 , σ 2 2 ) \theta=(\pi,\mu_1,\sigma^2_1,\mu_2,\sigma^2_2) θ=(π,μ1?,σ12?,μ2?,σ22?)。上式中存在"和的對數",若直接求導將會變得很麻煩。下節我們將會介紹EM算法來解決此類問題。

基本思想

概率模型有時既含有觀測變量 (observable variable),又含有隱變量 (latent variable)。EM(Expectation-Maximization,期望最大算法)是一種迭代算法,用于含有隱變量的概率模型的極大似然估計或極大后驗估計,是數據挖掘的十大經典算法之一。

假設現有一批獨立同分布的樣本
X = { x 1 , x 2 , ? , x N } X=\{x_1,x_2,\cdots,x_N\} X={x1?,x2?,?,xN?}
它們是由某個含有隱變量的概率分布 p ( x , z ∣ θ ) p(x,z|\theta) p(x,zθ) 生成。設樣本對應的隱變量數據
Z = { z 1 , z 2 , ? , z N } Z=\{z_1,z_2,\cdots,z_N\} Z={z1?,z2?,?,zN?}

對于一個含有隱變量 Z Z Z 的概率模型,一般將 ( X , Z ) (X,Z) (X,Z) 稱為完全數據 (complete-data),而觀測數據 X X X 為不完全數據(incomplete-data)。

假設觀測數據 X X X 概率密度函數是 p ( X ∣ θ ) p(X|\theta) p(Xθ),其中 θ \theta θ是需要估計的模型參數,現嘗試用極大似然估計法估計此概率分布的參數。為了便于討論,此處假設 z z z 為連續型隨機變量,則對數似然函數為
log ? L ( θ ) = ∑ i = 1 N log ? p ( x i ∣ θ ) = ∑ i = 1 N log ? ∫ z i p ( x i , z i ∣ θ ) d z i \log L(\theta)=\sum_{i=1}^N\log p(x_i|\theta)=\sum_{i=1}^N\log\int_{z_i}p(x_i,z_i|\theta)\mathrm dz_i logL(θ)=i=1N?logp(xi?θ)=i=1N?logzi??p(xi?,zi?θ)dzi?

Suppose you have a probability model with parameters θ \theta θ.
p ( x ∣ θ ) p(x|\theta) p(xθ) has two names. It can be called the probability of x x x (given θ \theta θ), or the likelihood of θ \theta θ (given that x x x was observed).

我們的目標是極大化觀測數據 X X X 關于參數 θ \theta θ 的對數似然函數
θ ^ = arg ? max ? θ log ? L ( θ ) \hat\theta=\arg\max_{\theta}\log L(\theta) θ^=argθmax?logL(θ)

顯然,此時 log ? L ( θ ) \log L(\theta) logL(θ) 里含有未知的隱變量 z z z 以及求和項的對數,相比于不含隱變量的對數似然函數,該似然函數的極大值點較難求解,而 EM 算法則給出了一種迭代的方法來完成對 log ? L ( θ ) \log L(\theta) logL(θ) 的極大化。

注意:確定好含隱變量的模型后,即確定了聯合概率密度函數 p ( x , z ∣ θ ) p(x,z|\theta) p(x,zθ) ,其中 θ \theta θ是需要估計的模型參數。為便于討論,在此有必要說明下其他已知的概率函數。

聯合概率密度函數
p ( x , z ∣ θ ) = f ( x , z ; θ ) p(x,z|\theta)=f(x,z;\theta) p(x,zθ)=f(x,z;θ)
觀測變量 x x x 的概率密度函數
p ( x ∣ θ ) = ∫ z f ( x , z ; θ ) d z p(x|\theta)=\int_z f(x,z;\theta)\mathrm dz p(xθ)=z?f(x,z;θ)dz
隱變量 z z z 的概率密度函數
p ( z ∣ θ ) = ∫ x f ( x , z ; θ ) d x p(z|\theta)=\int_x f(x,z;\theta)\mathrm dx p(zθ)=x?f(x,z;θ)dx
條件概率密度函數
p ( x ∣ z , θ ) = p ( x , z ∣ θ ) p ( z ∣ θ ) = f ( x , z ; θ ) ∫ x f ( x , z ; θ ) d x p(x|z,\theta)=\frac{p(x,z|\theta)}{p(z|\theta)}=\frac{f(x,z;\theta)}{\int_x f(x,z;\theta)\mathrm dx} p(xz,θ)=p(zθ)p(x,zθ)?=x?f(x,z;θ)dxf(x,z;θ)?

p ( z ∣ x , θ ) = p ( x , z ∣ θ ) p ( x ∣ θ ) = f ( x , z ; θ ) ∫ z f ( x , z ; θ ) d z p(z|x,\theta)=\frac{p(x,z|\theta)}{p(x|\theta)}=\frac{f(x,z;\theta)}{\int_z f(x,z;\theta)\mathrm dz} p(zx,θ)=p(xθ)p(x,zθ)?=z?f(x,z;θ)dzf(x,z;θ)?
下面給出兩種推導方法:一種借助 Jensen 不等式;一種使用 KL 散度。

首先使用 Jensen 不等式推導:使用含有隱變量的全概率公式
log ? p ( x i ∣ θ ) = log ? ∫ z i p ( x i , z i ∣ θ ) d z i = log ? ∫ z i q i ( z i ) p ( x i , z i ∣ θ ) q i ( z i ) d z i = log ? E z ( p ( x i , z i ∣ θ ) q i ( z i ) ) ? E z ( log ? p ( x i , z i ∣ θ ) q i ( z i ) ) = ∫ z i q i ( z i ) log ? p ( x i , z i ∣ θ ) q i ( z i ) d z i \begin{aligned} \log p(x_i|\theta)&=\log\int_{z_i} p(x_i,z_i|\theta)\mathrm dz_i \\ &=\log\int_{z_i}q_i(z_i)\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\mathrm dz_i \\ &=\log\mathbb E_z\left(\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\right) \\ &\geqslant \mathbb E_z\left(\log\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\right) \\ &= \int_{z_i}q_i(z_i) \log\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\mathrm dz_i \end{aligned} logp(xi?θ)?=logzi??p(xi?,zi?θ)dzi?=logzi??qi?(zi?)qi?(zi?)p(xi?,zi?θ)?dzi?=logEz?(qi?(zi?)p(xi?,zi?θ)?)?Ez?(logqi?(zi?)p(xi?,zi?θ)?)=zi??qi?(zi?)logqi?(zi?)p(xi?,zi?θ)?dzi??
其中 q i ( z i ) q_i(z_i) qi?(zi?) 是引入的第 i i i個樣本隱變量 z i z_i zi? 的任意概率密度函數(未知函數),其實 q q q 不管是任意函數,上式都成立。從后續推導得知,當 q i ( z i ) q_i(z_i) qi?(zi?) z i z_i zi? 的概率密度時,方便計算。

所以
log ? L ( θ ) = ∑ i = 1 N log ? p ( x i ∣ θ ) ? B ( q , θ ) = ∑ i = 1 N ∫ z i q i ( z i ) log ? p ( x i , z i ∣ θ ) q i ( z i ) d z i \log L(\theta)=\sum_{i=1}^N\log p(x_i|\theta)\geqslant B(q,\theta)=\sum_{i=1}^N\int_{z_i}q_i(z_i) \log\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\mathrm dz_i logL(θ)=i=1N?logp(xi?θ)?B(q,θ)=i=1N?zi??qi?(zi?)logqi?(zi?)p(xi?,zi?θ)?dzi?

其中函數 B B B 為對數似然的下界函數。下界比較好求,所以我們要優化這個下界來使得似然函數最大。

假設第 t t t 次迭代時 θ \theta θ 的估計值是 θ ( t ) \theta^{(t)} θ(t),我們希望第 t + 1 t+1 t+1 次迭代時的 θ \theta θ 能使 log ? L ( θ ) \log L(\theta) logL(θ) 增大,即
log ? L ( θ ( t ) ) ? log ? L ( θ ( t + 1 ) ) \log L(\theta^{(t)}) \leqslant \log L(\theta^{(t+1)}) logL(θ(t))?logL(θ(t+1))

可以分為兩步實現:

  • 首先,固定 θ = θ ( t ) \theta=\theta^{(t)} θ=θ(t) ,通過調整 q q q 函數使得 B ( q ( t ) , θ ) B(q^{(t)},\theta) B(q(t),θ) θ ( t ) \theta^{(t)} θ(t) 處和 log ? L ( θ ( t ) ) \log L(\theta^{(t)}) logL(θ(t)) 相等;
    B ( q ( t ) , θ ( t ) ) = log ? L ( θ ( t ) ) B(q^{(t)},\theta^{(t)})=\log L(\theta^{(t)}) B(q(t),θ(t))=logL(θ(t))

  • 然后,固定 q q q,優化 θ ( t + 1 ) \theta^{(t+1)} θ(t+1) 取到下界函數 B ( q ( t ) , θ ) B(q^{(t)},\theta) B(q(t),θ) 的最大值。
    θ ( t + 1 ) = arg ? max ? θ B ( q ( t ) , θ ) \theta^{(t+1)}=\arg\max_{\theta} B(q^{(t)},\theta) θ(t+1)=argθmax?B(q(t),θ)

所以
log ? L ( θ ( t + 1 ) ) ? B ( q ( t ) , θ ( t + 1 ) ) ? B ( q ( t ) , θ ( t ) ) = log ? L ( θ ( t ) ) \log L(\theta^{(t+1)})\geqslant B(q^{(t)},\theta^{(t+1)})\geqslant B(q^{(t)},\theta^{(t)})=\log L(\theta^{(t)}) logL(θ(t+1))?B(q(t),θ(t+1))?B(q(t),θ(t))=logL(θ(t))

因此,EM算法也可以看作一種坐標提升算法,首先固定一個值,對另外一個值求極值,不斷重復直到收斂。

接下來,我們開始求解 q ( t ) q^{(t)} q(t) 。Jensen不等式中等號成立的條件是自變量是常數,即
p ( x i , z i ∣ θ ) q i ( z i ) = c \frac{p(x_i,z_i|\theta)}{q_i(z_i)}=c qi?(zi?)p(xi?,zi?θ)?=c
由于假設 q i ( z i ) q_i(z_i) qi?(zi?) z i z_i zi? 的概率密度函數,所以
p ( x i ∣ θ ) = ∫ z i p ( x i , z i ∣ θ ) d z i = ∫ z i c q i ( z i ) d z i = c p(x_i|\theta)=\int_{z_i}p(x_i,z_i|\theta)\mathrm dz_i=\int_{z_i} cq_i(z_i)\mathrm dz_i=c p(xi?θ)=zi??p(xi?,zi?θ)dzi?=zi??cqi?(zi?)dzi?=c

于是
q i ( z i ) = p ( x i , z i ∣ θ ) c = p ( x i , z i ∣ θ ) p ( x i ∣ θ ) = p ( z i ∣ x i , θ ) q_i(z_i)=\frac{p(x_i,z_i|\theta)}{c}=\frac{p(x_i,z_i|\theta)}{p(x_i|\theta)}=p(z_i|x_i,\theta) qi?(zi?)=cp(xi?,zi?θ)?=p(xi?θ)p(xi?,zi?θ)?=p(zi?xi?,θ)
可以看到,函數 q i ( z i ) q_i(z_i) qi?(zi?) 代表第 i i i 個數據是 z i z_i zi? 的概率密度,是可以直接計算的。

最終,我們只要初始化或使用上一步已經固定的 θ ( t ) \theta^{(t)} θ(t),然后計算
θ ( t + 1 ) = arg ? max ? θ ∑ i = 1 N ∫ z i p ( z i ∣ x i , θ ( t ) ) log ? p ( x i , z i ∣ θ ) p ( z i ∣ x i , θ ( t ) ) d z i = arg ? max ? θ ∑ i = 1 N ∫ z i p ( z i ∣ x i , θ ( t ) ) log ? p ( x i , z i ∣ θ ) d z i = arg ? max ? θ ∑ i = 1 N E z i ∣ x i , θ ( t ) [ log ? p ( x i , z i ∣ θ ) ] = arg ? max ? θ Q ( θ , θ ( t ) ) \begin{aligned} \theta^{(t+1)}& = \arg\max_{\theta}\sum_{i=1}^N\int_{z_i}p(z_i|x_i,\theta^{(t)}) \log\frac{p(x_i,z_i|\theta)}{p(z_i|x_i,\theta^{(t)})}\mathrm dz_i \\ & = \arg\max_{\theta}\sum_{i=1}^N\int_{z_i}p(z_i|x_i,\theta^{(t)}) \log p(x_i,z_i|\theta)\mathrm dz_i \\ & = \arg\max_{\theta}\sum_{i=1}^N \mathbb E_{z_i|x_i,\theta^{(t)}}[\log p(x_i,z_i|\theta)] \\ & = \arg\max_{\theta} Q(\theta,\theta^{(t)}) \end{aligned} θ(t+1)?=argθmax?i=1N?zi??p(zi?xi?,θ(t))logp(zi?xi?,θ(t))p(xi?,zi?θ)?dzi?=argθmax?i=1N?zi??p(zi?xi?,θ(t))logp(xi?,zi?θ)dzi?=argθmax?i=1N?Ezi?xi?,θ(t)?[logp(xi?,zi?θ)]=argθmax?Q(θ,θ(t))?

接下來使用 KL 散度推導:使用含有隱變量的條件概率
log ? p ( x i ∣ θ ) = log ? p ( x i , z i ∣ θ ) p ( z i ∣ x i , θ ) = ∫ z i q i ( z i ) log ? p ( x i , z i ∣ θ ) p ( z i ∣ x i , θ ) ? q i ( z i ) q i ( z i ) d z i = ∫ z i q i ( z i ) log ? p ( x i , z i ∣ θ ) q i ( z i ) d z i + ∫ z i q i ( z i ) log ? q i ( z i ) p ( z i ∣ x i , θ ) d z i = B ( q i , θ ) + K L ( q i ∥ p i ) \begin{aligned} \log p(x_i|\theta)&=\log\frac{p(x_i,z_i|\theta)}{p(z_i|x_i,\theta)} \\ &=\int_{z_i}q_i(z_i)\log\frac{p(x_i,z_i|\theta)}{p(z_i|x_i,\theta)}\cdot\frac{q_i(z_i)}{q_i(z_i)}\mathrm dz_i \\ &= \int_{z_i}q_i(z_i) \log\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\mathrm dz_i + \int_{z_i}q_i(z_i) \log\frac{q_i(z_i)}{p(z_i|x_i,\theta)}\mathrm dz_i \\ &=B(q_i,\theta)+KL(q_i\|p_i) \end{aligned} logp(xi?θ)?=logp(zi?xi?,θ)p(xi?,zi?θ)?=zi??qi?(zi?)logp(zi?xi?,θ)p(xi?,zi?θ)??qi?(zi?)qi?(zi?)?dzi?=zi??qi?(zi?)logqi?(zi?)p(xi?,zi?θ)?dzi?+zi??qi?(zi?)logp(zi?xi?,θ)qi?(zi?)?dzi?=B(qi?,θ)+KL(qi?pi?)?
同樣 q i ( z i ) q_i(z_i) qi?(zi?) 是引入的關于 z i z_i zi? 的任意概率密度函數(未知函數),函數 B ( q i , θ ) B(q_i,\theta) B(qi?,θ) 表示對數似然的一個下界,散度 K L ( q i ∥ p i ) KL(q_i\|p_i) KL(qi?pi?)描述了下界與對數似然的差距。

同樣為了保證
log ? L ( θ ( t ) ) ? log ? L ( θ ( t + 1 ) ) \log L(\theta^{(t)}) \leqslant \log L(\theta^{(t+1)}) logL(θ(t))?logL(θ(t+1))

分為兩步實現:

  • 首先,固定 θ = θ ( t ) \theta=\theta^{(t)} θ=θ(t) ,通過調整 q q q 函數使得 B ( q ( t ) , θ ) B(q^{(t)},\theta) B(q(t),θ) θ ( t ) \theta^{(t)} θ(t) 處和 log ? L ( θ ( t ) ) \log L(\theta^{(t)}) logL(θ(t)) 相等,即 K L ( q i ∥ p i ) = 0 KL(q_i\|p_i)=0 KL(qi?pi?)=0,于是
    q i ( z i ) = p ( z i ∣ x i , θ ( t ) ) q_i(z_i)=p(z_i|x_i,\theta^{(t)}) qi?(zi?)=p(zi?xi?,θ(t))

  • 然后,固定 q q q,優化 θ ( t + 1 ) \theta^{(t+1)} θ(t+1) 取到下界函數 B ( q ( t ) , θ ) B(q^{(t)},\theta) B(q(t),θ) 的最大值。
    θ ( t + 1 ) = arg ? max ? θ B ( q ( t ) , θ ) \theta^{(t+1)}=\arg\max_{\theta} B(q^{(t)},\theta) θ(t+1)=argθmax?B(q(t),θ)

算法流程

輸入:觀測數據 X X X,聯合分布 p ( x , z ; θ ) p(x,z;\theta) p(x,z;θ),條件分布 P ( z ∣ x , θ ) P(z|x,\theta) P(zx,θ)

輸出:模型參數 θ \theta θ

EM算法通過引入隱含變量,使用極大似然估計(MLE)進行迭代求解參數。每次迭代由兩步組成:

  • E-step:求期望 (expectation)。以參數的初始值或上一次迭代的模型參數 θ ( t ) \theta^{(t)} θ(t) 來計算隱變量后驗概率 p ( z i ∣ x i , θ ( t ) ) p(z_i|x_i,\theta^{(t)}) p(zi?xi?,θ(t)) ,并計算期望(expectation)
    Q ( θ , θ ( t ) ) = ∑ i = 1 N ∫ z i p ( z i ∣ x i , θ ( t ) ) log ? p ( x i , z i ∣ θ ) d z i Q(\theta,\theta^{(t)})=\sum_{i=1}^N\int_{z_i}p(z_i|x_i,\theta^{(t)}) \log p(x_i,z_i|\theta)\mathrm dz_i Q(θ,θ(t))=i=1N?zi??p(zi?xi?,θ(t))logp(xi?,zi?θ)dzi?

  • M-step: 求極大 (maximization),極大化E步中的期望值,來確定 t + 1 t+1 t+1 次迭代的參數估計值
    θ ( t + 1 ) = arg ? max ? θ Q ( θ , θ ( t ) ) \theta^{(t+1)}=\arg\max_{\theta} Q(\theta,\theta^{(t)}) θ(t+1)=argθmax?Q(θ,θ(t))

依次迭代,直至收斂到局部最優解。

高斯混合模型

基礎模型

高斯混合模型 (Gaussian Mixture Model, GMM) 數據可以看作是從 K K K個高斯分布中生成出來的,每個高斯分布稱為一個組件 (Component)。

引入隱變量 z ∈ { 1 , 2 , ? , K } z\in\{1,2,\cdots,K\} z{1,2,?,K},表示對應的樣本 x x x 屬于哪一個高斯分布,這個變量是一個離散的隨機變量:
P ( z = k ) = π k s.t.? ∑ k = 1 K π k = 1 \mathbb P(z=k)=\pi_k \\ \text{s.t. } \sum_{k=1}^K\pi_k=1 P(z=k)=πk?s.t.?k=1K?πk?=1
可將 π k \pi_k πk? 視為選擇第 k k k 高斯分布的先驗概率,而對應的第 k k k 個高斯分布的樣本概率
p ( x ∣ z = k ) = N ( x ; μ k , Σ k ) p(x|z=k)=\mathcal N(x;\mu_k,\Sigma_k) p(xz=k)=N(x;μk?,Σk?)

于是高斯混合模型
p M ( x ) = ∑ k = 1 K π k N ( x ; μ k , Σ k ) p_M(x)=\sum_{k=1}^K\pi_k\mathcal N(x;\mu_k,\Sigma_k) pM?(x)=k=1K?πk?N(x;μk?,Σk?)

其中 0 ? π k ? 1 0\leqslant \pi_k\leqslant 1 0?πk??1為混合系數(mixing coefficients)。

高斯混合模型的參數估計是EM算法的一個重要應用,隱馬爾科夫模型的非監督學習也是EM算法的一個重要應用。

EM算法

高斯混合模型的極大似然估計
θ ^ = arg ? max ? θ ∑ i = 1 N log ? ∑ k = 1 K π k N ( x i ; μ k , Σ k ) \hat\theta=\arg\max_{\theta} \sum_{i=1}^N\log\sum_{k=1}^K\pi_k \mathcal N(x_i;\mu_k,\Sigma_k) θ^=argθmax?i=1N?logk=1K?πk?N(xi?;μk?,Σk?)
其中參數 θ k = ( π k , μ k , Σ k ) \theta_k=(\pi_k,\mu_k,\Sigma_k) θk?=(πk?,μk?,Σk?),使用EM算法估計GMM的參數 θ \theta θ

依照當前模型參數,計算隱變量后驗概率:由貝葉斯公式知道
P ( z i = k ∣ x i ) = P ( z i = k ) p ( x i ∣ z i = k ) p ( x i ) = π k N ( x i ; μ k , Σ k ) ∑ k = 1 K π k N ( x i ; μ k , Σ k ) = γ i k \begin{aligned} P(z_i=k|x_i)&=\frac{P(z_i=k)p(x_i|z_i=k)}{p(x_i)} \\ &=\frac{\pi_k\mathcal N(x_i;\mu_k,\Sigma_k)}{\sum_{k=1}^K\pi_k\mathcal N(x_i;\mu_k,\Sigma_k) } \\ &=\gamma_{ik} \end{aligned} P(zi?=kxi?)?=p(xi?)P(zi?=k)p(xi?zi?=k)?=k=1K?πk?N(xi?;μk?,Σk?)πk?N(xi?;μk?,Σk?)?=γik??

γ i k \gamma_{ik} γik?表示第 i i i個樣本屬于第 k k k個高斯分布的概率。

E-step:確定Q函數

Q ( θ , θ ( t ) ) = ∑ i = 1 N ∑ k = 1 K p ( z i = k ∣ x i , μ ( t ) , Σ ( t ) ) log ? p ( x i , z i = k ∣ μ , Σ ) = ∑ i = 1 N ∑ k = 1 K γ i k log ? π k N ( x ; μ k , Σ k ) = ∑ i = 1 N ∑ k = 1 K γ i k ( log ? π k + log ? N ( x ; μ k , Σ k ) ) \begin{aligned} Q(\theta,\theta^{(t)})&=\sum_{i=1}^N\sum_{k=1}^Kp(z_i=k|x_i,\mu^{(t)},\Sigma^{(t)}) \log p(x_i,z_i=k|\mu,\Sigma) \\ &=\sum_{i=1}^N\sum_{k=1}^K\gamma_{ik}\log\pi_k\mathcal N(x;\mu_k,\Sigma_k) \\ &=\sum_{i=1}^N\sum_{k=1}^K\gamma_{ik}(\log\pi_k+ \log\mathcal N(x;\mu_k,\Sigma_k) ) \end{aligned} Q(θ,θ(t))?=i=1N?k=1K?p(zi?=kxi?,μ(t),Σ(t))logp(xi?,zi?=kμ,Σ)=i=1N?k=1K?γik?logπk?N(x;μk?,Σk?)=i=1N?k=1K?γik?(logπk?+logN(x;μk?,Σk?))?

M-step:求Q函數的極大值

上面已獲得的 Q ( θ , θ ( t ) ) Q(\theta,\theta^{(t)}) Q(θ,θ(t))分別對 μ k , Σ k \mu_k,\Sigma_k μk?,Σk?求導并設為0。得到
μ k ( t + 1 ) = ∑ i = 1 N γ i k x i ∑ i = 1 N γ i k Σ k ( t + 1 ) = ∑ i = 1 N γ i k ( x i ? μ k ( t + 1 ) ) ( x i ? μ k ( t + 1 ) ) T ∑ i = 1 N γ i k \mu_k^{(t+1)}=\frac{\sum_{i=1}^N\gamma_{ik}x_i}{\sum_{i=1}^N\gamma_{ik}} \\ \Sigma_k^{(t+1)}=\frac{\sum_{i=1}^N\gamma_{ik}(x_i-\mu_k^{(t+1)}) (x_i-\mu_k^{(t+1)})^T }{\sum_{i=1}^N\gamma_{ik}} μk(t+1)?=i=1N?γik?i=1N?γik?xi??Σk(t+1)?=i=1N?γik?i=1N?γik?(xi??μk(t+1)?)(xi??μk(t+1)?)T?

可以看到第 k k k個高斯分布的 μ k , Σ k \mu_k,\Sigma_k μk?,Σk? 是所有樣本的加權平均,其中每個樣本的權重為該樣本屬于第 k k k個高斯分布的后驗概率 γ i k \gamma_{ik} γik?

對于混合系數 π k \pi_k πk?,因為有限制條件,使用拉格朗日乘子法可求得
π k ( t + 1 ) = 1 N ∑ i = 1 N γ i k \pi_k^{(t+1)}=\frac{1}{N}\sum_{i=1}^N\gamma_{ik} πk(t+1)?=N1?i=1N?γik?

即第 k k k個高斯分布的混合系數是屬于 k k k的樣本的平均后驗概率,由此運用EM算法能大大簡化高斯混合模型的參數估計過程,在中間步只需計算 γ i k \gamma_{ik} γik?就行了。

高斯混合模型的算法流程如下圖所示:

GMM_algorithm

高斯混合聚類

高斯混合聚類假設每個類簇中的樣本都服從一個多維高斯分布,那么空間中的樣本可以看作由 K K K個多維高斯分布混合而成。

引入隱變量 z z z 標記簇類別,這樣就可以使用高斯混合模型
p M ( x ) = ∑ k = 1 K π k N ( x ; μ k , Σ k ) p_M(x)=\sum_{k=1}^K\pi_k\mathcal N(x;\mu_k,\Sigma_k) pM?(x)=k=1K?πk?N(x;μk?,Σk?)

使用EM算法迭代求解。

相比于K-means更具一般性,能形成各種不同大小和形狀的簇。K-means可視為高斯混合聚類中每個樣本僅指派給一個混合成分的特例
γ i k = { 1 , if? k = arg ? min ? k ∥ x i ? μ k ∥ 2 0 , otherwise \gamma_{ik}=\begin{cases} 1, & \text{if } k=\arg\min_k\|x_i-\mu_k\|^2\\ 0, & \text{otherwise} \end{cases} γik?={1,0,?if?k=argmink?xi??μk?2otherwise?
且各混合成分協方差相等,均為對角矩陣 σ 2 I \sigma^2 I σ2I

附錄

Jensen 不等式

f f f 是凸函數(convex function),對任意的 λ ∈ [ 0 , 1 ] \lambda\in [0,1] λ[0,1],下式恒成立
f ( λ x 1 + ( 1 ? λ ) x 2 ) ? λ f ( x 1 ) + ( 1 ? λ ) f ( x 2 ) f(\lambda x_1+(1-\lambda)x_2)\leqslant \lambda f(x_1)+(1-\lambda)f(x_2) f(λx1?+(1?λ)x2?)?λf(x1?)+(1?λ)f(x2?)
Jensen’s inequality就是上式的推廣,設 f ( x ) f(x) f(x) 為凸函數, λ i ∈ [ 0 , 1 ] , ∑ i λ i = 1 \lambda_i\in[0,1],\ \sum_i\lambda_i=1 λi?[0,1],?i?λi?=1 ,則
f ( ∑ i λ i x i ) ? ∑ i λ i f ( x i ) f(\sum_i\lambda_ix_i)\leqslant \sum_i\lambda_if(x_i) f(i?λi?xi?)?i?λi?f(xi?)
若將 λ i \lambda_i λi? 視為一個概率分布,則可表示為期望值的形式
f ( E [ x ] ) ? E [ f ( x ) ] f(\mathbb E[x])\leqslant\mathbb E[f(x)] f(E[x])?E[f(x)]

顯然,如果 f f f 是凹函數(concave function),則將不等號反向。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/45220.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/45220.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/45220.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

工作理念分享

上份工作的上級,分享他的工作理念,做個整理: 1 士氣上要奮發向上有追求,最低限度當然是要恰飯,保證生活,最好是做一些事情,把錢掙了的同時也能有更多的收獲。 2 公司為社會,用戶創造…

華為HCIP Datacom H12-821 卷36

1.單選題 在PIM- SM中,以下關于RP 的描述,錯誤的是哪一選項? A、在PIM-SM中,組播數據流量不一定必須經過RP的轉發。 B、對于一個組播組來說,可以同時有多個RP地址,提升網絡可靠性。 C、組播網絡中,可以…

【BUG】已解決:JsonMappingException

已解決:JsonMappingException 歡迎來到英杰社區https://bbs.csdn.net/topics/617804998 概述: 沒有getter方法的實體的序列化,并解決Jackson引發的JsonMappingException異常。 默認情況下,Jackson 2只會處理公有字段或具有公有get…

vue 級聯下拉框選擇的思維

在原來的js的思維下,級聯下拉框的選擇往往是,先綁定一級下拉框的菜單,然后在該下拉框下onchange, 在onchange事件中獲取當前選項,然后綁定二級下拉框的數據,以此類推…… 在vue框架下應該改變思維,首先設置…

經典再現,回顧常見排序算法之冒泡排序,附Java源碼及優化改進實現

回顧一下排序算法,老酒裝新瓶,給自己的技能點做個回放。 排序(Sorting) 是計算機程序設計中的一種重要操作,它的功能是將一個數據元素(或記錄)的任意序列,重新排列成一個有序的序列,也可以理解為高矮個站隊。 衡量排…

Renesas R7FA8D1BH (Cortex?-M85) 控制DS18B20

目錄 概述 1 軟硬件 1.1 軟硬件環境信息 1.2 開發板信息 1.3 調試器信息 2 FSP和KEIL配置 2.1 硬件接口電路 2.2 FSB配置DS18B20的IO 2.3 生成Keil工程文件 3 DS18B20驅動代碼 3.1 DS18B20介紹 3.2 DS18B20驅動實現 3.2.1 IO狀態定義 3.2.2 讀IO狀態函數 3.2.3…

OpenCV:python圖像旋轉,cv2.getRotationMatrix2D 和 cv2.warpAffine 函數

前言 僅供個人學習用,如果對各位朋友有參考價值,給個贊或者收藏吧 ^_^ 一. cv2.getRotationMatrix2D(center, angle, scale) 1.1 參數說明 parameters center:旋轉中心坐標,是一個元組參數(col, row) angle:旋轉角度…

Go-知識測試-模糊測試

Go-知識測試-模糊測試 1. 定義2. 例子3. 數據結構4. tesing.F.Add5. 模糊測試的執行6. testing.InternalFuzzTarget7. testing.runFuzzing8. testing.fRunner9. FuzzXyz10. RunFuzzWorker11. CoordinateFuzzing12. 總結 建議先看:https://blog.csdn.net/a1879272183…

一文入門【NestJs】Providers

Nest學習系列 ??一文入門【NestJS】 ??一文入門【NestJs】Controllers 控制器 🚩 前言 在NestJS的世界里,理解“Providers”是構建健壯、可維護的后端服務的關鍵。NestJS,作為Node.js的一個現代框架,采用了Angular的一些核…

Redis的安裝配置及IDEA中使用

目錄 一、安裝redis,配置redis.conf 1.安裝gcc 2.將redis的壓縮包放到指定位置解壓 [如下面放在 /opt 目錄下] 3.編譯安裝 4.配置redis.conf文件 5.開機自啟 二、解決虛擬機本地可以連接redis但是主機不能連接redis 1.虛擬機網絡適配器網絡連接設置為橋接模式…

VSCode上通過C++實現單例模式

單例模式實際上就是為了確保一個類最多只有一個實例,并且在程序的任何地方都可以訪問這個實例,也就是提供一個全局訪問點,單例對象不需要手動釋放,交給系統來釋放就可以了,單例模式的設計初衷就是為了在整個應用程序的…

vue 下拉菜單樹形結構——vue-treeselect的組件使用

參考: https://www.cnblogs.com/syjtiramisu/p/17672866.htmlhttps://www.cnblogs.com/syjtiramisu/p/17672866.html vue-treeselect的使用 - 簡書下載依賴 使用https://www.jianshu.com/p/459550e1477d 實際項目使用:

uni-app iOS上架相關App store App store connect 云打包有次數限制

相冊權限 uni-app云打包免費有次數 切換一個賬號繼續

使用SOAP與TrinityCore交互(待定)

原文:SOAP with TrinityCore | TrinityCore MMo Project Wiki 如何使用SOAP與TC交互 SOAP代表簡單對象訪問協議,是一種類似于REST的基于標準的web服務訪問協議的舊形式。只要必要的配置到位,您就可以利用SOAP向TrinityCore服務器發送命令。 …

Open3D 計算點云配準的精度和重疊度

目錄 一、概述 1.1計算配準精度 1.2計算點云重疊度 二、代碼實現 2.1關鍵函數 2.2完整代碼 三、實現效果 3.1原始點云 3.2計算結果 一、概述 在點云配準中,精度和重疊度是兩個重要的評價指標。精度通常用均方根誤差(RMSE)來衡量,而重疊度則表示兩個點云在…

centos環境啟動/重啟java服務腳本優化

centos環境啟動/重啟java服務腳本優化 引部分命令說明根據端口查詢服務進程殺死進程函數腳本接收參數 腳本注意重啟文檔位置異常 引 在離線環境部署的多個java應用組成的系統,測試階段需要較為頻繁的發布,因資源限制,沒有弄devops或CICD那套…

華為手機聯系人不見了怎么恢復?3個解決方案

華為手機聯系人列表就像是我們精心編織的社交網絡之網。然而,有時,這張網可能會因為各種原因而意外破損,聯系人信息消失得無影無蹤,讓我們陷入“人脈孤島”的困境。華為手機聯系人不見了怎么恢復?別擔心,我…

構建高質量數據集與智能數據工程平臺:播客AI Odyssey深度對話實錄

對話整數智能聯創和前IDEA研究員:構建高質量數據集與智能數據工程平臺 - AI Odyssey | 小宇宙 - 聽播客,上小宇宙 人工智能技術的日益深遠發展,對人工智能的性能提升與技術迭代提出了新的要求。在大模型訓練中,已有的研究和實踐表…

【操作系統】進程管理——用信號量機制解決問題,以生產者-消費者問題為例(個人筆記)

學習日期:2024.7.10 內容摘要:利用信號量機制解決幾個經典問題模型 目錄 引言 問題模型 生產者-消費者問題(經典) 多生產者-多消費者問題 吸煙者問題 讀者寫者問題(難點) 哲學家進餐問題&#xff0…

解決POST請求中文亂碼問題

解決POST請求中文亂碼問題 1、亂碼原因2、解決方法3、具體步驟 💖The Begin💖點點關注,收藏不迷路💖 在Web開發中,處理POST請求時經常遇到中文亂碼問題,這主要是由于服務器在接收到POST請求的數據后&#x…