批量归一化(BatchNormalization)
对输入的标准化(浅层模型)
- 处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。
-
批量归一化(深度模型)
利用小批量上的均值和标准差,不断调整神经网络中间输出
-
对全连接层做批量归一化
位置:全连接层中的仿射变换和激活函数之间。
全连接:
x=Wu+boutput=ϕ(x)
批量归一化:
output=ϕ(BN(x))
y(i)=BN(x(i))
μB←1m∑i=1mx(i),
σB2←1m∑i=1m(x(i)−μB)2,
x^(i)←x(i)−μBσB2+ϵ,
这⾥ϵ > 0是个很小的常数,保证分母大于0
y(i)←γ⊙x^(i)+β. 引入可学习参数:拉伸参数γ和偏移参数β。
如果卷积计算输出多个通道,我们需要对这些通道的输出分别做批量归一化,且每个通道都拥有独立的拉伸和偏移参数。
计算:对单通道,batchsize=m,卷积计算输出=pxq 对该通道中m×p×q个元素同时做批量归一化,使用相同的均值和方差。
预测时的批量归⼀化
训练:以batch为单位,对每个batch计算均值和方差。
-
残差网络(ResNet)
深度学习的问题:深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会招致网络收敛变得更慢,准确率也变得更差。
残差块(Residual Block)
恒等映射:
左边:f(x)=x
右边:f(x)-x=0 (易于捕捉恒等映射的细微波动)
在残差块中,输⼊可通过跨层的数据线路更快 地向前传播。ResNet模型
卷积(64,7x7,3)
批量一体化
最大池化(3x3,2)
残差块x4 (通过步幅为2的残差块在每个模块之间减小高和宽)
全局平均池化
全连接稠密连接网络(DenseNet)
主要构建模块:
稠密块(dense block): 定义了输入和输出是如何连结的
将ResNet中的相加改为cat
过渡层(transition layer):用来控制通道数,使之不过大
- 1X1 卷积层:来减小通道数
- 步幅为2的平均池化层:减半高和宽
