文章目录
一、批量归一化和残差网络
1.批量归一化
利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。
1.1 全连接层上的批量归一化
位置:全连接层中的仿射变换和激活函数之间。
简洁实现是BatchNorm1d(输出神经元个数)
1.2 卷积层上的批量归一化
位置:卷积计算之后、应⽤激活函数之前。
如果卷积计算输出多个通道,我们需要对这些通道的输出分别做批量归一化,且每个通道都拥有独立的拉伸和偏移参数。 计算:对单通道,batchsize=m,卷积计算输出=pxq 对该通道中m×p×q个元素同时做批量归一化,使用相同的均值和方差。
简洁实现是BatchNorm2d(输出通道数)
1.3 移动平均法
作用:更新均值和方差
例如:
# 更新移动平均的均值和方差
moving_mean = momentum * moving_mean + (1.0 - momentum) * mean
moving_var = momentum * moving_var + (1.0 - momentum) * var
2.残差网络
深度学习的问题:深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会招致网络收敛变得更慢,准确率也变得更差。
2.1 残差块(Residual Block)
在残差块中,输⼊可通过跨层的数据线路更快 地向前传播。
2.2 稠密连接网络(DenseNet)
主要构建模块:
1.稠密块(dense block): 定义了输入和输出是如何连结的。
稠密块最终输出通道的计算为:卷积层*输出通道数+输入通道数
2.过渡层(transition layer):用来控制通道数,使之不过大。
过渡层使用1X1卷积层来减小通道数、步幅为2的平均池化层:减半高和宽
二、凸优化
优化方法目标:训练集损失函数值
深度学习目标:测试集损失函数值
优化在深度学习中的挑战:
- 局部最小值
- 鞍点:对所有自变量一阶偏导数都为0,且Hessian矩阵特征值有正有负的点
- 梯度消失
三、梯度下降
沿梯度反方向移动自变量可以减小函数值
由于希望梯度下降过程中,下降的步幅可以是不同的,提出了自适应方法来自动调节学习率。
1.牛顿法
2.预处理 (Heissan阵辅助梯度下降)
3.梯度下降与线性搜索(共轭梯度法)
随机梯度下降:求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本来求梯度
小批量随机梯度下降(SGD):对m个样本,采用x个批量来迭代,x值可调整。