11.5 训练神经网络的一些问题

神经网络的训练是一门艺术。除非建模过程遵从了某些特定准则,不然这个模型一般都有过多的参数,最优化问题是非凸的并且不稳定的,本节总结了这里一些重要的问题。

11.5.1 初始值

注意到如果权重接近于零,那么 S 函数(图 11.3)在这个运行区间上大致是线性的,因此神经网络模型退化成一个近似的线性模型(练习 11.2)。通常会选择零附近的随机值作为权重的初始值。因此模型初始时接近线性,然而随着权重的增加变得非线性。个体的单元会基于梯度方向在局部调整,只在需要的位置引入非线性。若使用零权重作为初始值,会产生零导数和完全对称性,算法无法更迭。若使用大权重作为初始值,通常会得出比较差的解。

11.5.2 过拟合

神经网络通常会有过多的权重,并且在 $R$ 的全局最小值处会是对数据的过拟合。也许是有意设计也许只是碰巧,在神经网络早期的发展中使用了早停规则来避免过拟合。其中缩短了模型的训练过程,在到达全局最低点之前停止。因为权重初始于一个高度正则化(线性)的解,所以早停的效果相当于将最终模型向线性模型的收缩。可以用一个验证集来决定早停的时机,因为之后预计验证误差会开始增加。

正则化的一个更直接的方法是 权重衰减(weight decay),可类比于线性模型中使用的岭回归(第 3.4.1 节)。在误差函数上添加一个惩罚项 $R(\theta)+\lambda J(\theta)$,惩罚项为:

$$J(\theta) = \sum_{km}\beta_{km}^2 + \sum_{m\ell}\alpha_{m\ell}^2 \tag{11.16}$$

并且其中的 $\lambda\geq 0$ 是一个调节参数。较大的 $\lambda$ 取值会更加将权重向零收缩;通常会用交叉验证来估计 $\lambda$ 的取值。惩罚项带来的影响就是简单地在相应的梯度表达式 11.13 中添加 $2\beta_{km}$ 和 $2\alpha_{m\ell}$ 项。也有其他形式的惩罚项,例如:

$$J(\theta) = \sum_{km} \frac{\beta_{km}^2}{1+\beta_{km}^2} + \sum_{m\ell} \frac{\alpha_{m\ell}^2}{1+\alpha_{m\ell}^2} \tag{11.17}$$

这称为 权重消除(weight elimination) 惩罚。它的作用是对较小的权重的收缩程度会高于式 11.16 的收缩程度。

**图 11.4**:第二章的混合模型例子上使用神经网络。上图没有使用权重衰减,对训练集过拟合。下图使用了权重衰减,达到了接近于贝叶斯错误率的结果(紫色虚线边界)。两者都使用了 softmax 激活函数和交叉熵误差。
图 11.4:第二章的混合模型例子上使用神经网络。上图没有使用权重衰减,对训练集过拟合。下图使用了权重衰减,达到了接近于贝叶斯错误率的结果(紫色虚线边界)。两者都使用了 softmax 激活函数和交叉熵误差。

图 11.4 以第二章中的混合模型1为例,展示了在训练一个有十个隐藏单元的神经网络时,没有权重衰减(上图)和存在权重衰减(下图)的结果。很显然权重衰减改善了预测效果。

**图 11.5**:图 11.4 中训练神经网络得出的估计权重的热图。显示颜色范围为从亮绿色(负值)到亮红色(正值)。
图 11.5:图 11.4 中训练神经网络得出的估计权重的热图。显示颜色范围为从亮绿色(负值)到亮红色(正值)。

图 11.5 展示了训练得出的估计权重的热图(灰色版本的热图称为辛顿图(Hinton2 diagram))。可见权重衰减在两层中都减弱了权重:得出的权重相对均等地分布在十个隐藏单元中。

11.5.3 输入变量的尺度

由于输入变量的尺度决定了底层权重的有效尺度,所以它可能对最终解的质量有很大的影响。最好在开始时就将所有的输入变量标准化为均值为零和标准差为一。这样保证了在正则化过程中对所有的输入变量进行同等的处理,并且可以为随机的初始权重选择一个有意义的区间。标准化输入变量后,通常在区间 $[-0.7, +0.7]$ 上取一个随机值作为所有权重的初始值。

11.5.4 隐藏单元和隐藏层的个数

一般来说,过多的隐藏单元要好于过少的隐藏单元。如果隐藏单元过少,模型可能没有足够的灵活性来捕捉数据中的非线性;如果隐藏单元过多,当合理的使用正则化后额外的权重会向零收缩。隐藏单元的个数一般在 5 到 100 的区间中,并应随着输入变量的增多和训练集的扩大而增加。最常见的做法是选择一个适当多的单元个数,然后带有正则化来训练模型,但如果使用了交叉验证来估计正则化参数,则可能不需要过大的单元个数。隐藏层的个数选择应取决于背景知识和试验。每一层都为回归或分类问题提取输入变量生成的特征。使用多个隐藏层可以在不同级别的解析度(resolution)上构建分层的特征。第 11.6 节会介绍一个有效利用多个层的例子。

11.5.5 多个极小值点

误差函数 $R(\theta)$ 是非凸的,可能有很多个局部极小值点。所以得出的最终解非常依赖于初始权重的选择。需要至少尝试多个随机的初始配置,然后选择给出最低(惩罚)误差的解。一个可能更好的方法是将这一组神经网络模型的预测平均值作为最终的结果(Ripley, 1996)。这个做法好于对权重的平均,因为模型的非线性会导致后者的平均方式可能产生不好的解。另一个方法是通过自助聚合(bagging),在多个随机打乱的训练集上对神经网络训练模型的预测值取平均。具体介绍见第 8.7 节


本节练习

练习 11.2

Consider a neural network for a quantitative outcome as in (11.5), using squared-error loss and identity output function gk (t) = t. Suppose that the weights αm from the input to hidden layer are nearly zero. Show that the resulting model is nearly linear in the inputs.


  1. 第 2.3 节。 ↩︎

  2. Geoffrey Everest Hinton ↩︎

上一页
下一页