Chap3 Improving the way neural networks learn 改进神经网络
Summary:
- cross-entropy cost function 交叉熵损失函数
- 4 regularization methods 归一化的方法
- 初始化权重
- choose good hyper-parameters
The cross-entropy cost function 交叉熵损失函数
对人类来说,如果输出的结果错的越离谱,学习的就越快。在神经网络中,当使用差值平方做损失函数的时候,发现如果输出结果很差,学习速度较慢。
对w和b改变的大小取决于其偏导数,因此“学习速度较慢”实际上是说偏导数很小。
对$w,b$求导:
make $x=1, y=0$
$\frac{\partial C}{\partial w} = (a - y){\sigma}'(z)x = a{\sigma}'(z)$
$\frac{\partial C}{\partial w} = (a - y){\sigma}'(z) = a{\sigma}'(z)$
导数相当于sigmoid函数;从sigmoid函数曲线可以看出:y值越接近1,sigmoid函数曲线越平,导数越小。因此学习速度较慢。
交叉熵函数
$C = - \frac{1}{n} \sum_{x}[y\ln a + (1-y)\ln (1-a) ]$
以上公式有几个特点:
- C > 0. $\sum$里各项都是负数
- 如果输出值越接近预期值,交叉熵的值接近0
证明2,作者假设期望值为1或者0
简单来说,交叉熵永远是正数;计算结果越准确时,交叉熵越接近0. 这些都是损失函数需要具备的。除此之外,还能避免学习速度下降的问题:
对$w$求偏导数:
实在跟不下来求导过程;只能看结果了
$\frac{\partial C}{\partial wj} = \frac{1}{n}\sum{x}x_j(\sigma (z)-y)$
作者说这是一个优美的表达。说明了$w$学习的速度是由 $\sigma(z)-y$决定的,也就是说是由 $error$决定的。错误越大,学习速度越快。
同理,对$b$求偏导,
$\frac{\partial C}{\partial b} = \frac{1}{n}\sum_{x}(\sigma (z)-y)$
交叉熵Quick Summary For Homework
简单来说,加了Sigmoid激活函数后,如果使用差值平方作损失函数,当输出值离预期值越远,也就是说$error$越大时,学习速度越慢;而交叉熵做损失函数的话,$error$越大,学习速度越快。因此交叉熵的效果更好。
展开说明,学习速度是由$w,b$的偏导数决定的。根据作者的求导:
差值平方偏导数
$\frac{\partial C}{\partial w} = (a - y){\sigma}'(z)x = a{\sigma}'(z)$
$\frac{\partial C}{\partial w} = (a - y){\sigma}'(z) = a{\sigma}'(z)$
make $x=1, y=0$
导数相当于sigmoid函数;从sigmoid函数曲线可以看出:y值越接近1,sigmoid函数曲线越平,导数越小。因此学习速度较慢。
交叉熵偏导数
$\frac{\partial C}{\partial wj} = \frac{1}{n}\sum{x}x_j(\sigma (z)-y)$
$\frac{\partial C}{\partial b} = \frac{1}{n}\sum_{x}(\sigma (z)-y)$
作者说这是一个优美的表达。说明了$w,b$学习的速度是由 $\sigma(z)-y$决定的,也就是说是由 $error$决定的。错误越大,学习速度越快。
交叉熵部分的求导过程我实在是没办法Follow:-(,需要补习数学...
Change log
2017.11.4 创建