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

引言

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

二次代价函数

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

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

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

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

回顾一下:

其中

根据链式求导法则:

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

S型神经元

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

交叉熵代价函数

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

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

同时由于:

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

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

显示 Gitment 评论