引言

上一章节,我们介绍了神经网络,同时在后面的扩展遗留了几个问题。其中一个问题就是代价函数的选择。常规的机器学习算法中,我们都是选取的二次函数作为代价函数,这个没有什么大的问题,但是本章我们分析一下二次代价函数,看下二次代价的性质,同时看下是否有其他更好的代价函数可供我们选择。

二次代价函数

上一章节的神经网络中,我们选择了二次代价函数与sigmoid**函数作为例子,引出介绍了神经网络。利用梯度下降算法,能够更新权重,使网络具有了学习的能力。

为什么二次代价函数学习效率会比较差

回顾一下梯度下降算法,其中的更新权重的方程如下所示:

wkwk=wkηCwk

blbl=blηCbl

其中η是学习速率,当给定时,那么权重的更新就完全取决于后面的偏导数。也就意味着权重的更新大小将完全取决于后面的偏导数。那么我们来分析一下偏导Cwk

回顾一下:

C(w,b)=12nx||y(x)a||2

σ=11+ez

其中

z=jwjxj+b

a=σ(z)

根据链式求导法则:

Cwk=Caazzwk=1nx(ay)σ(z)xj

其中(ay)是输出与实际的差值,也就是误差,误差越大,那么权重的衰减就会越大,那么也就意味着学习效率越快,但是这里我们看到方程式中还乘以了一个导数σ(z) 我们看下σ(z)的图像

神经网络之代价函数的选择

我们可以看到在最开始的地方,导数比较小,中间部分导数比较大,尾部导数依旧比较小,这也就意味着我们的权重更新最初是很慢的,也就意味着我们刚开始的学习效率是比较差劲的。

交叉熵代价函数

既然二次代价函数学习dasfadfafd效率比较差,那么是否存在其他的代价函数,能够消除二次代价函数存在的这个问题呢?这里我们引入交叉熵代价函数

C(w,b)=1nx[ylna+(1y)ln(1a)]

交叉熵函数具有非常优良的性质,同样我们根据链式求导法则:

Cwk=Caazzwk=1nx(ya1y1a)σ(z)xj=1nx((σ(z)y)σ(z)(1σ(z)))σ(z)xj

同时由于:

σ=11+ez

σ=σ(z)(1σ(z))

将其带入到上面的导数公式,可得:

Cwk=1nx(σ(z)y)xj

这个性质就很优良了啊。权重的减少完全取决于误差,而跟**函数的导数无关了。也就意味着初始的误差越大,学习效率越高。这就和人类的行为一致了,因为当人类犯错误的时候,才能更好的学习到东西,机器也应该如此啊。

相关文章:

  • 2021-11-10
  • 2021-06-18
  • 2022-01-13
  • 2021-07-10
  • 2021-12-14
  • 2022-01-02
猜你喜欢
  • 2021-08-24
  • 2021-11-09
  • 2022-12-23
  • 2022-12-23
  • 2021-09-22
相关资源
相似解决方案