我们理想情况是让神经网络学习更快
假设简单模型: 只有一个输入,一个神经元,一个输出
简单模型: 输入为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函数 (不会有学习慢的问题)