一、批量归一化
1、批量归一化(BatchNormalization)
-
对输入的标准化(应用在浅层模型)
处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。
标准化处理输入数据使各个特征的分布相近 -
批量归一化(应用在深度模型)
利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。
(1)对全连接层做批量归一化
位置:全连接层中的仿射变换和激活函数之间。
全连接:
批量归一化:
这⾥ϵ > 0是个很小的常数,保证分母大于0
(2)对卷积层做批量归⼀化
位置:卷积计算之后、应⽤激活函数之前。
如果卷积计算输出多个通道,我们需要对这些通道的输出分别做批量归一化,且每个通道都拥有独立的拉伸和偏移参数。
计算:对单通道,batchsize=m,卷积计算输出=pxq 对该通道中m×p×q个元素同时做批量归一化,使用相同的均值和方差。
(3)预测时的批量归⼀化
训练:以batch为单位,对每个batch计算均值和方差。
预测:用移动平均估算整个训练数据集的样本均值和方差。
2、残差网络(ResNet)
深度学习的问题:深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会招致网络收敛变得更慢,准确率也变得更差。
(1)残差块(Residual Block)
恒等映射:
左边:f(x)=x
右边:f(x)-x=0 (易于捕捉恒等映射的细微波动)
在残差块中,输⼊可通过跨层的数据线路更快 地向前传播。
(2)ResNet模型
卷积(64,7x7,3)
批量一体化
最大池化(3x3,2)
残差块x4 (通过步幅为2的残差块在每个模块之间减小高和宽)
全局平均池化
全连接
3、稠密连接网络(DenseNet)
(1)主要构建模块:
稠密块(dense block): 定义了输入和输出是如何连结的。
过渡层(transition layer):用来控制通道数,使之不过大。
(2)过渡层
1×1卷积层:来减小通道数
步幅为2的平均池化层:减半高和宽
(3)DenseNet模型
二、凸优化
1、优化与估计
尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同。
优化方法目标:训练集损失函数值
深度学习目标:测试集损失函数值(泛化性)
2、优化在深度学习中的挑战
- 局部最小值
- 鞍点
- 梯度消失
(1)局部最小值
(2)鞍点
鞍点是对所有自变量一阶偏导数都为0,且Hessian矩阵特征值有正有负的点
(3)梯度消失
3、凸性 (Convexity)(凸函数)
(1)函数
(2)Jensen 不等式
(3)凸函数性质
- 无局部极小值
- 与凸集的关系
- 二阶条件
ⅰ)无局部极小值
凸函数无局部最小值
ⅱ)与凸集的关系
对于凸函数f(x),定义集合
则集合Sb为凸集
ⅲ)二阶条件
是凸函数
4、限制条件
解决限制条件的方法
ⅰ)拉格朗日乘子法
ⅱ)与凸集的关系
ⅲ)投影
三、梯度下降
1、梯度下降
(1)一维梯度下降
沿梯度反方向移动自变量可以减小函数值
(2)多维梯度下降
(3)自适应方法
ⅰ)牛顿法
调整学习率
ⅱ)收敛性分析
ⅲ)预处理 (Heissan阵辅助梯度下降)
ⅳ)梯度下降与线性搜索(共轭梯度法)
2、随机梯度下降
(1)随机梯度下降参数更新
对于有n个样本对训练数据集,设 fi(x) 是第 i 个样本的损失函数, 则目标函数为:
总的目标函数的损失函数=i个样本损失函数的均值
梯度为:
总的目标函数的梯度=i个样本梯度的均值
随机梯度下降公式:
(2)动态学习率
这里有三种:
还有很多种动态更新方法
3、小批量随机梯度下降
梯度下降和随机梯度下降的折中方法,一次选取一部分样本,对样本梯度取均值,对参数更新。