本节以问题的形式来自问自答
目录
1.1 BatchNormalization(批归一化,简称BN)
一 批量归一化和残差网络
1.1 BatchNormalization(批归一化,简称BN)
论文《Batch normalization: Accelerating deep network training by reducing internal covariate shift》
-
什么是归一化?为什么这样做?
归一化,即得到均值为0,标准差为1的数据,也就是常说的z-score。这样做的好处是,标准化处理使各个特征的分布相近,这往往更容易训练出有效的模型。
-
什么是BN?
利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。
(ps.BN是为了应对深度模型的挑战提出的,因为在浅层模型中,只对input进行标准化操作就足够有效了,随着参数更新,在靠近输出层的输出较难出现剧烈变化)
-
如何对网络进行BN操作?
①对全连接层做批归一化
BN的相对顺序为:输入-仿射变换-BN-激活函数
BN的具体步骤为:
②对卷积层做批归一化(nn.BatchNorm2d(out_channel))
对卷积层来说,批量归一化发生在卷积计算之后、应用激活函数之前。
如果卷积计算输出多个通 道,我们需要对这些通道的输出分别做批量归一化,且每个通道都拥有独立的拉伸和偏移参数, 并均为标量。
设小批量中有m个样本。在单个通道上,假设卷积计算输出的高和宽分别为p和q。我 们需要对该通道中m × p × q个元素同时做批量归一化。对这些元素做标准化计算时,我们使用相 同的均值和方差,即该通道中m × p × q个元素的均值和方差。
③预测时的批归一化
训练模式和预测模型的计算不同(dropout也是这样)。
训练模式下,如上所述,用batch中样本的均值和方差,batch size较大时,计算更为准确。
预测模式下,我们希望对于任意输入都有确定的输出,一种常用的方法是 通过移动平均估算整个训练数据集的样本均值和方差,并在预测时使用它们得到确定的输出。
BN所在的顺序总结如下:
-
请用代码实现一下BN
1.2 ResNet(残差网络)
何恺明等人提出了残差网络(ResNet),在2015年的ImageNet图像识别挑战赛夺魁,并深刻影响了后来的深度神经网络的设计。
核心设计结构如下:
左侧是普通的神经网络,右侧是残差网络。顾名思义,残差网络拟合的是残差。
残差块通过跨层的数据通道从而能够训练出有效的深度神经网络。
对于比较深的网络,ResNet论文中介绍了一个“瓶颈”架构来降低模型复杂度
1.3 DenseNet(稠密连接网络)
左侧是ResNet,右侧是DenseNet
DenseNet包括稠密块(dense block)和过渡层(transition layer),前者定义了输 入和输出是如何连结的,后者则用来控制通道数,使之不过大。
稠密块:输出通道数=输入通道数+卷积层个数*卷积输出通道数
过渡层:由于每个稠密块都会带来通道数的增加,使用过多则会带来过于复杂的模型。过渡层用来控制模 型复杂度。它通过1 × 1卷积层来减小通道数,并使用步幅为2的平均池化层减半高和宽,从而进 一步降低模型复杂度。
二 凸优化
几个核心概念与问题如下,不做具体讲解。
凸集:任意两点连线仍在集合内
凸函数:满足Jesen不等式
①无局部极小值,只有全局极小值(可证明,用Jesen不等式)
②与凸集的关系
③与二阶导数
④带约束的优化问题
拉格朗日乘子法(KKT条件):用于解决带约束的凸优化问题
加惩罚项:将约束条件变成惩罚项
投影
三 梯度下降
-
梯度下降方法解决优化问题有哪些挑战?
①局部极小值
②鞍点:
数学含义:Hessian矩阵
物理含义:在某些方向是极小值点,在另一些方向是极大值点
③梯度消失
-
为什么负梯度方向是下降最快的方向
-
请描述牛顿法
-
请描述共轭梯度法