【論文閱讀筆記】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-提要:

對於現有的混合模型算法,有兩個開放性問題有待解決:

  1. 如何選取混合模型中的模型數量M;
  2. 如何進行模型參數θ0\theta^0的初始化;

這篇論文針對這兩個問題提出了一種新方法,即在更新方程上對權值引入了一個先驗密度分佈(文中稱爲prior)作爲偏置,先用較多數量模型做隨機初始化,然後在更新模型參數的同時,選取模型數量;

(三)Parameter Estimation-參數估計:

3.1 概率密度:

對於由 MM 個模型組成的混合模型,維度爲 dd 的向量 x\vec x ,其概率密度爲:

P(x;θ)=m=1MπmP(x;θm)P(\vec x;\vec \theta)=\sum_{m=1}^M\pi_mP(\vec x;\vec \theta_m),且 m=1Mπm=1\sum_{m=1}^M\pi_m=1

其中:

  1. θ={π1,,πM,θ1,,θM}\vec \theta=\lbrace \pi_1,…,\pi_M,\vec \theta_1,…,\vec \theta_M \rbrace 是混合模型的參數,也寫作 θ(M)\vec \theta(M)
  2. πm\pi_m 是混合模型中第m的模型的權重;
  3. θm\vec \theta_m 在高斯模型中爲 {μm,σm}\lbrace \mu_m,\sigma_m \rbrace;

3.2 最大似然估計:

對於一組樣本 X={x(1),,x(T)}X=\lbrace \vec x^{(1)},…,\vec x^{(T)} \rbrace,最大似然估計得到的參數估計值爲:

θ=argmax(logP(X;θ))\vec \theta=argmax(log P(X;\vec \theta))

由於使用最大似然估計直接求解過於複雜,我們通常使用EM算法去迭代,使得迭代得到的 θt\vec \theta_t 趨近於這個解;

3.3 最大期望估計(EM算法):

算法詳解參考我的這篇博客【機器學習基礎】EM算法詳解及其收斂性證明,這裏直接使用推理出的結論;

3.3.1 引入隱藏變量:

對於樣本中的每一個 x\vec x(observed,已知觀察量),我們分別引入一個隱藏參數(unobserved,未知參數)y={y1,,yM}T\vec y=\lbrace \vec y_1,…,\vec y_M \rbrace^T,用來表示樣本 x\vec x 所屬混合模型中的哪個模型的分佈;

這樣由條件概率公式,概率密度函數就可以改寫爲:

P(x,y;θ)P(\vec x,\vec y;\vec \theta)

=P(y;π1,,πM)P(xy,θ1,,θM)=P(\vec y;\pi_1,…,\pi_M)P(\vec x|\vec y,\vec \theta_1,…,\vec \theta_M)

=m=1MπmymP(x;θm)ym=\prod_{m=1}^M\pi_m^{y_m}P(\vec x;\vec \theta_m)^{y_m}

其中,y\vec y 中的一個 ym\vec y_m11,其餘爲00,由權重參數π1,,πM\pi_1,…,\pi_M決定;

3.3.2 迭代參數估計值:

首先我們給定參數 θ\vec \theta 初始化估計值爲 θ^(0)\hat{\vec \theta}_{(0)},如果我們將所有樣本的隱藏變量標記爲 Y={y(1),,y(t)}\vec Y=\lbrace \vec y^{(1)},…,\vec y^{(t)} \rbrace,那麼第 kk 次迭代得到的參數估計值 θ^(k)\hat{\vec \theta}_{(k)} 就由上一次的估計值 θ^(k1)\hat{\vec \theta}_{(k-1)} 確定:

3.3.2.1 E-step:

構造 QQ 函數:

Q(θ,θ^(k1))Q(\vec \theta,\hat{\vec \theta}_{(k-1)})

=EY(logP(X,Y;θ)X,θ^(k1))=E_Y(log P(X,Y;\vec \theta)|X,\hat{\vec \theta}_{(k-1)})

=YP(YX,θ^(k1))logP(X,Yθ)=\sum_YP(Y|X,\hat{\vec \theta}_{(k-1)})logP(X,Y|\vec \theta)

3.3.2.2 M-step:

QQ 進行最大似然估計:

θ^(k)=argmax(Q(θ,θ^(k1)))\hat{\vec \theta}_{(k)}=argmax(Q(\vec\theta,\hat{\vec \theta}_{(k-1)}))

3.3.2.3 存在的問題:

EM算法如果沒有適當的初始化,迭代過程中可能落入局部最大值,而難以收斂到期望的參數估計值;

(四)Model Selection-模型選擇:

爲了使用EM算法,我們需要定義一個合適的模型數量 MM;混合模型中,如果 MM 過大,容易導致過擬合(over fitting),MM 太小容易導致欠擬合(under fitting);

4.1 最大化函數 JJ

比較實用的模型數量選擇原則是構造如下最大化函數:

J(M,θ(M))=logP(X;θ(M))P(M)J(M,\vec \theta(M))=logP(X;\vec \theta(M))-P(M)

