1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai
3.4 归一化[正则化]网络的激活函数 Normalizing activations in a network
在DL兴起后,最重要的一个思想是它的一种算法,叫做Batch归一化,由Sergey loffe和Christian Szegedy两位研究者创造。
Batch归一化会使你的参数搜索问题变得很容易,使NN对超参数的选择更加稳定,超参数的范围会更加庞大,工作效果也很好,也会使你的训练更加容易,甚至是深层网络。让我们来看看Batch归一化是怎么起作用的吧。
1. 归一化逻辑回归输入特征
如上图,逻辑回归的归一化例子。
在《改善深层NN-w1 深度学习的实用层面(1.9 归一化输入(特征)》已经学习过
当训练一个模型,比如逻辑回归时,归一化输入特征可以加快学习过程。你
- 计算了平均值, μ = 1 m ∑ i = 1 m x ( i ) μ=\frac 1m\sum_{i=1}^mx^{(i)} μ=m1∑i=1mx(i)
- 再从训练集中减去平均值,X := x-μ
- 计算了方差, σ 2 = 1 m ∑ i = 1 m ( x ( i ) ) 2 σ^2=\frac 1m\sum_{i=1}^m(x^{(i)})^2 σ2=m1∑i=1m(x(i))2
- 接着根据方差归一化你的数据集,X /=σ**2。
同时,我们已经学习过,如何把学习问题的轮廓,从很长的东西,变成更圆的东西,更易于算法优化(不论从哪个位置开始,梯度下降法都能够更直接地找到最小值,你可以在梯度下降法中使用较大步长)。
2. batch归一化
那么更深的模型呢?
如上图。输入特征值 X X X,第一层激活值 a [ 1 ] a^{[1]} a[1],第二层激活值 a [ 2 ] a^{[2]} a[2]。
如果你想训练参数,比如 w [ 3 ] w^{[3]} w[3], b [ 3 ] b^{[3]} b[3],那归一化 a [ 2 ] a^{[2]} a[2]的平均值和方差岂不是很好?以便使 w [ 3 ] w^{[3]} w[3], b [ 3 ] b^{[3]} b[3]的训练更有效率。
在逻辑回归的例子中,我们看到了如何归一化 x 1 x_1 x1, x 2 x_2 x