引言
上一章节,我们介绍了神经网络,同时在后面的扩展遗留了几个问题。其中一个问题就是代价函数的选择。常规的机器学习算法中,我们都是选取的二次函数作为代价函数,这个没有什么大的问题,但是本章我们分析一下二次代价函数,看下二次代价的性质,同时看下是否有其他更好的代价函数可供我们选择。
二次代价函数
上一章节的神经网络中,我们选择了二次代价函数与sigmoid激活函数作为例子,引出介绍了神经网络。利用梯度下降算法,能够更新权重,使网络具有了学习的能力。
为什么二次代价函数学习效率会比较差
回顾一下梯度下降算法,其中的更新权重的方程如下所示:
其中是学习速率,当给定时,那么权重的更新就完全取决于后面的偏导数。也就意味着权重的更新大小将完全取决于后面的偏导数。那么我们来分析一下偏导
回顾一下:
其中
根据链式求导法则:
其中是输出与实际的差值,也就是误差,误差越大,那么权重的衰减就会越大,那么也就意味着学习效率越快,但是这里我们看到方程式中还乘以了一个导数 我们看下的图像
我们可以看到在最开始的地方,导数比较小,中间部分导数比较大,尾部导数依旧比较小,这也就意味着我们的权重更新最初是很慢的,也就意味着我们刚开始的学习效率是比较差劲的。
交叉熵代价函数
既然二次代价函数学习dasfadfafd效率比较差,那么是否存在其他的代价函数,能够消除二次代价函数存在的这个问题呢?这里我们引入交叉熵代价函数
交叉熵函数具有非常优良的性质,同样我们根据链式求导法则:
同时由于:
将其带入到上面的导数公式,可得:
这个性质就很优良了啊。权重的减少完全取决于误差,而跟激活函数的导数无关了。也就意味着初始的误差越大,学习效率越高。这就和人类的行为一致了,因为当人类犯错误的时候,才能更好的学习到东西,机器也应该如此啊。