分類|深度學習(李宏毅)(二)

李宏毅老師深度學習系列2020

一、生成模型

假設有兩個類別C_{1}、C_{2}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(C_{1})、P(C_{2})為先驗分布,P(x|C_{1})、P(x|C_{2})都是高斯分布,服從以下分布:

f_{\mu ,\Sigma }(x)=\frac{1}{(2\pi )^{D/2}|\Sigma |^{1/2}}exp^{-\frac{1}{2}(x-u)^{T}\Sigma ^{-1}(x-u)}

二、計算某一類樣本的高斯分布

根據已有的標籤數據可以求得每一類均值和方差的估計,由於該類樣本服從高斯分布,則其似然如下:

L(\mu ,\Sigma )=f_{\mu ,\Sigma }(x_{1})f_{\mu ,\Sigma }(x_{2})f_{\mu ,\Sigma }(x_{1})\cdots f_{\mu ,\Sigma }(x_{N})
\mu ^{*},\Sigma^{*}=\underset{\mu ^{*},\Sigma^{*}}{argmax}L(\mu ,\Sigma )

求解可得:

\mu ^{*}=\frac{1}{N}\sum_{1}^{N}x^{n}
\Sigma^{*}=\frac{1}{N}\sum_{1}^{N}(x^{n}-\mu ^{*})(x^{n}-\mu ^{*})^{T}

三、邏輯回歸(判別模型)推導

這裡的推導假設P(C_{1})、P(C_{2})具有同樣的方差,且\Sigma是對角線矩陣(即假設特徵之間相互獨立),證明如下:

後驗概率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})}=\frac{1}{1+\frac{P(x|C_{2})P(C_{2})}{P(x|C_{1})P(C_{1})}}
令z=ln\frac{P(x|C_{2})P(C_{2})}{P(x|C_{1})P(C_{1})}
\Rightarrow e^{-z}=\frac{P(x|C_{1})P(C_{1})}{P(x|C_{2})P(C_{2})}
\Rightarrow P(C_{1}|x)=\frac{1}{1+e^{-z}}=\sigma (z )

\sigma (z)即是sigmoid函數,其影像為:

另外z=ln\frac{P(x|C_{1})}{P(x|C_{2})}+ln\frac{P(C_{1})}{P(C_{2})},其中

ln\frac{P(x|C_{1})}{P(x|C_{2})}=ln\frac{\frac{1}{(2\pi )^{D/2}|\Sigma ^{1}|^{1/2}}exp^{-\frac{1}{2}(x-\mu ^{1})^{T}(\Sigma^{1}) ^{-1}(x-\mu ^{1})}}{\frac{1}{(2\pi )^{D/2}|\Sigma ^{2}|^{1/2}}exp^{-\frac{1}{2}(x-\mu ^{2})^{T}(\Sigma^{2}) ^{-1}(x-\mu ^{2})}}
=ln\frac{|\Sigma ^{1}|^{1/2}}{|\Sigma ^{2}|^{1/2}}exp^{-\frac{1}{2}(x-\mu ^{1})^{T}(\Sigma^{1}) ^{-1}(x-\mu ^{1})+\frac{1}{2}(x-\mu ^{2})^{T}(\Sigma^{2}) ^{-1}(x-\mu ^{2})}
=ln\frac{|\Sigma ^{1}|^{1/2}}{|\Sigma ^{2}|^{1/2}}-\frac{1}{2}[(x-\mu ^{1})^{T}(\Sigma^{1}) ^{-1}(x-\mu ^{1})-(x-\mu ^{2})^{T}(\Sigma^{2}) ^{-1}(x-\mu ^{2})]
其中
(x-\mu ^{1})^{T}(\Sigma^{1})^{-1}(x-\mu ^{1})\\=x^{T}(\Sigma ^{1})^{-1}x{\color{Red} {-x^{T}(\Sigma ^{1})^{-1}\mu ^{1}-(\mu ^{1})^{T}(\Sigma ^{1})^{-1}x}}+(\mu ^{1})^{T}(\Sigma ^{1})^{-1}\mu ^{1}\\=x^{T}(\Sigma ^{1})^{-1}x{\color{Red} {-2(\mu^{1})^{T}(\Sigma ^{1})^{-1}x}}+(\mu ^{1})^{T}(\Sigma ^{1})^{-1}\mu ^{1}
同理
(x-\mu ^{2})^{T}(\Sigma^{2})^{-1}(x-\mu ^{2})=x^{T}(\Sigma ^{2})^{-1}x{\color{Red} {-2(\mu^{2})^{T}(\Sigma ^{2})^{-1}x}}+(\mu ^{2})^{T}(\Sigma ^{2})^{-1}\mu ^{2}

因為前面假設\Sigma^{1}=\Sigma^{2}=\Sigma,所以ln\frac{|\Sigma ^{1}|^{1/2}}{|\Sigma ^{2}|^{1/2}}=0,x^{T}(\Sigma ^{1})^{-1}x=x^{T}(\Sigma ^{2})^{-1}x

z=(\mu^{1})^{T}(\Sigma ^{1})^{-1}x-\frac{1}{2}(\mu ^{1})^{T}(\Sigma ^{1})^{-1}\mu ^{1}-(\mu^{2})^{T}(\Sigma ^{2})^{-1}x+\frac{1}{2}(\mu ^{2})^{T}(\Sigma ^{2})^{-1}\mu ^{2}+ln\frac{P(C^{1})}{P(C^{2})}
=\underset{w}{\underbrace{(\mu ^{1}-\mu ^{2})^{T}\Sigma ^{-1}}}x\underset{b}{\underbrace{-\frac{1}{2}(\mu ^{1})^{T}\Sigma ^{-1}\mu ^{1}+\frac{1}{2}(\mu ^{2})^{T}\Sigma ^{-1}\mu ^{2}+ln\frac{P(C_{1})}{P(C_{2})}}}
P(C_{1}|x)=\sigma (wx+b)

