《Recursive Unsupervised Learning of Finite Mixture Models》(有限混合模型的遞歸無監督學習)
(一)論文地址:
《Recursive Unsupervised Learning of Finite Mixture Models》
這篇文章並不是針對cv領域的高斯混合模型算法,其提出的算法是一個通用框架,其中opencv使用的cv2.createBackgroundSubtractorMOG2這個背景分割類,就是基於本文的理論。
opencv的應用寫在這篇論文中:
《Efficient adaptive density estimation per image pixel for the task of background subtraction》
(二)abstract-提要:
對於現有的混合模型算法,有兩個開放性問題有待解決:
- 如何選取混合模型中的模型數量M;
- 如何進行模型參數θ0的初始化;
這篇論文針對這兩個問題提出了一種新方法,即在更新方程上對權值引入了一個先驗密度分佈(文中稱爲prior)作爲偏置,先用較多數量模型做隨機初始化,然後在更新模型參數的同時,選取模型數量;
(三)Parameter Estimation-參數估計:
3.1 概率密度:
對於由 M 個模型組成的混合模型,維度爲 d 的向量 x ,其概率密度爲:
P(x;θ)=∑m=1MπmP(x;θm),且 ∑m=1Mπm=1
其中:
- θ={π1,…,πM,θ1,…,θM} 是混合模型的參數,也寫作 θ(M);
- πm 是混合模型中第m的模型的權重;
- θm 在高斯模型中爲 {μm,σm};
3.2 最大似然估計:
對於一組樣本 X={x(1),…,x(T)},最大似然估計得到的參數估計值爲:
θ=argmax(logP(X;θ))
由於使用最大似然估計直接求解過於複雜,我們通常使用EM算法去迭代,使得迭代得到的 θt 趨近於這個解;
3.3 最大期望估計(EM算法):
算法詳解參考我的這篇博客【機器學習基礎】EM算法詳解及其收斂性證明,這裏直接使用推理出的結論;
3.3.1 引入隱藏變量:
對於樣本中的每一個 x(observed,已知觀察量),我們分別引入一個隱藏參數(unobserved,未知參數)y={y1,…,yM}T,用來表示樣本 x 所屬混合模型中的哪個模型的分佈;
這樣由條件概率公式,概率密度函數就可以改寫爲:
P(x,y;θ)
=P(y;π1,…,πM)P(x∣y,θ1,…,θM)
=∏m=1MπmymP(x;θm)ym
其中,y 中的一個 ym 爲1,其餘爲0,由權重參數π1,…,πM決定;
3.3.2 迭代參數估計值:
首先我們給定參數 θ 初始化估計值爲 θ^(0),如果我們將所有樣本的隱藏變量標記爲 Y={y(1),…,y(t)},那麼第 k 次迭代得到的參數估計值 θ^(k) 就由上一次的估計值 θ^(k−1) 確定:
3.3.2.1 E-step:
構造 Q 函數:
Q(θ,θ^(k−1))
=EY(logP(X,Y;θ)∣X,θ^(k−1))
=∑YP(Y∣X,θ^(k−1))logP(X,Y∣θ)
3.3.2.2 M-step:
對 Q 進行最大似然估計:
θ^(k)=argmax(Q(θ,θ^(k−1)))
3.3.2.3 存在的問題:
EM算法如果沒有適當的初始化,迭代過程中可能落入局部最大值,而難以收斂到期望的參數估計值;
(四)Model Selection-模型選擇:
爲了使用EM算法,我們需要定義一個合適的模型數量 M;混合模型中,如果 M 過大,容易導致過擬合(over fitting),M 太小容易導致欠擬合(under fitting);
4.1 最大化函數 J:
比較實用的模型數量選擇原則是構造如下最大化函數:
J(M,θ(M))=logP(X;θ(M))−P(M)
其中:
- logP(X;θ(M)) 是樣本的對數最大似然函數,這一部分可以用EM算法最大化;
- P(M) 是懲罰函數,用以將複雜的方程簡化(即如果將M歸在參數θ中,方程的求解會變複雜);
(五)Solution Using MAP Estimation:
5.2 估計參數M的基本過程:
選擇參數 M 的標準步驟爲,對參數 M 的不同的值M−s分別使用 ML(最大似然估計),然後選擇能夠使得函數 J(M,θ(M)) 最大的 M 值;
5.1 引入先驗密度分佈(prior):
這裏我們引入先驗分佈,將 J 函數改寫爲:
J(M,θ(M))=logP(X;θ(M))+logP(θ(M))
如果我們使用Dirichlet先驗分佈,那麼 P(θ(M)) 正比於:
exp∑m=1Mcmlogπm=∏m=1Mπmcm
其中,係數 cm=−N/2 ,N代表混合模型中每個模型的平均參數數目;
那麼整個過程就變成了:
- 使用一個較多隨機初始化模型( M 較大)組成的混合模型;
- 使用迭代方法(如EM算法)求得 MAP 的解(即參數的估計值);
在迭代過程中,迭代估計值 θ^(k) 不斷趨近於參數估計值θ^(即最大似然方程的解),同時 M 也會不斷減小至模型穩定;
(六)Recursive(Online)Solution:
6.1 最大似然估計:
對於最大似然估計,我們通過:
δπ^mδlogP(X;θ^)=0
來獲取參數的估計值;
如果我們引入拉格朗日乘子 λ,那麼就有:
δπ^mδ(logP(X;θ^)+λ(∑m=1Mπ^m−1))=0
t個樣本應該滿足:
π^m(t)=t1∑i=1tom(t)(x(i))
其中 o(ownerships)定義爲:
om(t)(x)=π^m(t)Pm(x;θ^)/P(x;θ^(t))
6.2 MAP 方法:
類似的,對於 MAP 方法,有:
δπ^mδ(logP(X;θ^)+logP(θ)+λ(∑m=1Mπ^m−1))=0
對於t個樣本:
π^m(t)=K1(∑i=1tom(t)(x(i))−c)
其中:
K=∑m=1M(∑i=1tom(t)(x(i))−c)=t−Mc,( 注意∑m=1Mom(t)=1)
cm=−c,即 c=N/2
這樣的話,就有:
π^m(t)=1−Mc/t∏^m−c/t
其中:
∏^m=t1∑i=1tom(t)(x(i))
6.3 迭代方程:
這樣的話,我們就可以通過之前提到的估計方法,利用 om(t+1)(x) 獲得 om(t)(x) 的迭代值;
同時,對於權重參數 π,有:
π^m(t+1)=π^m(t)+(1+t)−1(1−McTom(t)(x(t+1))−π^m(t))−(1+t)−11−McTcT
其中,cT=c/T;並且我們需要保證 T 足夠大,從而使得 McT<1;
6.4 初始化和迭代:
π^m(0)=1/M ,並且當 π^m(t+1)<0時,捨棄第m個模型;
6.5 高斯混合模型中的表達:
最常用的混合模型之一,就是混合高斯模型(Gaussian Mixture);
對於混合高斯模型,概率密度表示爲:
Pm(x;θm)=N(x;μm,Cm),μ爲均值,C爲協方差矩陣;
那麼相應的迭代方程爲:
μ^m(t+1)=μ^m(t)+(1+t)−1π^m(t)om(t)(x(t+1))(x(t+1)−μ^m(t))
C^m(t+1)=C^m(t)+(1+t)−1π^m(t)om(t)(x(t+1))((x(t+1)−μ^m(t))(x(t+1)−μ^m(t))T−C^m(t))
(七)A Simple Practical Algorithm:
7.1 config:
- 我們可以將 α=(1+t)−1(稱爲學習率)簡化爲 α=1/T;也可以採用固定的 α 值,從而防止 α 過小並加快背景更新;
- cT=αN/2;
- 如果採用帶有協方差矩陣的混合高斯模型,那麼對於 d 維輸入,有 N=d+d(d+1)/2
7.2 輸入:
新的樣本數據爲 x(t+1) ,進入第 t+1 次迭代;
7.3 當前參數:
第 t 次迭代得到的參數估計值爲 θ^(t);
7.4 計算 ′ownership′:
om(t)(x(t+1))=π^m(t)Pm(x(t+1);θ^(t))/P(x(t+1);θ^(t))
7.5 更新權重π:
π^m(t+1)=π^m(t)+α(1−McTom(t)(x(t+1))−π^m(t))−α1−McTcT
7.6 取捨模型:
如果有 π^m(t+1)<0,則刪掉第 m 個模型,並令 M=M−1;
7.7 更新參數:
7.7.1 更新均值 μ:
μ^m(t+1)=μ^m(t)+ωδ
其中:
ω=απ^m(t)om(t)(x(t+1))
δ=x(t+1)−μ^m(t)
7.7.2 更新協方差矩陣:
C^m(t+1)=C^m(t)+ω(δδT−C^m(t))
tips:可以讓ω=min(20α,w)
7.8 獲得新參數:
這樣就得到了新的參數估計值 θ^(t+1);