分类|深度学习(李宏毅)
Posted ccqun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分类|深度学习(李宏毅)相关的知识,希望对你有一定的参考价值。
一、生成模型
假设有两个类别(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}{(2pi )^{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 ^{*}=frac{1}{N}sum_{1}^{N}x^{n} ]
三、逻辑回归(判别模型)推导
这里的推导假设(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})}})
(sigma (z))即是sigmoid函数,其图像为:
另外(z=lnfrac{P(x|C_{1})}{P(x|C_{2})}+lnfrac{P(C_{1})}{P(C_{2})}),其中
(lnfrac{P(x|C_{1})}{P(x|C_{2})}=lnfrac{frac{1}{(2pi )^{D/2}|Sigma ^{1}|^{1/2}}exp^{-frac{1}{2}(x-mu ^{1})^{T}(Sigma^{1}) ^{-1}(x-mu ^{1})}}{frac{1}{(2pi )^{D/2}|Sigma ^{2}|^{1/2}}exp^{-frac{1}{2}(x-mu ^{2})^{T}(Sigma^{2}) ^{-1}(x-mu ^{2})}})
(=lnfrac{|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})})
(=lnfrac{|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})])
其中
同理
因为前面假设(Sigma^{1}=Sigma^{2}=Sigma),所以(lnfrac{|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}+lnfrac{P(C^{1})}{P(C^{2})} ]
则(P(C_{1}|x)=sigma (wx+b))
在使用生成模型时需要估计(mu_{1}、mu_{2}、Sigma),现在可以直接估计(w)和(b)。
四、逻辑回归的损失函数
- 交叉熵损失函数
令(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}) ]
上式中
[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 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})
更新梯度
- 均方误差损失函数
[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 生成模型
判别模型会直接估计(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}+lnfrac{P(C_{1})}{P(C_{2})} ]
一般情况下两种(w和b)不一定相同。
生成模型的优点:
- 因为生成模型有一个先验的假设,所以需要更少的训练数据,而且对噪声有更高的鲁棒性。
- 先验分布和类别依赖的概率分布可以从不同的来源估计。
参考资料
公众号同步更新
以上是关于分类|深度学习(李宏毅)的主要内容,如果未能解决你的问题,请参考以下文章