上一篇,我们主要介绍了神经网络中几种常见的梯度下降优化算法,包括 Mini-Batch、Momentum、Nesterov Momentum、AdaGrad、RMSprop、Adam、Learning Rate Decay ,并对各自特点进行了说明和对比。本文将重点讲解初始化神经网络的一些技巧以及如何高效进行超参数调试。
网络输入标准化
我们知道,神经网络的输入层是训练样本的各个特征值,而不同特征值的数值范围可能不同。例如训练样本数据中输入层特征是二维的:$[x_1,x_2]$。$x_1$ 的数值范围是 [0, 0.01],$x_2$ 的数值范围是 [0, 100],彼此相差了 10000 倍。$x_1$ 与 $x_2$ 之间分布极不平衡,会造成训练得到的权重 $W$ 数值差别很大,参数 $b$ 也是一样。这样的后果会造成运行梯度下降算法时,振荡较大,轻则影响训练速度,重则导致模型无法正确优化,无法获得优质解。
怎么理解呢?下面用图解的方式来说明。
上图显示了损失函数 $J$ 与 $W$ 和 $b$ 的凸函数关系。左边两张图没有进行输入标准化,可见 $J$ 与 $W$ 和 $b$ 呈类似椭圆的形状,这是因为彼此幅值范围不同。根据上文