机器学习:神经网络代价函数总结

机器学习:神经网络代价函数总结神经网络代价函数1.代价函数基本定义代价函数是衡量模型预测输出值与目标真实值之间差距的一类函数,在一些场景中也称为目标函数。在神经网络中,代价函数(如二次误差函数)衡量输出值与真实值之间的误差,以此进行误差反向传递,不断调整网络中权值和阈值,从而使得预测值和真实值之间的差距越来越小。一些常用的代价函数主要有:二次代价函数、交叉熵代价函数以及对数似然函数等等。2…

大家好,欢迎来到IT知识分享网。

神经网络代价函数


1. 代价函数基本定义

  • 代价函数衡量模型预测输出值与目标真实值之间差距的一类函数,在一些场景中也称为目标函数
  • 神经网络中,代价函数(如二次误差函数)衡量输出值与真实值之间的误差,以此进行误差反向传递,不断调整网络中权值和阈值,从而使得预测值和真实值之间的差距越来越小。
  • 一些常用的代价函数主要有:二次代价函数交叉熵代价函数以及对数似然函数等等。

2. 二次代价函数

  • 定义

考虑 n n 个样本的输入
z1,z2,...zn

z 1 , z 2 , . . . z n
,对应的真实值为 y1,y2,...,yn y 1 , y 2 , . . . , y n ,对应的输出为 o(zi) o ( z i ) ,则二次代价函数可定义为:

C=12ni=1n||yio(zi)||2 C = 1 2 n ∑ i = 1 n | | y i − o ( z i ) | | 2



其中,

C C
表示代价函数,


n

n

表示样本总数。

  • 以一个样本为例

假设在神经网络中,上一层每个神经元的输出为 xj x j ,权值为 wj w j ,偏置值为 b b 。当前输出神经元的激活函数为
σ()

σ ( )
。则该神经元的输入值为 z=wjxj+b z = ∑ w j x j + b ,此时二次代价函数为:

C=(yσ(z))22 C = ( y − σ ( z ) ) 2 2



其中,

y y
为真实值。

  • 考虑权值和偏置值更新

假如使用梯度下降法(Gradient descent)来调整权值和偏置值大小,则对
w

w
b b 求偏导得:


Cw=(σ(z)y)σ(z)xCw=(σ(z)y)σ(z)

C w = ( σ ( z ) y ) σ ( z ) x C w = ( σ ( z ) y ) σ ( z )



该偏导数乘以学习率

l l
就变成了每次调整权值和偏置值得步长。当


l

l

一定时,可以看出

w w



b

b

的梯度跟激活函数的梯度成正比,激活函数的梯度(导数)越大,则

w w



b

b

调整得就越快,训练收敛得就越快。

  • 结合激活函数

假设神经元使用的激活函数为sigmoid函数,如下图所示:

这里写图片描述

  • 考虑 A A 点和
    B

    B
    点,权值调整大小与sigmoid函数的梯度(导数)有关。
  • 当真实值 y=1 y = 1 时,则输出值目标是收敛至 1 1
    A

    A
    离目标比较远,权值调整大; B B 离目标比较近,权值调整小。调整方案合理。
  • 当真实值
    y=0

    y = 0
    时,则输出值目标是收敛至 0 0
    A

    A
    离目标比较近,权值调整大; B B 离目标比较远,权值调整小。调整方案不合理。换句话说,很难调整到目标值
    0

    0

  • 结论

可以看出,二次代价函数在使用sigmoid或tanh的s型激活函数时,在收敛至 0 0 时,存在收敛速度慢而导致的训练速度慢的问题。


2. 交叉熵代价函数

  • 交叉熵

在分析交叉熵代价函数函数之前,先来了解一下交叉熵的概念。

首先引入信息熵,给定一个随机变量
X=x1,x2,...,xn

X = x 1 , x 2 , . . . , x n
,对应的概率分布为 p1,p2,...pn p 1 , p 2 , . . . p n ,则信息熵就是用来衡量随机变量的不确定性大小,定义为:

H(X)=i=1npilog21pi H ( X ) = ∑ i = 1 n p i log 2 ⁡ 1 p i



消除随机变量不确定性大小的
最小代价即是该跟据随机变量
真实分布计算的信息熵大小


交叉熵就是用来衡量在给定的真实分布下,使用
非真实分布所指定的策略
消除系统的不确定性所需要付出的努力的大小。

