task6

批量归一化和残差网络

为什么要做标准化处理

深层神经网络中,中间某一层的输入是其之前的神经层的输出。因此,其之前的神经层的参数变化会导致其输入的分布发生较大的差异。利用随机梯度下降更新参数时,每次参数更新都会导致网络中间每一层的输入的分布发生改变。越深的层,其输入分布会改变的越明显。

内部协变量偏移(Internal Covariate Shift):每一层的参数在更新过程中,会改变下一层输入的分布,神经网络层数越多,表现得越明显,(就比如高层大厦底部发生了微小偏移,楼层越高,偏移越严重。)

为了解决内部协变量偏移问题,就要使得每一个神经层的输入的分布在训练过程要保持一致。

深度学习——逐层归一化(BN,LN)

既然有了上面两个问题,那我们的解决思路就很简单,一方面,我们提出的normalization方法要能够简化计算过程;另一方面又需要经过规范化处理后让数据尽可能保留原始的表达能力。于是就有了简化+改进版的白化——Batch Normalization。

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

另一个问题,既然白化操作减弱了网络中每一层输入数据表达能力,那我就再加个线性变换操作,让这些数据再能够尽可能恢复本身的表达能力就好了。

因此,基于上面两个解决问题的思路,作者提出了Batch Normalization,下一部分来具体讲解这个算法步骤。

Batch Normalization(BN,批量归一化)

卷积层做批量归一化

位置:卷积计算之后、应⽤激活函数之前。

如果卷积计算输出多个通道,我们需要对这些通道的输出分别做批量归一化,且每个通道都拥有独立的拉伸和偏移参数。 计算:对单通道,batchsize=m,卷积计算输出=pxq 对该通道中m×p×q个元素同时做批量归一化,使用相同的均值和方差。

ResNet

详解残差网络

残差块(Residual Block)

恒等映射:
左边:f(x)=x;
右边:f(x)-x=0 (易于捕捉恒等映射的细微波动)

image

评论区

1.做完batach nornamlization后为何又拉伸/偏移?
2.bn有理论证明效果为何好?
我简述下我的理解,顺便梳理出BN提出的前因后果,算是对于两个问题的统一回答。
不一定对,欢迎大家讨论。
机器学习模型中对输入进行的z-scoer标准化
(处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。)
标准化处理输入数据使各个特征的分布相近,尽可能消除量纲和数据波动带来的影响。
从而能让模型cover住更多情况,获得性能提升。
借鉴这个思想,各种深度学习CNN模型也开始对输入图像进行类似的标准化。
然而对于深度模型来说,仅仅是对输入进行标准化是不够的,因为模型的非线性拟合能力实在太强了。
输入可能只发生比较微弱的变化,就会导致中间的输出的取值不太稳定,波动比较剧烈。
因此
Google的大佬就提出了BN这个想法,《Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift》,动机是,中间的输出层是否可以进行标准化?
对中间层进行标准化面临的第一个问题就是,你无法像对输入进行标准化一样上来就把全局的均值和方差都计算出来。因为随着一个batch一个batch的训练,中间层的输出在不断发生变化,因此批量归一化的具体做法是:
利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。
回到我们关心的问题,按照上面的操作,我们相当于对中间层也进行了z-score的标准化。
但是如此复杂的拟合函数,我们显然无法做出均值0标准差1的标准化结果就是最优的这样的假设,因此不妨加入两个可学习的参数再对标准化后的结果进行拉伸/偏移。
BN为何效果好?我理解主要有两点。
一个是前面提到的标准化带来的泛化性能的提升。
还有一点就是它捎带着一定程度缓解了梯度消失的问题,因为它把进到激活函数前的输入X拉回了梯度变化比较显著的区域。

凸优化

优化与深度学习的区别

尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同。

  • 优化方法目标:训练集损失函数值
  • 深度学习目标:测试集损失函数值(泛化性)

Hessian Matrix

有好几种译法,海森/黑森矩阵等等。海森矩阵与最优化问题的联系如下:

黑塞矩阵(海森矩阵,Hessian Matrix)与牛顿法最优化

鞍点是对所有自变量一阶偏导数都为0,且Hessian矩阵特征值有正有负的点

Hessian矩阵判断:

  1. 如果是正定(都为正)矩阵,则临界点处是一个局部极小值
  2. 如果是负定(都为负)矩阵,则临界点处是一个局部极大值
  3. 如果是不定(有正有负)矩阵,则临界点处不是极值(鞍点)

Jensen不等式

函数值的期望大于期望的函数值

\sum_{i} \alpha_{i} f\left(x_{i}\right) \geq f\left(\sum_{i} \alpha_{i} x_{i}\right) \text { and } E_{x}[f(x)] \geq f\left(E_{x}[x]\right)

有限制条件问题的最优化

  • 拉格朗日乘子法
  • 惩罚项
  • 投影

梯度下降

共轭梯度法

梯度下降法和共轭梯度法有何异同?

推荐回答一,回答二可以用来理解原理

动态学习率

深度学习: 学习率 (learning rate)

作业题

梯度下降:时间复杂度O(n)、样本量N

随机梯度下降:时间复杂度O(1)、样本量1

小批量随机梯度下降:1<样本量

你可能感兴趣的:(task6)