《图解深度学习》学习笔记(五)

第六章 提高泛化能力的方法

前情回顾:

  1. 训练样本必不可少;
  2. 预处理后的数据更容易训练;
  3. 改进后的激活函数和训练方法有助于提高神经网络的泛化能力。

本章将详细介绍这些方法。

一、训练样本

数据增强(data augmentation)

1、ImageNet数据集

ImageNet数据集中的类别按照层级结构分布:参照了自然语言处理领域的层级结构词典WordNet。每个大类下面又细分好多小类。不同类别下的样本图像的外观和形状也多种多样,拍摄环境、拍摄角度以及形状也存在差异。其卓越之处在于为图像添加了类别注释信息,同时添加了物体的位置信息(矩形框),所以其不仅可以用于物体识别,还可以作为物体检测的数据集来使用。

ImageNet大规模视觉识别挑战赛(ImageNet Large Scale Visual Recognition Callenge, ILSVRC)使用的就是ImageNet数据集。ILSVRC使用了ImageNet的一部分数据,包含1000个类别,每个类别选取了约1000张图像,总计有120万张训练图像。使用这些样本训练后的卷积神经网络具有较高的泛化能力,所以也有人提出把该网络参数作为神经网络的初始值进行网络训练。(预训练模型。)

2、Places数据集

Places数据集包含多种场景,例如厨房和卧室等室内场景图像,港口和山川等室外场景图像,以及交通工具和建筑物等场景图像。风景图像。

3、数据增强

所谓数据增强:就是通过对样本图像进行平移旋转或者镜像翻转等方式进行变换,来得到新的样本。除此之外,变换方式还包括几何变换对比度变换颜色变换添加随机噪声以及图像模糊等。

对于手写字符识别等样本会产生形状变化的情况,可以先改变其形状(变形)再进行数据增强。变形方法可以使用弹性变换算法(elastic distortion)。弹性变换算法可以使用双线性插值(bilinear interpolation)双三次插值()等插值法。

二、预处理

当样本类别内差异较大时,为了减小样本差异,会对样本数据进行一些预处理:

  • 均值减法
  • 均一化
  • 白化

1、均值减法

大规模的物体识别经常使用均值减法进行预处理。

  1. 首先计算所有训练样本的均值图像\bar{x} = \frac{1}{N}\sum_{n=1}^{N}x_{n}
  2. 然后训练样本和均值图像相减可得到差分图像\tilde{x},将其作为样本数据输入网络\tilde{x} = x - \bar{x}。这样一来,各数据的平均值就会变为零,图像整体的亮度变化就能得到抑制

2、均一化

均一化(normalization)是为样本的均值和方差添加约束的一种预处理方法。均值减法是使得各数据的均值为零,而均一化是将方差设为1以减少样本数据的波动

  1. 首先计算各数据的标准差\sigma_{i} = \sqrt{\frac{1}{N}\sum_{n=1}^{N}(x_{ni}-\bar{x_{i}})}
  2. 然后对样本图像进行均值减法后,再除以标准差x_{ni} = \frac{\bar{x}_{ni}}{\sigma_{i}}
  3. 这样就能得到均值为0、方差为1的标准化数据。

和只进行均值减法时相比,均一化处理后的图像之间亮度差异更小。均一化处理后,得到相同亮度的图像!

3、白化

白化(whitening)是一种消除数据间相关性的方法。经过白化处理后,数据之间相关性较低,图像边缘增强

  1. 首先进行均值减法,使得数据均值为零,得到的图像用\tilde{x} = x - \bar{x}表示。
  2. 然后同样处理所有训练样本,使其均值为零,记作X = [x_{1}, x_{2},..., x_{N}]
  3. 白化处理就是进行如下所示的线性变换。Y = WX。变换矩阵W满足下述关系。W = W^{T},这里的W^{T}是W的转置矩阵,称为ZCA(Zero-phase Componet Analysis, 零相位成分分析)白化

通过协方差矩阵可以计算数据间的相关性。这里设训练样本的协方差矩阵如下所示:

截图中,最后的一句话:

这样就可以消除直流分量相关性较高的像素的信息,只保留边缘等相关性较低的像素。像这样提取图像特征,能够提高图像识别性能。

图像处理后物体像浮雕一样。

三、激活函数

1、激活函数的种类

sigmoid函数是神经网络中最常用的激活函数。在深度学习领域,自从提出ReLU函数后,人们陆续提出了一些新的激活函数或ReLU的衍生函数:

  • maxout
  • Leaky ReLU
  • Parametric ReLU(PReLU)
  • Randomized leaky Rectified Linear Units(RReLU)

2、maxout

maxout是由生成式对抗网络(Generative Adversarial Networks, GANs)的提出者伊恩·古德菲洛等人提出的激活函数:对“输入x与其对应的连接权重w的乘积以及偏置之和”进行求和后的结果。由于这里是从k个单元输出值选取最大值作为单元的输出,所以maxout可以学习到单元之间的关系。maxout激活函数还可以理解为一种分段线性函数近似任意凸函数。在卷积层使用maxout激活函数时,从多个特征图相同位置选取最大值作为最后的特征图,可以看做是对特征图的缩小处理

maxout激活函数是从特征图之间选取最大值作为最后的特征图,所以可以看作是减少了特征图个数。

3、从ReLU衍生的激活函数

ReLU激活函数时一个非线性函数,如果输入小于0则输出0,如果大于等于0则输出该值。为了在输入小于0时能够输出负值,人们提出了Leaky ReLU、PReLU和RReLU等激活函数。这些函数的负数端斜率和正数端的不同。通过性能对比测试报告可知,几种函数的实现性能差异不大,不过RReLU的性能最优。

四、Dropout

Dropout是由辛顿等人提出的一种提高网络泛化能力的方法。过拟合指能够很好地拟合训练数据,却不能很好地拟合测试数据的现象。当处于过拟合状态时,神经网络就无法发挥其巨大的潜能。

所谓Dropout,是指在网络的训练过程中,按照一定的概率将一部分中间层的单元暂时从网络中丢弃,通过把该单元的输出设置为0,使其不工作,来避免过拟合。Dropout可用于训练包含全连接层的神经网络。神经网络的训练过程就是对每个Mini-Batch使用误差反向传播算法不断迭代调整各参数的值,而Dropout就是在每次迭代调整时,随机选取一部分单元将其输出设置为0。计算误差时原本是使用所有单元的输出值,但是由于有部分单元被丢弃,所以从结果来看,Dropout起到了与均一化方法类似的作用。但是,对被舍弃的单元进行误差反向传播计算时,仍要使用被丢弃之前的原始输出值。Dropout的概率通常会设置为50%,即单元输出值有50%的概率被设置为0。

利用训练好的网络进行识别时,需要输入样本并进行正向传播,此时进行过Dropout处理的层,其输出值需要在原始输出的基础上乘以训练时使用的Dropout概率。虽然训练时网络通过Dropout舍弃了一定概率的单元,但是在识别时仍要使用所有单元。所以,有输出值的单元个数会增加Dropout概率的倒数倍。 由于单元之间通过权重系数相连接,所以这里还需要乘以Dropout的概率。像这样对网络进行参数约束后仍然能训练出合格的网络,这就达到了抑制过拟合的目的。

训练时,有些单元可以不用,但是计算反向误差时要用。而且测试时也要用,同时必须要乘以Dropout的概率。

五、DropConnect

和Dropout一样,DropConnect也是通过舍弃一部分单元来防止过拟合问题的方法。

  • Dropout是把单元的输出值设置为0;
  • DropConnect是把一部分连接权重设置为0.

 DropConnect虽然好,但是训练难度更大,因为对随机数的依赖太强。所以Dropout使用更广泛。

六、小结

提高深度学习泛化能力的方法:

  1. 收集更多的训练样本。
  2. 预处理抑制样本各类别内的变动。
  3. Dropout和DropConnect。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值