假设得到随机变量的非真实分布为

q1,q2,...,qn q 1 , q 2 , . . . , q n


则计算
交叉熵为:


cross_entropy=H(p,q)=i=1npilog21qi c r o s s _ e n t r o p y = H ( p , q ) = ∑ i = 1 n p i log 2 ⁡ 1 q i



交叉熵越低,表示策略就越好,最低的交叉熵也就是使用了真实分布所计算出来的信息熵。此时 ,交叉熵 = 信息熵。

  • 交叉熵代价函数定义

考虑 n n 个样本的输入
z1,z2,...zn

z 1 , z 2 , . . . z n
,对应的真实值为 y1,y2,...,yn y 1 , y 2 , . . . , y n ,对应的输出为 oi o i ,则交叉熵代价函数可定义为:

C=1ni=1n[yilnoi+(1yi)ln(1oi)] C = − 1 n ∑ i = 1 n [ y i ln ⁡ o i + ( 1 − y i ) ln ⁡ ( 1 − o i ) ]



其中,

C C
表示代价函数,


n

n

表示样本总数。

  • 结合激活函数考虑

假设在神经网络中,上一层每个神经元的输出为 xi x i ,权值为 wi w i ,偏置值为 b b 。当前输出神经元的激活函数为
σ()

σ ( )
。则每个神经元的输入值为 z=wixi+b z = ∑ w i x i + b ,此时考虑 n n 个神经元,交叉熵代价函数为:


C=1ni=1n[yiln(σ(z))+(1yi)ln(1σ(z))]

C = 1 n i = 1 n [ y i ln ( σ ( z ) ) + ( 1 y i ) ln ( 1 σ ( z ) ) ]



其中,

yi y i
为真实值,

  • 考虑权值和偏置值更新

对比二次代价函数,同样选择sigmoid激活函数,则 σ(z)=σ(z)(1σ(z)) σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) )

权值 w w 的梯度(更新步长)为


Cwi=1ni=1n(yiσ(z)(1yi)1σ(z))σwi=1ni=1n(yiσ(z)(1yi)1σ(z))σ(z)xi=1ni=1nσ(z)xiσ(z)(1σ(z))(σ(z)yi)=1ni=1nxi(σ(z)yi)

C w i = 1 n i = 1 n ( y i σ ( z ) ( 1 y i ) 1 σ ( z ) ) σ w i = 1 n i = 1 n ( y i σ ( z ) ( 1 y i ) 1 σ ( z ) ) σ ( z ) x i = 1 n i = 1 n σ ( z ) x i σ ( z ) ( 1 σ ( z ) ) ( σ ( z ) y i ) = 1 n i = 1 n x i ( σ ( z ) y i )

同理,偏置值 b b 的梯度(更新步长)为


Cb=1ni=1n(σ(z)yi)

C b = 1 n i = 1 n ( σ ( z ) y i )

可以看出,权值和偏置值的调整与 σ(z) σ ′ ( z ) 无关,而与 σ(z) σ ( z ) 有关。此外, σ(z)y σ ( z ) − y 表示真实值与输出值之间的误差。当误差越大时,梯度就越大, w w
b

b
的调整就越快,训练速度就越快。

  • 结论:

对比二次代价函数可以发现,代价函数的选择与激活函数有关。当输出神经元的激活函数是线性时例如,ReLU函数)二次代价函数是一种合适的选择;当输出神经元的激活函数是S型函数(例如sigmoid、tanh函数)时,选择交叉熵代价函数则比较合理。


3. 对数似然函数代价函数

  • 定义:

考虑 n n 个样本的输入
z1,z2,...zn

z 1 , z 2 , . . . z n
,对应的真实值为 y1,y2,...,yn y 1 , y 2 , . . . , y n 取值为 0 0
1

1
,对应的第 i i 个神经元输出为
oi

o i
,则对数 log log 似然代价函数可定义为:

C=i=1nyilogoi C = − ∑ i = 1 n y i log ⁡ o i


其中, C C 表示代价函数,
n

n
表示样本总数。

在深度学习中,对数似然函数常用来搭配softmax激活函数使用。

  • 考虑softmax激活函数

假定神经网络的每个输出层神经元(假设共 n n 个)都使用softmax激活函数:


oj=ezjkezk

o j = e z j k e z k


其中, zj z j 表示输出层第 j j 个神经元的输入,
oj

o j
表示第 j j 输出神经元的输出。
kezk

