卷积神经网络中残差网络ResNet以及批量归一化的相关知识

782 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第31天,点击查看活动详情

卷积神经网络中最常用的几种网络模型是 LeNet、AlexNet、VggNet、ResNet,那么本文主要说一下ResNet的相关知识,以及能够提高神经网络泛化能力的一种常用方法---批量归一化。

残差网络ResNet

1. 残差块

假设原始输入是 xx,希望学到的理想映射为 f(x)f(x),左图虚线框中的部分直接拟合出该映射 f(x)f(x),右图虚线框中的部分则需要拟合出残差映射 f(x)xf(x)-x

右图是ResNet的基础结构—残差块。在残差块中,输入可通过跨层数据线路更快地向前传播;同时残差映射可以更容易的学习到同一函数,例如将权重层中的参数近似为零。

image.png

2.网络结构

  • (1)ResNet沿用了VGG完整的3*3卷积层设计;
  • (2)残差块里首先是2个有着相同输出通道的3*3卷积层,每个卷积层后接一个 批量归一化层ReLU激活函数
  • (3)然后通过跨层次数据通路,跳过这两个卷积运算,将输入直接加在最后的ReLU激活函数前。这样的设计要求2个卷积层的输出与输入形状一样,从而可以相加;
  • (4)如果想改变通道数,需要引入一个额外的 1*1卷积层 ,以此将输入变换成需要的形状后再做相加运算。

注意:1*1卷积层作用:

  • 1)改变输出的通道数,可以减小参数量,加快训练;
  • 2)步幅1,无填充,输出形状和卷积层输出一样起到全连接层的作用,可以增加网络非线性拟合能力

ResNet网络结构如下:

image.png

批量归一化(Batch Normalization)

批量归一化(Batch Normalization)是神经网络的标准化方法/层,简称为 BN 。

1. 作用:可持续加速深层网络的收敛速度,可应用于单个可选层或所有层。

2. 原理:每次训练迭代中,首先归一化输入,即通过减去均值并除以其标准差。

3. 批量归一化BN根据以下表达式转换 xx:

image.png

其中,image.png是样本均值,image.png是小批量image.png的样本标准差。需要与其他模型参数一起学习的参数:拉伸参数image.png和 偏移参数image.png,它们的形状与 xx 相同。

在形式上看,image.pngimage.png的计算如下所示:

image.png

4. 批量归一化层在 全连接层 和 卷积层 的不同实现

1)全连接层

批量归一化置于全连接层中的仿射变换和激活函数之间,输出如下:

image.png

2)卷积层

在卷积层之后和非线性激活函数之前应用批量归一化。当卷积有多个输出通道时,我们需要对这些通道的每个输出执行批量归一化,每个通道都有自己的拉伸(scale)和偏移(shift)参数,这两个参数都是标量。

5. 预测过程中的批量归一化

批量归一化在训练模式和预测模式下的行为通常不同。将训练好的模型用于预测时,不需要再向样本均值中添加噪声以及在微批次上估计每个小批次产生的样本方差。
一种常用的方法是通过移动平均估算整个训练数据集的样本均值和方差,并在预测时使用它们得到确定的输出。