在使用生成模型時需要估計\mu_{1}、\mu_{2}、\Sigma,現在可以直接估計wb

四、邏輯回歸的損失函數

1. 交叉熵損失函數
f_{w,b}(x)=\sigma (wx+b),則邏輯回歸的損失函數(即似然)為:

L (w,b)=f_{w,b}(x^{1})f_{w,b}(x^{2})(1-f_{w,b}(x^{3}))\cdots f_{w,b}(x^{N})
w^{*},b^{*}=\underset{w,b}{argmax}L (w,b)=\underset{w,b}{argmin}(-lnL (w,b))

上式中

lnL (w,b)\\=-[\hat{y}^{1}lnf(x^{1})+(1-\hat{y}^{1})ln(1-f(x^{1}))]\\-[\hat{y}^{2}lnf(x^{2})+(1-\hat{y}^{2})ln(1-f(x^{2}))]\\-[\hat{y}^{3}lnf(x^{3})+(1-\hat{y}^{3})ln(1-f(x^{3}))]\\\cdots \\=\sum-[\hat{y}^{n}lnf(x^{n})+(1-\hat{y}^{n})ln(1-f(x^{n}))]

上式即為交叉熵損失函數:

H(p,q)=-\sum_{x}p(x)lnq(x)

接下來對參數進行求導:

\frac{\partial -lnL(w,b)}{\partial w_{i}}=\sum-[\hat{y}^{n}\frac{\partial lnf(x^{n})}{\partial w_{i}}+(1-\hat{y}^{n})\frac{\partial ln(1-f(x^{n})))}{\partial w_{i}}]\\ \frac{\partial lnf(x^{n})}{\partial w_{i}}=\frac{\partial lnf(x^{n})}{\partial z}\frac{\partial z}{\partial w_{i}}\\ =\frac{\partial ln\sigma (z)}{\partial z}\frac{\partial z}{\partial w_{i}}\\ =\frac{1}{\sigma (z)}\sigma (z)(1-\sigma (z))\frac{\partial z}{\partial w_{i}}\\(注意:\frac{\partial \sigma (z)}{\partial z}=\sigma (z)(1-\sigma (z)),sigmoid函數的導數)\\ \frac{\partial ln(1-f_{w,b}(x^{n}))}{\partial w_{i}}\\ =\frac{-1}{1-\sigma (z)}(1-\sigma (z))\sigma (z)x_{i}\\ =-\sigma (z)x_{i}
所以-\frac{\partial lnL(w,b)}{\partial w_{i}}=\sum-[\hat{y}^{n}(1-f_{w,b}(x^{n}))x_{i}^{n}-(1-\hat{y}^{n})f_{w,b}(x^{n})x_{i}^{n}]=\sum-(\hat{y}^{n}-f_{w,b}(x^{n}))x_{i}^{n}
更新梯度
w_{i}\leftarrow w_{i}-\eta \sum-(\hat{y}^{n}-f_{w,b}(x^{n}))x_{i}^{n}\\(這表明當使用交叉熵作為損失函數是,如果預測值與實際值有較大的差距時會產生較大的梯度更新。)

2. 均方誤差損失函數

L (w,b)=\frac{1}{2}\sum (f_{w,b}(x)-\hat{y}^{n})^{2}

接下來對參數進行求導:

\frac{\partial (f_{w,b}(x)-\hat{y}^{n})^{2}}{\partial w_{i}}=2(f_{w,b}(x)-\hat{y}^{n})\frac{\partial f_{w,b}(x)}{\partial z}\frac{\partial z}{\partial w_{i}}\\ =2(f_{w,b}(x)-\hat{y}^{n}){\color{Red} {f_{w,b}(x)(1-f_{w,b}(x))}}x_{i}

由於上式紅色部分的存在會導致當f_{w,b}(x)=0\frac{\partial L}{\partial w_{i}}=0,而當f_{w,b}(x)=1時也有\frac{\partial L}{\partial w_{i}}=0

交叉熵與均方誤差的影像如下:

3. 總結
關於為什麼使用交叉熵而不使用均方誤差,總結如下:

  • 神經網路中如果預測值與實際值的誤差越大,那麼在反向傳播訓練的過程中,各種參數調整的幅度就要更大,從而使訓練更快收斂,如果預測值與實際值的誤差小,各種參數調整的幅度就要小,從而減少震蕩。

  • 使用平方誤差損失函數,誤差增大參數的梯度會增大,但是當誤差很大時,參數的梯度就會又減小了。

  • 使用交叉熵損失是函數,誤差越大參數的梯度也越大,能夠快速收斂。

五、判別模型 vs 生成模型

P(C_{1}|x)=\sigma (wx+b)

判別模型會直接估計w,b
生成模型會估計\mu_{1}、\mu_{2}、\Sigma,其中

w^{T}=(\mu ^{1}-\mu ^{2})\Sigma ^{-1},b=-\frac{1}{2}(\mu ^{1})^{T}\Sigma ^{-1}\mu ^{1}+\frac{1}{2}(\mu ^{2})^{T}\Sigma ^{-1}\mu ^{2}+ln\frac{P(C_{1})}{P(C_{2})}

一般情況下兩種w和b不一定相同。

生成模型的優點:

  • 因為生成模型有一個先驗的假設,所以需要更少的訓練數據,而且對雜訊有更高的魯棒性。

  • 先驗分布和類別依賴的概率分布可以從不同的來源估計。

參考資料

ref:分類問題為什麼要使用交叉熵損失函數而不是均方誤差