这篇文章写一下能否对cost function进行一些优化,目标方程:cross-entropy函数
我们的理想情况是让神经网络学习更快
假设简单模型:只有一个输入,一个神经元,一个输出
简单模型:输入为1时,输出为0
神经网络的学习行为和人脑差的很多,开始学习很慢,后来逐渐增快
为什么?
学习慢可以推出偏导数
值很小
计算偏导数:
回顾之前学习的Cost函数:
对于一个x,y和单个神经元:
分别对w和b求偏导数:
回顾sigmoid函数:
可以看到当神经元输出接近0和1时,曲线非常平缓,可以推出
很小,所以学习很慢
那么我们如何增快学习?
引入cross-entropy cost函数
假设有一个稍微复杂一些的神经网络
定义一个新的cost函数:cross-entropy函数:
为什么这个函数可以用来做cost函数呢?
(1)函数值大于等于0(经过验证)
(2)当a=y时,cost=0
用sigmoid函数定义:
推出:
带入上面的偏导,得到:
学习的快慢取决于:
也就是输出的error
好处:错误大时,更新多,学得快;错误小时,学习慢
对于偏向也类似:
对于多层:
以上把输出层所有的神经元的值加起来
总结:
cross-entropy cost 几乎总是比二次cost函数好
如果神经元的方程是线性的,用二次cost函数不会有学习慢的问题
相关文章: