批量归一化和残差网络
一、批量归一化(BatchNormalization)
对输入的标准化(浅层模型):
处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。
标准化处理输入数据使各个特征的分布相近
批量归一化(深度模型):
利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。
1.对全连接层做批量归一化
位置:全连接层中的仿射变换和激活函数之间。
2.对卷积层做批量归⼀化
位置:卷积计算之后、应⽤激活函数之前。
如果卷积计算输出多个通道,我们需要对这些通道的输出分别做批量归一化,且每个通道都拥有独立的拉伸和偏移参数。 计算:对单通道,batchsize=m,卷积计算输出=pxq 对该通道中m×p×q个元素同时做批量归一化,使用相同的均值和方差。
3.预测时的批量归⼀化
训练:以batch为单位,对每个batch计算均值和方差。
预测:用移动平均估算整个训练数据集的样本均值和方差。
二、残差网络(ResNet)
深度学习的问题:深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会招致网络收敛变得更慢,准确率也变得更差。
残差块(Residual Block)
恒等映射:
左边:f(x)=x
右边:f(x)-x=0 (易于捕捉恒等映射的细微波动)
凸优化
一、优化与估计
尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同。
优化方法目标:训练集损失函数值
深度学习目标:测试集损失函数值(泛化性
优化在深度学习中的挑战:
- 局部最小值
- 鞍点
- 梯度消失
多维变量的鞍点:
鞍点是对所有自变量一阶偏导数都为0,且Hessian矩阵特征值有正有负的点
有限制条件的优化问题用以下方法解决:
- 拉格朗日乘子法
- 添加惩罚项
- 投影法
梯度下降
一、一维梯度下降
证明:沿梯度反方向移动自变量可以减小函数值
局部极小值是梯度下降算法面临的一个挑战
二、牛顿法
牛顿法相比梯度下降的一个优势在于:梯度下降“步幅”的确定比较困难,而牛顿法相当于可以通过Hessian矩阵来调整“步幅”。
牛顿法需要计算Hessian矩阵的逆,计算量比较大。
在牛顿法中,局部极小值也可以通过调整学习率来解决。
三、动态学习率
在最开始学习率设计比较大,加速收敛
学习率可以设计为指数衰减或多项式衰减
在优化进行一段时间后可以适当减小学习率来避免振荡