其中:

  1. logP(X;θ(M))logP(X;\vec \theta(M)) 是樣本的對數最大似然函數,這一部分可以用EM算法最大化;
  2. P(M)P(M) 是懲罰函數,用以將複雜的方程簡化(即如果將MM歸在參數θ\theta中,方程的求解會變複雜);

(五)Solution Using MAPMAP Estimation:

5.2 估計參數MM的基本過程:

選擇參數 MM 的標準步驟爲,對參數 MM 的不同的值MsM-s分別使用 MLML(最大似然估計),然後選擇能夠使得函數 J(M,θ(M))J(M,\vec \theta(M)) 最大的 MM 值;

5.1 引入先驗密度分佈(prior):

這裏我們引入先驗分佈,將 JJ 函數改寫爲:

J(M,θ(M))=logP(X;θ(M))+logP(θ(M))J(M,\vec \theta(M))=logP(X;\vec \theta(M))+logP(\vec \theta(M))

如果我們使用Dirichlet先驗分佈,那麼 P(θ(M))P(\vec \theta(M)) 正比於:

expm=1Mcmlogπm=m=1Mπmcmexp\sum_{m=1}^Mc_mlog\pi_m=\prod_{m=1}^M\pi_m^{c_m}

其中,係數 cm=N/2c_m=-N/2NN代表混合模型中每個模型的平均參數數目;

那麼整個過程就變成了:

  1. 使用一個較多隨機初始化模型( MM 較大)組成的混合模型;
  2. 使用迭代方法(如EM算法)求得 MAPMAP 的解(即參數的估計值);

在迭代過程中,迭代估計值 θ^(k)\hat{\vec \theta}_{(k)} 不斷趨近於參數估計值θ^\hat{\vec \theta}(即最大似然方程的解),同時 MM 也會不斷減小至模型穩定;

(六)Recursive(Online)Solution:

6.1 最大似然估計:

對於最大似然估計,我們通過:

δδπ^mlogP(X;θ^)=0\frac{\delta}{\delta \hat{\pi}_m}logP(X;\hat{\vec \theta})=0

來獲取參數的估計值;

如果我們引入拉格朗日乘子 λ\lambda,那麼就有:

δδπ^m(logP(X;θ^)+λ(m=1Mπ^m1))=0\frac{\delta}{\delta \hat{\pi}_m}(logP(X;\hat{\vec \theta})+\lambda(\sum_{m=1}^M\hat{\pi}_m-1))=0

t個樣本應該滿足:

π^m(t)=1ti=1tom(t)(x(i))\hat{\pi}_m^{(t)}=\frac{1}{t}\sum_{i=1}^to_m^{(t)}(\vec x^{(i)})

其中 o(ownerships)o(ownerships)定義爲:

om(t)(x)=π^m(t)Pm(x;θ^)/P(x;θ^(t))o_m^{(t)}(\vec x)=\hat{\pi}_m^{(t)}P_m(\vec x;\hat{\vec \theta})/P(\vec x;\hat{\vec\theta}^{(t)})

6.2 MAPMAP 方法:

類似的,對於 MAPMAP 方法,有:

δδπ^m(logP(X;θ^)+logP(θ)+λ(m=1Mπ^m1))=0\frac{\delta}{\delta \hat{\pi}_m}(logP(X;\hat{\vec \theta})+logP(\vec \theta)+\lambda(\sum_{m=1}^M\hat{\pi}_m-1))=0

對於t個樣本:

π^m(t)=1K(i=1tom(t)(x(i))c)\hat{\pi}_m^{(t)}=\frac{1}{K}(\sum_{i=1}^to_m^{(t)}(\vec x^{(i)})-c)

其中:

