损失函数

原文地址:http://blog.csdn.net/zr459927180/article/details/50750736

先上结论:在使用sigmoid作为激活函数的时候,cross entropy相比于quadratic cost function,具有收敛速度快,更容易获得全局最优的特点;使用softmax作为激活函数,log-likelihood作为损失函数,不存在收敛慢的缺点。 
对于损失函数的收敛特性,我们期望是当误差越大的时候,收敛(学习)速度应该越快。

一、quadratic + sigmoid

(一)、定义

平方和损失函数定义 

C=(ya)22

其中 y 是期望输出, a 是实际输出

(二)、收敛特性

不幸的是,使用平方和作为损失函数的神经单元不具备这种性质(参考文献有一个非常直观的例子),具体分析如下: 
对于一个神经单元来讲,输入x和对应的输出a的关系满足 

z=wx+b

a=δ(z)

根据链式法则,可以求得对应的偏导数 
Cw=(δ(z)y)δ(z)x

Cb=(δ(z)y)δ(z)

如果激活函数使用的是sigmoid函数的话,根据激活函数的形状和特性可知,当 δ(z) 趋近于0或者趋近于1的时候, δ(z) 会趋近于0,当 δ(z) 趋近于0.5的时候, δ(z) 会最大。 
比如说,取 y=0 ,当 δ(z)=1 的时候,期望值和实际值的误差 δ(z)y 达到最大,此时, δ(z) 会趋近于0,所以就会发生收敛速度慢的问题。

二、cross entropy + sigmoid

(一)、定义

为了解决上述收敛慢的问题,引入了交叉熵损失函数 

C=(ylna+(1y)ln(1a))

(二)、两点特性

要想成为loss function,需要满足两点要求: 
1. 非负性 
2. 预测值和期望值接近时,函数值趋于0 
显然,quadratic cost function满足以上两点。cross entropy同样也满足以上两点,所以其可以成为一个合格的cost function。

(三)、收敛特性

对于一个神经单元来讲,输入x和对应的输出a的关系满足 

z=wx+b

a=δ(z)

根据链式法则,可以求得对应的偏导数 Cw  
Cw=δ(z)yδ(z)(1δ(z))δ(z)x

对于sigmoid函数来讲,满足 
δ(z)=δ(z)(1δ(z))

所以,上式可化简为 
Cw=(δ(z)y)x

同理可得 Cb  
Cb=δ(z)y

由上面的推导可以看出,sigmoid函数的导数 δ(z) 被分子和分母约掉,最后的结果是正比于期望值和预测值的差,即为当期望值和预测值相差越大的时候,收敛速度会越快,很好地解决了平方和损失函数的收敛速度慢的问题。

(四)、含义

交叉熵是用来衡量两个概率分布之间的差异。交叉熵越大,两个分布之间的差异越大,越对实验结果感到意外,反之,交叉熵越小,两个分布越相似,越符合预期。下面以离散分布为例讨论。 
q(x) 表示估计x的概率分布, p(x) 表示真实x的概率分布,交叉熵定义如下: 

H(p(x),q(x))=H(p(x))+D(p(x)||q(x))

H(p(x)) 表示p(x)的熵,定义如下: 
H(p(x))=xXp(x)logp(x)

D(p(x)||q(x)) 表示 p(x) q(x) 的KL距离(Kullback-Leibler divergence),也叫作相对熵,定义如下: 
D(p(x)||q(x))=xXp(x)logp(x)q(x)

由此可得,交叉熵 
H(p,q)=xXp(x)logq(x)

对于神经网络的二值输出(0或者1),假设神经网络输出 a 表示是输出1的概率(此时对应的 y=1 ),那么 1a 表示输出0的概率(此时对应的 1y=0 ),所以交叉熵可以定义成如下形式: 
C=(ylna+(1y)ln(1a))

三、softmax + log-likelihood

(一)、softmax

softmax定义如下 

zj=kwjkxk+bj

aj=ezjkezk

(二)、log-likelihood

C=lnay

ay 表示类别y对应的预测概率,如果预测好的话, ay 会趋近于1, C 会趋近于0,反之, ay 趋近于0, C 趋近于极大。

(三)、误差

根据链式法则 

Cwjk=Cajajzjzjwjk=1ajezjkezkezjezj(kezk)2xk=(aj1)xk

同理 
Cbj=aj1

跟上面的cross entropy类似,当 aj 预测不好时,误差会很大,收敛会变快。

四、conclusion

(一)、sigmoid

在激活函数使用sigmoid的前提之下,相比于quadratic cost function, cross entropy cost function具有收敛速度快和更容易获得全局最优(至于为什么更容易获得全局最优,个人感觉有点类似于动量的物理意义,增加收敛的步长,加快收敛的速度,更容易跳过局部最优)的特点。 
因为我们一般使用随机值来初始化权重,这就可能导致一部分期望值和预测值相差甚远。所以选择sigmoid作为激活函数的时候,推荐使用cross entropy。如果激活函数不是sigmoid,quadratic cost function就不会存在收敛速度慢的问题。

(二)、softmax

对于分类问题,如果希望输出是类别的概率,那么激活函数选择使用softmax,同时使用log-likelihood作为损失函数。


五、reference

http://neuralnetworksanddeeplearning.com/chap3.html#the_cross-entropy_cost_function 
https://en.wikipedia.org/wiki/Cross_entropy

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值