機器學習筆記(2) —— 生成模型(概率模型)

前言

筆者一直在ipad上做手寫筆記,最近突然想把筆記搬到博客上來,也就有了下面這些。因爲本是給自己看的筆記,所以內容很簡陋,只是提了一些要點。隨緣更新。

正文

生成模型和判別模型的區別

  • 生成模型:學習得到聯合概率分佈P(x,y),即特徵x和標記y共同出現的概率,然後求條件概率分佈。能夠學習到數據生成的機制。
  • 判別模型:學習得到條件概率分佈P(y|x),即在特徵x出現的情況下標記y出現的概率。

引用知乎上我看到的一個舉例,要確定一個羊是山羊還是綿羊

  • 用判別模型的方法是從歷史數據中學習到模型,然後通過提取這隻羊的特徵來預測出這隻羊是山羊的概率,是綿羊的概率。
  • 利用生成模型是根據山羊的特徵首先學習出一個山羊的模型,然後根據綿羊的特徵學習出一個綿羊的模型,然後從這隻羊中提取特徵,放到山羊模型中看概率是多少,在放到綿羊模型中看概率是多少,哪個大就是哪個。

爲什麼不使用迴歸模型

  1. 分類問題也是確定一條線,將我們要分類的數據集分成若干種。分類問題應該是這條線將兩邊的模型分得越開越好,但是如果我們採用迴歸模型去確定這條線,迴歸模型的loss function是計算點到線的距離的平方和,那距離越遠loss function的值越大,那和我們的意願就背道而馳了。所以我們如果把分類問題應迴歸模型硬解,會得不到一個好的模型。例如下圖中綠線是我們想要得到的,但是紫線是迴歸模型所認爲的最佳的模型。

  2. 在多分類問題中,類別1設爲1,類別2設爲2,類別3設爲3,如果採用迴歸模型,會認爲1、2或2、3比較接近,但實際上並沒有這種關係的存在,這會導致我們的model出現問題。

生成模型 —— 後驗概率

高斯分佈

fμ,Σ=1(2π)D21Σ12exp[12(xμ)TΣ1(xμ)]f_{\mu ,\Sigma }=\frac {1}{( 2\pi ) ^{\frac {D}{2}}} \dfrac {1}{\left| \Sigma \right| ^{\frac {1}{2}}}\exp[-\dfrac {1}{2}\left( x-\mu \right) ^{T}\Sigma ^{-1}\left( x- \mu \right)]

  • μ\mu 爲均值向量
  • Σ\Sigma 爲方差矩陣
  • DDxx 的維數
    這是一個概率密度函數,簡單的說可以把它看成一個function,輸入 xx 輸出 xx 的概率(當然這不是概率,但和概率成正比)。

分類模型(Step1:build model)

C1=C_1= { 種類一 },C2=C_2= { 種類二 }
P(C1x)=P(xC1)P(C1)P(xC1)P(C1)+P(xC2)P(C2)P(C_1|x)=\frac{P(x|C_1)P(C_1)}{P(x|C_1)P(C_1)+P(x|C_2)P(C_2)}

  • P(xC1)=fμ1,Σ1P(x|C_1)=f_{\mu^1 ,\Sigma^1 }
  • P(xC2)=fμ2,Σ2P(x|C_2)=f_{\mu^2 ,\Sigma^2 }
    需要求解出兩組 μ,Σ\mu,\Sigma

最大似然估計

假設有 nn 個點,L(μ,Σ)=fμ,Σ(x1)fμ,Σ(x2)...fμ,Σ(xn)L(\mu,\Sigma)=f_{\mu,\Sigma}(x_1)f_{\mu,\Sigma}(x_2)...f_{\mu,\Sigma}(x_n) 是生成這些點的概率(說成概率更容易理解),也成爲樣本的似然函數。
爲使得 L(μ,Σ)L(\mu,\Sigma) 最大的 L(μ,Σ)L(\mu,\Sigma) 記爲(μ,Σ)(\mu^*,\Sigma^*),即所有 L(μ,Σ)L(\mu,\Sigma) 的最大似然估計。
我們的目標是使生成這些的點概率最大,即我們要求 (μ,Σ)(\mu^*,\Sigma^*)

總結一下:極大似然估計就是先假設生成數據(數據分佈)的模型已知(比如高斯分佈),但是模型的具體參數不知(不知道高斯分佈中的均值和標準差),通過已有的數據,進行參數的推斷求解,使得該模型(高斯分佈)生成已有觀測數據的可能性最大。

目標函數(Step2:Goodness of function)

