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