开始了解网络正则化与优化

网络正则化与优化

因为深度神经网络的表达能力很强,所以很容易产生过拟合。另外,大量的参数会导致训练比较慢。在训练深度神经网络时,同时也需要掌握一定的技巧。目前,人们在大量的实践中总结了一些经验技巧,可以从以下几个方面来 提高学习效率并得到一个好的网络模型:1)数据增强;2)数据预处理;3)网络参数初始化;4)正则化;5)超参数优化等。

数据增强

深层神经网络一般都需要大量的训练数据才能获得比较理想的结果。在数据量有限的情况下,可以通过数据增强(Data Augmentation)来增加数据量,提高模型鲁棒性,避免过拟合。目前,数据增强还主要应用在图像数据上,在文本等其它类型的数据还没有太好的方法。

图像数据的增强主要是通过算法对图像进行转变,引入噪声等方法来增加数据的多样性。增强的方法主要有几种:

• 旋转(Rotation):将图像按顺时针或逆时针方向随机旋转一定角度;

• 翻转(Flip):将图像沿水平或垂直方法随机翻转一定角度;

• 缩放(Zoom In/Out):将图像放大或缩小一定比例;

• 平移(Shift):将图像沿水平或垂直方法平移一定步长;

• 加噪声(Noise):加入随机噪声。

数据预处理

一般而言,原始的训练数据中,每一维特征的来源以及度量单位不同,会造成这些特征值的分布范围往往差异很大。当我们计算不同样本之间的欧式距离时,取值范围大的特征会起到主导作用。这样,对于基于相似度比较的机器学习方法(比如最近邻分类器),必须先对样本进行预处理,将各个维度的特征归一化到同一个取值区间,并且消除不同特征之间的相关性,才能获得比较理想的结果。虽然神经网络可以通过参数的调整来适应不同特征的取值范围,但是会导致训练效率比较低。

假设一个只有一层的网络 y = tanh(w1x1+ w2x2+ b),其中 x1∈ [0, 10], x2∈ [0,1]。之前我们提到tanh()的导数在区间[−2,2]上是敏感的,其余的导数 接近于0。因此,如果w1x1+ w2x2+ b过大或过小,都会导致梯度过小,难以 训练。为了提高训练效率,我们需要使w1x1+w2x2+b在[−2,2]区间,我们需要将w1设得小一点,比如在 [−0.1, 0.1] 之间。可以想象,如果数据维数很多时,我们很难这样精心去选择每一个参数。因此,如果每一个特征的取值范围都在相似的区间,比如 [0, 1] 或者 [−1, 1],我们就不太需要区别对待每一个参数,减少人工干预。

除了参数初始化之外,不同特征取值范围差异比较大时还会梯度下降法的搜索效率。图6.1给出了数据归一化对梯度的影响。其中,图6.1a为未归一化数据的等高线图。取值范围不同会造成在大多数位置上的梯度方向并不是最优的搜索方向。当使用梯度下降法寻求最优解时,会导致需要很多次迭代才能收敛。 如果我们把数据归一化为取值范围相同,如图6.1b所示,大部分位置的梯度方向近似于最优搜索方向。这样,在梯度下降求解时,每一步梯度的方向都基本指向最小值,训练效率会大大提高。

归一化的方法有很多种,比如之前我们介绍的 sigmoid 型函数等都可以将不同取值范围的特征挤压到一个比较受限的区间。这里,我们介绍几种在神经网络中经常使用的归一化方法。

标准归一化标准归一化也叫 z-score 归一化,来源于统计上的标准分数。将每 一个维特征都处理为符合标准正态分布(均值为 0,标准差为 1)。假设有 N 个

样本 , i = 1, · · · , N ,对于每一维特征 x,我们先计算它的均值和标准差:

然后,将特征 x(i)减去均值,并除以标准差,得到新的特征值 xˆ(i)

这里,σ 不能为 0。如果标准差为 0,说明这一维特征没有任务区分性,可以直接删掉。

在标准归一化之后,每一维特征都服从标准正态分布。

缩放归一化另外一种非常简单的归一化是通过缩放将特征取值范围归一到 [0,1]或[−1,1]之间:

其中,min(x) 和 max(x) 分别为这一维特征在所有样本上的最小值和最大值。 PCA 使用 PCA (Principal Component Analysis) 方法可以去除掉各个成分

之间的相关性。

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

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

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180112G03CZW00?refer=cp_1026

相关快讯

扫码关注云+社区