argmaxμ,ΣL(μ,Σ)\arg \max _{\mu ,\Sigma } L(\mu ,\Sigma )

求解(Step3:the best function)

利用微分等於0,易得:
μ=1ni=1nxi\mu^* = \frac{1}{n}\sum ^{n}_{i=1}x_i
Σ=1ni=1n(xiμ)(xiμ)T\Sigma^*=\frac{1}{n}\sum^{n}_{i=1}(x_i-\mu^*)(x_i-\mu^*)^T

模型優化(協方差)

我們通常不會給每個高斯分佈都去計算一套不同的最大似然估計,Σ\Sigma 和輸入的feature成平方關係,當平方很大時,Σ\Sigma 就會變的非常巨大,一是計算時間太長,二是容易過擬合。因此我們給每個高斯分佈相同的 Σ\Sigma

公式轉變爲(以二分類爲例):
argmaxμ1,μ2,ΣL(μ1,μ2,Σ)\arg \max _{\mu_1, \mu_2 ,\Sigma } L(\mu_1,\mu_2 ,\Sigma )

  • L(μ1,μ2,Σ)=fμ1,Σ(x1)...fμ,Σ(xn)fμ2,Σ(xn+1)...fμ2,Σ(xn+m)L(\mu^1,\mu^2,\Sigma)=f_{\mu^1,\Sigma}(x_1)...f_{\mu,\Sigma}(x_n)*f_{\mu^2,\Sigma}(x_{n+1})...f_{\mu^2,\Sigma}(x_{n+m})

求解:

  • μ1,μ2\mu_1,\mu_2 和原先一致
    μ1=1ni=1nxi\mu_1 = \frac{1}{n}\sum ^{n}_{i=1}x_i
    μ2=1ni=n+1n+mxi\mu_2 = \frac{1}{n}\sum ^{n+m}_{i=n+1}x_i
  • Σ\Sigma 爲二者加權平均
    Σ=nm+nΣ1+mn+mΣ2\Sigma=\frac{n}{m+n}\Sigma_1+\frac{m}{n+m}\Sigma_2

優化過後的分類曲線變成了線性的

一個合適的概率分佈模型

你可能會問爲什麼用高斯分佈,用李宏毅老師的話來說就是,如果我用別的分佈模型你也會問同樣的問題。
別的分佈模型當然可以使用,例如二分類問題我們可以使用伯努利分佈。高斯分佈更加通用、普遍,所以我們在此用是用高斯分佈舉例,並不是一定要用高斯分佈。

後驗概率公式推導

P(C1x)=P(xC1)P(C1)P(xC1)P(C1)+P(xC2)P(C2)P(C_1|x)=\frac{P(x|C_1)P(C_1)}{P(x|C_1)P(C_1)+P(x|C_2)P(C_2)}
經過處理你會發現這是一個關於 zz 的sigmiod函數(這下知道Sigmoid函數是哪來的吧)
=11+p(xC2)P(C2)p(x/C1)p(C1)=11+exp(z)=σ(z)=\dfrac {1}{1+\dfrac {p\left( x|C_2 \right) P\left( C_2\right) }{p\left( x/C_{1}\right) p\left( C_{1}\right) }}=\frac{1}{1+exp(z)}=\sigma(z)

z=lnP(xC1)P(C1)P(xC2)P(C2)z=ln\frac{P(x|C_1)P(C_1)}{P(x|C_2)P(C_2)}

然後一同操作猛如虎,公式我就不打了,太長了,估計你們也沒有興趣看。反正最後得到
z=(μ1μ2)TΣ1x12(μ1)Tμ1+12(μ2)TΣ1μ2+lnnmz=(\mu_1-\mu_2)^T\Sigma^{-1}x-\frac{1}{2}(\mu_1)^T\mu_1+\frac{1}{2}(\mu_2)^T\Sigma^{-1}\mu_2+ln\frac{n}{m}
我們令

  • w=(μ1μ2)TΣ1w=(\mu_1-\mu_2)^T\Sigma^{-1}
  • b=12(μ1)Tμ1+12(μ2)TΣ1μ2+lnnmb=\frac{1}{2}(\mu_1)^T\mu_1+\frac{1}{2}(\mu_2)^T\Sigma^{-1}\mu_2+ln\frac{n}{m}

wwbb 都是常數,也就是說,最後我們得到的後驗模型是個線性模型。

後記

其實判別模型和生成模型應該一起講的,因爲這兩個模型的推到思路是連貫的。但是實在太長了,就先把生成模型寫出來了,判別模型改天再寫。

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