码迷,mamicode.com
首页 > 其他好文 > 详细

分类|深度学习(李宏毅)(二)

时间:2020-07-22 20:50:01      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:注意   csdn   hat   深度   生成   情况下   images   https   href   

一、生成模型

假设有两个类别\(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\),现在可以直接估计\(w\)\(b\)

四、逻辑回归的损失函数

  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 -Lnf(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}\\(这表明当使用交叉熵作为损失函数是,如果预测值与实际值有较大的差距时会产生较大的梯度更新。) \]

  1. 均方误差损失函数

\[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\)

交叉熵与均方误差的图像如下:

技术图片

  1. 总结
    关于为什么使用交叉熵而不使用均方误差,总结如下:
  • 神经网络中如果预测值与实际值的误差越大,那么在反向传播训练的过程中,各种参数调整的幅度就要更大,从而使训练更快收敛,如果预测值与实际值的误差小,各种参数调整的幅度就要小,从而减少震荡。
  • 使用平方误差损失函数,误差增大参数的梯度会增大,但是当误差很大时,参数的梯度就会又减小了。
  • 使用交叉熵损失是函数,误差越大参数的梯度也越大,能够快速收敛。

五、判别模型 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:分类问题为什么要使用交叉熵损失函数而不是均方误差

公众号同步更新


技术图片


分类|深度学习(李宏毅)(二)

标签:注意   csdn   hat   深度   生成   情况下   images   https   href   

原文地址:https://www.cnblogs.com/CcQun/p/13362483.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!