我们理想情况是让神经网络学习更快
 
假设简单模型: 只有一个输入,一个神经元,一个输出
 
简单模型: 输入为1时, 输出为0
 
 
 
初始 w = 0.6, b = 0.9   初始预测的输出 a = 0.82, 需要学习
 
学习率: 0.15
 
演示: 
 
初始: w = 2.0, b = 2.0, 初始预测输出: 0.98, 和理想输出0差点很远
演示:
 
演示:
神经网络的学习行为和人脑差的很多, 开始学习很慢, 后来逐渐增快.
 
为什么?
 
学习慢 => 偏导数 ∂C/∂w 和 ∂C/∂b 值小
 
计算偏导数:
 
回顾之前学习的Cost函数:
 
对于一个x, y 和单个神经元:
 
分别对w和b求偏导数:
 
回顾sigmoid函数
 
当神经元输出接近1时, 曲线很平缓, 
 
=>
 
如何增快学习?
 
介绍cross-entropy cost 函数
 
假设一个稍微复杂一些的神经网络
 
定义cross-entropy函数:
 
为什么可以用来做cost函数?
 
1.  函数值大于等于0 (验证)
 
2.  当a=y时, cost = 0
 
用sigmoid函数定义
 
推出:
 
学习的快慢取决于 
 
也就是输出的error
 
好处: 错误大时,更新多,学得快. 错误小时,学习慢
 
对于偏向也类似:
 
用cross-entropy 演示:
 
w = 0.6, b = 0.9
 
w = 2.0, b = 2.0
 
与之前的二次cost比较
 
学习率=0.005, 但是不是重点, 主要是速度的变化率, 也就是曲线的形状不同. 
 
以上是对于一个单个神经元的cost, 对于多层:
 
以上把输出层所有的神经元的值加起来
 
总结:
 
cross-entropy cost几乎总是比二次cost函数好
 
如果神经元的方程是线性的, 用二次cost函数 (不会有学习慢的问题)