神经网络之损失函数

对于损失函数一直处于混乱理解的状态,L2=1/2 ||a-y||^2 ,对于其他的类似于交叉信息熵感觉很高大上的样子,但是到底是怎么回事呢?今天我就一探究竟!

我们都知道,神经网络模型训练得以实现是经过前向传播计算LOSS,根据LOSS的值进行反向推到,进行相关参数的调整。可见,LOSS是指导参数进行调整的方向性的指导,很关键,正如在梯度下降中看到的图一样,如果LOSS随意指示下降的方向,那么可能无论经过多少次迭代,都是没有目标的随意游走,又怎么可能到达LOSS最低点呢?

所以,在神经网络的训练中对于损失函数的选取、以及梯度下降的各个参数的调整尤为重要!


损失函数通常可以表示成损失项和正则项的和 J(w)=∑iL(mi(w))+λR(w) ,今天我们只对于前一部分进行理解和记录。对于损失函数的收敛特性我们期望是当误差越大的时候,收敛(学习)速度应该越快。

具体分为以下三类:
1. quadratic+sigmoid (平方损失函数)
2. cross entropy + sigmoid (交叉熵损失函数)
3. softmax + log-likelihood

一、quadratic+sigmoid (平方损失函数)

(1)定义
平方和损失函数定义 C=0.5*(y−a)^2,其中y是期望输出,a是实际输出。
(2)收敛特性
不幸的是,使用平方和作为损失函数的神经单元不具备这种性质,即当误差越大的时候,收敛(学习)速度应该越快。你可以按照下面的列子验证一下。

z=wx+b
a=δ(z)

根据链式法则,求C对于w的偏导数

C/∂w=(δ(z)−y)δ′(z)x
∂C/∂b=(δ(z)−y)δ′(z)

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

二、cross entropy + sigmoid (交叉熵损失函数)

(1)定义
为了解决当误差大时,收敛速度大的问题,引入交叉熵损失函数。

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

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

(3)收敛特性

z=wx+b
a=δ(z)

依旧根据链式法则,可以求得对应的偏导数

C/∂w={(δ(z)−y)/δ(z)((1−δ(z))}δ′(z)x

对于sigmoid函数,有δ′(z)=δ(z)(1−δ(z))对上式子进行替换和约分有∂C/∂w=(δ(z)−y)x

∂C/∂b同理,∂C/∂b=(δ(z)−y)x。
可以看到梯度(∂C/∂w)正比与误差(δ(z)−y),满足我们最初的目标!
(4)含义
交叉熵是用来衡量两个概率分布之间的差异。交叉熵越大即信息量越大,两个分布之间的差异越大,越对实验结果感到意外,反之,交叉熵越小,两个分布越相似,越符合预期。如抛掷两枚硬币,如果确定出现某一面其信息量不大,而正反面都是以1/2的概率出现,这个时候信息熵最大。下面以离散分布为例讨论。
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))=−∑p(x)logp(x)

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

D(p(x)||q(x))=∑p(x)log(p(x)/q(x)

由H(p(x))和D(p(x)||q(x))可得H(p,q)=−∑p(x)logq(x)

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

三、softmax + log-likelihood

(1)softmax多分类器定义

zj=∑wx+b
aj=ej/∑ek (原来此处是sigmoid函数)

(2)loss的计算公式

C=−lnay

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

C/∂w=(a−1)∗x
∂C/∂b=a−1

当aj预测不好时,误差会很大,收敛会变快。

四、结论

(一)、sigmoid

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

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

五、相关

loss paper

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值