认识交叉熵

信息熵
提到交叉熵,首先我们要知道熵的定义。熵也叫信息熵 H ( x ) H(x) H(x)表示在信号源发出信号后每个信号的平均信息量,即该信号源的平均编码长度。也表示在信号输出前,信号源的不确定性。用信息熵 H ( x ) H(x) H(x)来表征变量 x x x的随机性。信息量越大则信号源的不确定性就越强。当变量 x x x发生的概率为1时,信息熵为0.
H ( x ) = − ∑ i = 1 n p ( x i ) l o g p ( x i ) H(x)=-\sum_{i=1}^np(x_i)logp(x_i) H(x)=i=1np(xi)logp(xi)
相对熵
在衡量两个分布之间的差异时,通常用相对熵即KL散度来表示。设 p p p为目标概率分布, q q q为近似 p p p的概率分布,则 D K L ( p ∣ ∣ q ) D_{KL}(p||q) DKL(pq)表示两个分布 p p p q q q之间的差异:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g p ( x i ) q ( x i ) = ∑ i = 1 n p ( x i ) l o g p ( x i ) − ∑ i = 1 n p ( x i ) l o g q ( x i ) = − ∑ i = 1 n p ( x i ) l o g q ( x i ) − ( − ∑ i = 1 n p ( x i ) l o g p ( x i ) ) = H ( p , q ) − H ( p ) D_{KL}(p||q) =\sum_{i=1}^np(x_i)log\frac{p(x_i)}{q(x_i)}\\ =\sum_{i=1}^np(x_i)logp(x_i)-\sum_{i=1}^np(x_i)logq(x_i)\\ =-\sum_{i=1}^np(x_i)logq(x_i)-(-\sum_{i=1}^np(x_i)logp(x_i))\\=H(p,q)-H(p) DKL(pq)=i=1np(xi)logq(xi)p(xi)=i=1np(xi)logp(xi)i=1np(xi)logq(xi)=i=1np(xi)logq(xi)(i=1np(xi)logp(xi))=H(p,q)H(p)
通过上式得到,相对熵=交叉熵-信息熵。两个分布差异越大相对熵越大,差异越小相对熵越小。当两个分布相同时,差异为0.

为什么在神经网络中使用交叉熵作为优化函数,而不是相对熵
在神经网络中,我们通常用交叉熵作为损失函数,是因为我们要用概率分布 q q q尽量逼近概率分布 p p p,而真实概率分布 p p p时固定的,所以其信息熵为定值。当要最小化分布 p 和 q p和q pq之间的相对熵时就是要最小化它们之间的交叉熵。

为什么在神经网络中使用交叉熵作为优化函数,而不是均方误差
以二分类为例,设最后一层的输入为 x l x_l xl,对应的该层的权重为 w l w_l wl,偏置为 b l b_l bl,激活函数为sigmoid函数,用 σ ( x ) \sigma(x) σ(x)表示, y ^ \hat{y} y^表示预测输出的类别。
y ^ = σ ( w l x l + b l ) = σ ( z ) \hat{y}=\sigma(w_lx_l+b_l)=\sigma(z) y^=σ(wlxl+bl)=σ(z)
其中 σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1 σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma'(x)=\sigma(x)(1-\sigma(x)) σ(x)=σ(x)(1σ(x)).
当使用均方误差时,优化函数为 l = 1 2 ( y − y ^ ) 2 l=\frac{1}{2}(y-\hat{y})^2 l=21(yy^)2,对参数 w l w_l wl求导为: ∂ l ∂ w l = ( y − y ^ ) σ ′ ( z ) x l \frac{\partial{l}}{\partial{w_l}}=(y-\hat{y})\sigma'(z)x_l wll=(yy^)σ(z)xl
由于 σ ′ ( z ) \sigma'(z) σ(z)在绝大部分情况下导数值都很小,因此梯度更新较慢。而且根据链式法则可知当神经网络层数越深时越容易出现梯度消失问题。
当使用交叉熵时,优化函数为 l = − y l o g ( y ^ ) − ( 1 − y ) l o g ( 1 − y ^ ) l=-ylog(\hat{y})-(1-y)log(1-\hat{y}) l=ylog(y^)(1y)log(1y^),对参数 w l w_l wl求导为:
∂ l ∂ w l = ( − y y ^ + 1 − y 1 − y ^ ) σ ′ ( z ) x l = ( − y y ^ + 1 − y 1 − y ^ ) ( y ^ ( 1 − y ^ ) ) x l = ( y ^ − y ) x l \frac{\partial{l}}{\partial{w_l}}=(-\frac{y}{\hat{y}}+\frac{1-y}{1-\hat{y}})\sigma'(z)x_l\\ =(-\frac{y}{\hat{y}}+\frac{1-y}{1-\hat{y}})(\hat{y}(1-\hat{y}))x_l\\ =(\hat{y}-y)x_l wll=(y^y+1y^1y)σ(z)xl=(y^y+1y^1y)(y^(1y^))xl=(y^y)xl
计算得到的梯度已经和sigmoid的导数无关,而是由预测值和真实值之间的误差影响,误差越大梯度下降越快,因此避免了训练慢的问题。

参考链接:
1、如何通俗的解释交叉熵与相对熵?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值