深度学习网络正则化与优化

批量归一化

在传统机器学习中,一个常见的问题的协变量偏移(Covariate Shift)。协变量是一个统计学概念,是可能影响预测结果的变量。在机器学习中,协变量可以看作是输入变量。一般的机器学习算法都要求输入变量在训练集和测试集上的分布是相似的。如果不满足这个要求,这些学习算法在测试集的表现会比较差。

在多层的神经网络中,中间某一层的输入是其前面网络的输出。因为前面网络的参数在每次迭代时也会被更新,而一旦这些参数变化会造成这一个中间层的输入也发生变化,其分布往往会和参数更新之前差异比较大。换句话说,从这一个中间层开始,之后的网络参数白学了,需要重新学习。这个中间层的深度很大时,这种现象就越明显。这种现象叫做内部协变量偏移(Internal Covariate Shift)。

为了解决这个问题,通过对每一层的输入进行归一化使其分布保存稳定。这种方法称为批量归一化方法(Batch Normalization)[Ioffe and Szegedy, 2015]。

归一化方法可以采用第6.2节中介绍的几种归一化方法。因为每一层都要进行归一化,所以要求归一化方法的速度要快。这样,PCA 白化的归一化方法就不太合适。为了提高归一化效率,这里使用标准归一化,对每一维特征都归一到标准正态分布。相当于每一层都进行一次数据预处理,从而加速收敛速度。

因为标准归一化会使得输入的取值集中的 0 附近,如果使用 sigmoid 型激活 函数时,这个取值区间刚好是接近线性变换的区间,减弱了神经网络的非线性性质。因此,为了使得归一化不对网络的表示能力造成负面影响,我们可以通过一个附加的缩放和平移变换改变取值区间。从最保守的角度考虑,可以通过来标准归一化的逆变换来使得归一化后的变量可以被还原为原来的值。

这里γk和βk分别代表缩放和平移的参数。当γk=√σ[xk],βk =μ[xk]时,yk

即为原始的 xk。

当训练完成时,用整个数据集上的均值 μk和方差 σk2来分别代替 μB,k和方差σ2B,k。

通过每一层的归一化,从而减少前面网络参数更新对后面网络输入带来的 内部协变量偏移问题,提高训练效率。

参数初始化

神经网络的训练过程中的参数学习是基于梯度下降法进行优化的。梯度下降法需要在开始训练时给每一个参数赋一个初始值。这个初始值的选取十分关键。在感知器和 logistic 回归的训练中,我们一般将参数全部初始化为 0。但是这在神经网络的训练中会存在一些问题。因为如果参数都为 0,在第一遍前向计算时,所有的隐层神经元的激活值都相同。这样会导致深层神经元没有区分性。这种现象也称为对称权重现象。

为了打破这个平衡,比较好的方式是对每个参数都随机初始化,这样使得不同神经元之间的区分性更好。

但是一个问题是如何选取随机初始化的区间呢?如果参数太小,会导致神经元的输入过小。经过多层之后信号就慢慢消失了。参数过小还会使得 sigmoid 型激活函数丢失非线性的能力。以 logistic 函数为例,在 0 附近基本上是近似线性的。这样多层神经网络的优势也就不存在了。如果参数取得太大,会导致输入状态过大。对于 sigmoid 型激活函数来说,激活值变得饱和,从而导致梯度接近于 0。

因此,如果要高质量地训练一个网络,给参数选取一个合适的初始化区间 是非常重要的。经常使用的初始化方法有以下几种:

Gaussian 初始化方法Gaussian 初始化方法是最简单的初始化方法,参数从 一个固定均值(比如 0)和固定方差(比如 0.01)的 Gaussian 分布进行随机初始化。

Xavier初始化方法 Glorot and Bengio [2010]提出一个初始化方法,参数可以在区间 [−r, r] 内采用均匀分布进行初始化。

这里 nl 是第 l 层神经元个数,nl−1 是第 l − 1 层神经元个数。

假设第 l 层的一个隐藏层神经元 zl,其接受前一层的 nl−1个神经元的输出 ai(l−1),i ∈ [1, n(l−1)],

为了避免初始化参数使得激活值变得饱和,我们需要尽量使得 zl 处于激 活函数的线性区间,也就是其绝对值比较小的值。这时,该神经元的激活值为 al=f(zl)≈zl。

假设 wil和 ai(l−1)都是相互独立,并且均值都为 0,则 a 的均值为

al的方差为

也就是说,输入信号的方差在经过该神经元后被放大或缩小了n(l−1)Var(wil)倍。 为了使得在经过多层网络后,信号不被过分放大或过分减弱,我们尽可能保持 每个神经元的输入和输出的方差一致。这样n(l−1)Var(wil)设为1比较合理,即

同理,为了使得在反向传播中,误差信号也不被放大或缩小,需要将 wil的方差保持为

作为折中,同时考虑信号在前向和反向传播中都不被放大或缩小,可以设置

假设随机变量 x 在区间 [a, b] 内均匀分布,则其方差为:

因此,若让wil∈ [−r,r],则r的取值为

作者:邱锡鹏 犀语科技首席科学家复旦大学计算机学院,副教授

主要研究方向:深度学习、自然语言处理、自动问答系统以及表示学习。在ACL、EMNLP、IJCAI等计算机学会A类期刊、会议上发表40余篇学术论文。开源自然语言处理工具FudanNLP项目负责人,主要开发者。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180119G0CX6Y00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券