批量归一化和残差网络
nn.BatchNorm2d()表示卷积层的BN,参数为通道数。nn.BatchNorm1d()表示全连接层的BN,参数为输出神经元个数
BN层:
卷积层的BN位于卷积计算之后,激活函数之前。
拉伸参数和偏移参数为可学习参数。
预测时用移动平均估算整个训练数据集的样本均值和方差。
BN层能使整个神经网络在各层的中间输出的数值更稳定。
深度学习的问题:深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会招致网络收敛变得更慢,准确率也变得更差。
ResNet:
残差网络由多个残差块组成。
在残差块中,输⼊可通过跨层的数据线路更快地向前传播。
网络达到一定深度后再一味地增加层数反而会招致网络收敛变得更慢,准确率也变得更差。
较普通网络而言,残差网络在网络较深时能更好的收敛。
稠密连接网络过渡层中,1*1卷积层的主要作用是:减小通道数
输出通道数=输入通道数+卷积层个数*卷积输出通道数
凸优化
优化方法的目标是最小化训练集损失函数值,深度学习的目标是最小化测试集损失函数值。
优化在深度学习中的挑战:局部最小值、鞍点、梯度消失。
鞍点是对所有自变量一阶偏导数都为0,且Hessian矩阵特征值有正有负的点。
假设A和B都是凸集合,那A和B的交集是凸集合。
有限制条件的优化问题可以用什么方法解决:拉格朗日乘子法、添加惩罚项、投影法。
梯度下降
梯度下降:梯度下降是沿着梯度的反方向移动自变量从而减小函数值的;局部极小值是梯度下降算法面临的一个挑战;学习率如果过小,会导致梯度下降每次迭代时的函数值下降的幅度很小,收敛速度很慢,需要多次迭代;如果过大,会导致梯度增加,反而出现了发散的情况。
牛顿法:
牛顿法相比梯度下降的一个优势在于:梯度下降“步幅”的确定比较困难,而牛顿法相当于可以通过Hessian矩阵来调整“步幅”。
牛顿法需要计算Hessian矩阵的逆,计算量比较大。
在牛顿法中,局部极小值也可以通过调整学习率来解决。
随机梯度下降的时间复杂度是:O(1)
动态学习率:在最开始学习率设计比较大,加速收敛;学习率可以设计为指数衰减或多项式衰减;在优化进行一段时间后可以适当减小学习率来避免振荡;动态学习率可以随着迭代次数增加而减小学习率。
优化算法进阶
word2vec
词嵌入进阶
文本分类
数据增强
图像增广:缓解过拟合、增加模型泛化能力、通过旋转/翻转等方式可以降低对某些属性的依赖。
图像增广的方法:翻转图片、加入噪点、调整亮度
orchvision.transforms.RandomHorizontalFlip()函数的作用是:左右翻转图片
模型微调
假设我们将源模型的输出层改成输出大小为目标数据集类别个数的输出层,则对于这个新的输出层如何初始化:随机初始化参数
假设我们将源模型的输出层改成输出大小为目标数据集类别个数的输出层,在训练过程中对输出层使用较大的学习率,对其他层使用较小的学习率。