2020-2-18 深度学习笔记8 - 深度学习中的优化4(优化策略和元算法-- 批标准化 / 坐标下降 / Polyak平均 / 监督预训练 /设计有助于优化的模 / 延拓法和课程学习)

本文深入探讨深度学习中的优化策略,包括批标准化(Batch Normalization)的作用,解决内部协变量偏移问题,以及优化算法如坐标下降、Polyak平均和监督预训练。批标准化通过标准化每个特征的分布,加速模型训练收敛。此外,文章还介绍了延拓法和课程学习作为优化模型的辅助手段。
摘要由CSDN通过智能技术生成

第八章 深度学习中的优化

官网
python实现代码

2020-2-15 深度学习笔记8 - 深度学习中的优化1(与纯优化区别-基于梯度下降,神经网络优化-下降到足够小即可)
2020-2-16 深度学习笔记8 - 深度学习中的优化2(基本算法-梯度下降/动量,参数初始化策略)
2020-2-17 深度学习笔记8 - 深度学习中的优化3(自适应学习率算法-AdaGrad / RMSProp / Adam,二阶近似方法-牛顿法 / 共轭梯度 / BFGS)

优化策略和元算法

元算法将不同的分类器组合起来,具体使用有多种形式,可以是不同算法的集成,也可以是不同算法在不同设置下的集成,还可以是数据集不同部分分配给不同分类器之后的集成。
例如:bagging, boosting, AdaBoost

许多优化技术并非真正的算法,而是一般化的模板,可以特定地产生算法,或是并入到很多不同的算法中。

1.批标准化(Batch Normalization)–自适应的重参数化的方法

normalizaiton让每个特征都有均值为0,方差为1的分布

批标准化 (Ioffe and Szegedy, 2015) 是优化深度神经网络中最激动人心的最新创新之一。实际上它并不是一个优化算法,而是一个自适应的重参数化的方法,试图解决训练非常深的模型的困难。

非常深的模型会涉及多个函数或层组合。在其他层不改变的假设下,梯度用于如何更新每一个参数。在实践中,我们同时更新所有层。当我们进行更新时,可能会发生一些意想不到的结果,这是因为许多组合在一起的函数同时改变时,计算更新的假设是其他函数保持不变。

【补充-为什么要标准化】
(以下摘自https://zhuanlan.zhihu.com/p/34879333)

随着训练的进行,网络中的参数也随着梯度下降在不停更新。

  • 一方面,当底层网络中参数发生微弱变化时,由于每一层中的线性变换与非线性激活映射,这些微弱变化随着网络层数的加深而被放大(类似蝴蝶效应);
  • 另一方面,参数的变化导致每一层的输入分布会发生改变,进而上层的网络需要不停地去适应这些分布变化,使得我们的模型训练变得困难。

上述这一现象叫做Internal Covariate Shift【内部协变量偏移】。Internal Covariate Shift一个较规范的定义为:在深层网络训练的过程中,由于网络中参数变化而引起内部结点数据分布发生变化的这一过程。

Internal Covariate Shift会带来什么问题呢?
(1)上层网络需要不停调整来适应输入数据分布的变化,导致网络学习速度的降低
梯度下降的过程会让每一层的参数发生变化,进而使得每一层的线性与非线性计算结果分布产生变化。后层网络就要不停地去适应这种分布变化,这个时候就会使得整个网络的学习速率过慢。

(2)网络的训练过程容易陷入梯度饱和区,减缓网络收敛速度
当我们在神经网络中采用饱和激活函数(saturated activation function)时,例如sigmoid,tanh激活函数,很容易使得模型训练陷入梯度饱和区(saturated regime)。

我们如何减缓Internal Covariate Shift?
要缓解ICS的问题,就要明白它产生的原因。
ICS产生的原因是由于参数更新带来的网络中每一层输入值分布的改变,并且随着网络层数的加深而变得更加严重,因此我们可以通过 固定每一层网络输入值的分布来对减缓ICS问题

(1)白化(Whitening)
白化(Whitening)是机器学习里面常用的一种规范化数据分布的方法,主要是PCA白化与ZCA白化。白化是对输入数据分布进行变换,进而达到以下两个目的:

  • 使得输入特征分布具有相同的均值与方差。其中PCA白化保证了所有特征分布均值为0,方差为1;而ZCA白化则保证了所有特征分布均值为0,方差相同。
  • 去除特征之间的相关性。

通过白化操作,我们可以减缓ICS的问题,进而固定了每一层网络输入分布,加速网络训练过程的收敛(LeCun et al.,1998b;Wiesler&Ney,2011)。

(2)Batch Normalization提出
既然白化可以解决这个问题,为什么我们还要提出别的解决办法?
当然是现有的方法具有一定的缺陷,白化主要有以下两个问题

  • 白化过程计算成本太高,并且在每一轮训练中的每一层我们都需要做如此高成本计算的白化操作。
  • 白化过程由于改变了网络每一层的分布,因而改变了网络层中本身数据的表达能力。底层网络学习到的参数信息会被白化操作丢失掉。

为解决上面两个问题,我们的思路很简单,

  • 一方面,我们提出的normalization方法要简化计算过程;
  • 另一方面又需要经过规范化处理后让数据尽可能保留原始的表达能力。

于是就有了简化+改进版的白化——Batch Normalization。

既然白化计算过程比较复杂,那我们就简化一点,比如我们可以尝试单独对每个特征进行normalizaiton就可以了,让每个特征都有均值为0,方差为1的分布就OK。

另一个问题,既然白化操作减弱了网络中每一层输入数据表达能力,那我就再加个线性变换操作,让这些数据再能够尽可能恢复本身的表达能力就好了。
在这里插入图片描述
图中可以看到共有8列,代表当前训练样本的batch中共有8个样本,每一行代表当前层神经元的一个节点,可以看到当前层共有4个神经元结点,即维度为4。我们可以看到,每行的数据分布都不同。

对于第一个神经元,我们求得 μ 1 = 1.65 \mu_{1}=1.65 μ1=1.65, σ 1 2 = 0.44 \sigma_{1}^{2}=0.44 σ12=0.44,对第一行数据进行normalize得到新的值[-0.98,-0.23,-0.68,-1.13,0.08,0.68,2.19,0.08],同理我们可以计算出其他输入维度归一化后的值。

计算过程如下:
(1+1.5+1.2+0.9+1.7+2.1+3.1+1.7)/8=1.65,均值mean
((1-1.65)2+(1.5-1.65)2+…+(1.7-1.65)2)/8=3.52/8=0.44,方差
0.44 \sqrt {0.44} 0.44 =0.66,标准差standard deviation(均方差)

归一化方法有2种,这里采用的是0均值标准化

  • min-max标准化(Min-Max Normalization)(线性函数归一化)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值