美文网首页人工智能
分类|深度学习(李宏毅)(二)

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

作者: 酷酷的群 | 来源:发表于2020-05-19 18:01 被阅读0次

李宏毅老师深度学习系列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函数,其图像为:

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

  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

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

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

相关文章

网友评论

    本文标题:分类|深度学习(李宏毅)(二)

    本文链接:https://www.haomeiwen.com/subject/xxxiohtx.html