K=m=1M(i=1tom(t)(x(i))c)=tMcK=\sum_{m=1}^M(\sum_{i=1}^to_m^{(t)}(\vec x^{(i)})-c)=t-Mc,( 注意m=1Mom(t)=1\sum_{m=1}^Mo_m^{(t)}=1

cm=cc_m = -c,即 c=N/2c=N/2

這樣的話,就有:

π^m(t)=^mc/t1Mc/t\hat{\pi}_m^{(t)}=\frac{\hat{\prod}_m-c/t}{1-Mc/t}

其中:

^m=1ti=1tom(t)(x(i))\hat{\prod}_m=\frac{1}{t}\sum_{i=1}^to_m^{(t)}(\vec x^{(i)})

6.3 迭代方程:

這樣的話,我們就可以通過之前提到的估計方法,利用 om(t+1)(x)o_m^{(t+1)}(\vec x) 獲得 om(t)(x)o_m^{(t)}(\vec x) 的迭代值;

同時,對於權重參數 π\pi,有:

π^m(t+1)=π^m(t)+(1+t)1(om(t)(x(t+1))1McTπ^m(t))(1+t)1cT1McT\hat{\pi}_m^{(t+1)}=\hat{\pi}_m^{(t)}+(1+t)^{-1}(\frac{o_m^{(t)}(\vec x^{(t+1)})}{1-Mc_T}-\hat{\pi}_m^{(t)})-(1+t)^{-1}\frac{c_T}{1-Mc_T}

其中,cT=c/Tc_T=c/T;並且我們需要保證 TT 足夠大,從而使得 McT<1Mc_T<1;

6.4 初始化和迭代:

π^m(0)=1/M\hat{\pi}_m^{(0)}=1/M ,並且當 π^m(t+1)<0\hat{\pi}_m^{(t+1)}<0時,捨棄第m個模型;

6.5 高斯混合模型中的表達:

最常用的混合模型之一,就是混合高斯模型(Gaussian Mixture);

對於混合高斯模型,概率密度表示爲:

Pm(x;θm)=N(x;μm,Cm)P_m(\vec x;\vec \theta_m)=N(\vec x;\vec \mu_m,C_m)μ\mu爲均值,CC爲協方差矩陣;

那麼相應的迭代方程爲:

μ^m(t+1)=μ^m(t)+(1+t)1om(t)(x(t+1))π^m(t)(x(t+1)μ^m(t))\hat{\vec \mu}_m^{(t+1)}=\hat{\vec \mu}_m^{(t)}+(1+t)^{-1}\frac{o_m^{(t)}(\vec x^{(t+1)})}{\hat{\pi}_m^{(t)}}(\vec x^{(t+1)}-\hat{\vec \mu}_m^{(t)})

C^m(t+1)=C^m(t)+(1+t)1om(t)(x(t+1))π^m(t)((x(t+1)μ^m(t))(x(t+1)μ^m(t))TC^m(t))\hat{C}_m^{(t+1)}=\hat{C}_m^{(t)}+(1+t)^{-1}\frac{o_m^{(t)}(\vec x^{(t+1)})}{\hat{\pi}_m^{(t)}}((\vec x^{(t+1)}-\hat{\vec \mu}_m^{(t)})(\vec x^{(t+1)}-\hat{\vec \mu}_m^{(t)})^{T}-\hat{C}_m^{(t)})

(七)A Simple Practical Algorithm:

7.1 config:

  1. 我們可以將 α=(1+t)1\alpha=(1+t)^{-1}(稱爲學習率)簡化爲 α=1/T\alpha=1/T;也可以採用固定的 α\alpha 值,從而防止 α\alpha 過小並加快背景更新;
  2. cT=αN/2c_T=\alpha N/2
  3. 如果採用帶有協方差矩陣的混合高斯模型,那麼對於 dd 維輸入,有 N=d+d(d+1)/2N=d+d(d+1)/2

7.2 輸入:

新的樣本數據爲 x(t+1)\vec x^{(t+1)} ,進入第 t+1t+1 次迭代;

7.3 當前參數:

tt 次迭代得到的參數估計值爲 θ^(t)\hat{\vec \theta}^{(t)}

7.4 計算 ownership'ownership'

om(t)(x(t+1))=π^m(t)Pm(x(t+1);θ^(t))/P(x(t+1);θ^(t))o_m^{(t)}(\vec x^{(t+1)})=\hat{\pi}_m^{(t)}P_m(\vec x^{(t+1)};\hat{\vec \theta}^{(t)})/P(\vec x^{(t+1)};\hat{\vec\theta}^{(t)})

7.5 更新權重π\pi

π^m(t+1)=π^m(t)+α(om(t)(x(t+1))1McTπ^m(t))αcT1McT\hat{\pi}_m^{(t+1)}=\hat{\pi}_m^{(t)}+\alpha(\frac{o_m^{(t)}(\vec x^{(t+1)})}{1-Mc_T}-\hat{\pi}_m^{(t)})-\alpha\frac{c_T}{1-Mc_T}

7.6 取捨模型:

如果有 π^m(t+1)<0\hat{\pi}_m^{(t+1)}<0,則刪掉第 mm 個模型,並令 M=M1M=M-1

7.7 更新參數:

7.7.1 更新均值 μ\mu

μ^m(t+1)=μ^m(t)+ωδ\hat{\vec \mu}_m^{(t+1)}=\hat{\vec \mu}_m^{(t)}+\omega\vec\delta

其中:

ω=αom(t)(x(t+1))π^m(t)\omega=\alpha\frac{o_m^{(t)}(\vec x^{(t+1)})}{\hat{\pi}_m^{(t)}}

δ=x(t+1)μ^m(t)\vec \delta=\vec x^{(t+1)}-\hat{\vec \mu}_m^{(t)}

7.7.2 更新協方差矩陣:

C^m(t+1)=C^m(t)+ω(δδTC^m(t))\hat{C}_m^{(t+1)}=\hat{C}_m^{(t)}+\omega(\vec \delta\vec \delta^T-\hat{C}_m^{(t)})

tipsω=min(20α,w)tips:可以讓\omega=min(20\alpha,w)

7.8 獲得新參數:

這樣就得到了新的參數估計值 θ^(t+1)\hat{\vec \theta}^{(t+1)}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章