k e z k
表示所有输出层神经元的输入之和。

softmax函数的特点在于

  • 它把每个神经元的输入占当前层所有神经元输入之和的比值,当作该神经元的输出。这使得输出更容易被解释:神经元的输出值越大,则该神经元对应的类别是真实类别的可能性更高。
  • 此外,softmax的输出是一个归一化的概率分布,能够衡量输出分布与真实分布之间的差距。

softmax函数求导

两种情况

  • j=i j = i 时:
    ojzi=zi(ezjkezk)=(ezj)kezkezjezj(kezk)2=ezjkezkezjkezkezjkezk=oj(1oj) ∂ o j ∂ z i = ∂ ∂ z i ( e z j ∑ k e z k ) = ( e z j ) ′ ⋅ ∑ k e z k − e z j ⋅ e z j ( ∑ k e z k ) 2 = e z j ∑ k e z k − e z j ∑ k e z k ⋅ e z j ∑ k e z k = o j ( 1 − o j )

  • ji j ≠ i 时:
    ojzi=zi(ezjkezk)=0kezkezjezi(kezk)2=ezjkezkezikezk=ojoi ∂ o j ∂ z i = ∂ ∂ z i ( e z j ∑ k e z k ) = 0 ⋅ ∑ k e z k − e z j ⋅ e z i ( ∑ k e z k ) 2 = − e z j ∑ k e z k ⋅ e z i ∑ k e z k = − o j o i

求导完毕。

  • softmax配合对数似然代价函数

考虑神经网络输出层神经元,对应多分类问题时。 ok o k 表示第 k k 个神经元的输出,
yk

y k
表示第 k k 个神经元对应的真实值,取值为
0

0
1 1 。则总的代价函数为:


C=kyklogok

C = k y k log o k


其中, ok=σ(zj) o k = σ ( z j ) 。其中, σ() σ ( ⋅ ) 表示softmax激活函数; zj=wjkxk+bj z j = ∑ w j k x k + b j 为每个神经元的输入。

  • 考虑权值和偏置值的更新

对权值 wjk w j k 求偏导得权值更新步长为:

Cwjk=Czjzjwjk=Czj(wjkxk+bj)wjk=kxkykzj(logok)=kxkyk1okokzj()=xjyj1ojoj(1oj)kjxkyk1ok(ojok)=xjyj(1oj)+ojkjxkyk()=ojxkykxjyj   , xkyk=xj=xj(ojyj) ∂ C ∂ w j k = ∂ C ∂ z j ⋅ ∂ z j ∂ w j k = ∂ C ∂ z j ⋅ ∂ ( ∑ w j k x k + b j ) ∂ w j k = − ∑ k x k y k ∂ ∂ z j ( log ⁡ o k ) = − ∑ k x k y k 1 o k ∂ o k ∂ z j ( 拆 分 求 导 ) = − x j y j 1 o j ⋅ o j ( 1 − o j ) − ∑ k ≠ j x k y k 1 o k ⋅ ( − o j o k ) = − x j y j ( 1 − o j ) + o j ∑ k ≠ j x k y k ( 合 并 ) = o j ∑ x k y k − x j y j       这 里 ,   ∑ x k y k = x j = x j ( o j − y j )


上式中, xkyk=xj ∑ x k y k = x j 是由于softmax函数对应多分类真实值时,只能有一项为1(该项最可能为输出神经元 j j 输出值对应的项),其余皆为0。

同理得偏置值更新步长为:


Cbj=ojyj

C b j = o j y j

可以看出,权值和偏置得更新与输出值和真实值之间得误差有关,误差越大,权值和偏置更新得速度越快,训练得速度也就越快。

  • 总结

根据上述分析可得,对数似然代价函数配合softmax函数和交叉熵代价函数配合S型函数的原理相似,都能有效地解决权值和偏置值更新速度慢导致得训练速度慢的问题。二者联系:对数似然代价函数在二分类时,可以简化为交叉熵代价函数的形式。

  • 扩展

Tensorflow中:

tf.nn.sigmoid_cross_entropy_with_logits() # 表示sigmoid搭配使用交叉熵。
tf.nn.softmax_cross_entropy_with_logits() # 表示softmax搭配使用的交叉熵。

参考资料

讲师Ben: 炼数成金课程——深度学习框架Tensorflow学习与应用
softmax的log似然代价函数(公式求导)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21909.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信