7.5 批量规范化
总起:批量规范化是一种加速深层网络收敛的有效方法
7.5.1 训练深层网络
一:使用批量规范层的必要性
1、在使用真实数据时,第一步是标准化输入特征,使其均值为0,方差位1
——使用批量规范层可以将参数的量级进行统一,以便于更好的跟优化器配合使用
2、在多层感知机或神经网络中,变量分布中的偏移,可能会阻碍网络的收敛
——使用批量规范层可以对学习率进行补偿
(偏移解释:中间层中的变量可能具有更广的变化范围,模型参数随着训练更新而变幻莫测)
3、深层网络复杂,容易过拟合
——使用批量规范层可以将输入正则化,降低深层神经网络的过拟合风险
二:批量规范化的原理:
1、在每次训练迭代中,首先根据当前小批量进行规范化输入,即减去其均值并除以其标准差
2、在[1]的基础上再运用比例系数和比例偏移
3、由于单位方差是一个主观选择,所以包含拉伸参数(Gamma)和偏移参数(Beta)
4、在方差估计值中添加一个(epsilon),保证了永远不会尝试除以0
5、以上两个估计值通过使用均值和方差的噪声来抵消缩放效应
三:批量规范化特点以及注意事项
1、批量规范化是基于当前小批量进行处理的(小批量大小不能为1,否则隐藏单元将会为0)
2、只用使用足够大小的小批量,批量规范化这种方法才是稳定有效的
(在使用规范化批量方法时,批量大小的选择很重要)
3、批量规范化可以运用于单个层,也可以运用于所有层
4、拉伸参数(Gamma)和偏移参数(Beta)是需要和其他模型参数一起学习的参数
5、批量规范化最适合解决批量大小为50-100的问题
6、批量规范层在[通过小批量统计数据规范化]和[通过数据集统计规范化]中功能不同
6.1 在第一种模式下,只能根据小批量的均值和方差不断训练模型
6.2 在第二种模式下,可以根据数据集精确计算批量规范化所需要的均值和方差
四、名词解释以及备注
1、缩放效应:当特征的取值范围发生变化时,模型的性能也发生变化
[解释:在几个特征中,其中一个特征的取值范围很大,而其他的特征取值范围很小
,那么那个取值范围大的特征将会对损失函数影响更大,导致模型对这一特征更敏
感,忽略其他特征的作用,从而影响模型的泛化能力]
2、优化中的各种噪声源通常会导致很快的训练和较少的过拟合[尚未理论证实]
7.5.2 批量规范化层
一:和其他的层之间的关键区别
批量规范化在完整的小批量上执行,不能忽略批量大小
二:在全连接层的实施策略
1、批量规范化层置于全连接层的仿射变换和激活函数之间
2、先进行权重和偏置参数的计算,然后再进行再进行批量规范化,再执行激活函数
三:在卷积层中的实施策略
1、批量规范化运用在卷积层和非线形激活函数之间
2、在有多个输出通道时,需要对“每个”输出执行批量规范化,每个通道有其自己的拉伸参数和偏移参数
3、在计算均值和方差时,会收集所有空间的值
4、在[3]的基础上,在所有通道中,运用相同的均值和方差,以便于在每个空间位置对值进行规范化
四:在预测过程中的实施策略
1、在训练模式和预测模式下,批量规范化的行为/功能不同
2、在预测模式下,移动平均估算整个训练集的样本均值和方差,并在预测时用他们得到确定输出。
7.5.6 争议
1、批量规范化被认为可以使优化地形更加平滑
2、注意区分直觉和现象真实解释之间的区别
[现有解释:通过减少内部协变量偏移,但有如下两个问题:名次不够准确、区分不够清楚]
7.6 残差网络(ResNet)
总起:添加层会使网络更具表达力,为取得质的突破,需要一些数学知识
7.6.1 函数类
一:现存状况
1、对于非嵌套函数类别,较复杂的函数不能都保证更接近“真”函数
2、对于嵌套函数类别,较复杂的函数会更接近“真”函数
3、只有当较复杂的函数类包含较小的函数类时,才能确保提升他们的性能
4、理想映射函数:恒等函数 F(x)=x
二:ResNet核心思想
每个附加层都应该更容易包含原始函数作为其元素之一
[在神经网络中引入附加层时,应尽可能保留原始函数的特征和性能,以确保网络的性能和稳定性]
7.6.2 残差块
一:概念
1、残差映射:F(x)-x,在现实中,残差映射更加利于优化
——不需要从原始输入中去学习,而是学习输入和输出之间的差异
2、理想映射函数F(x)接近恒等函数时,残差映射也更易于捕获恒等函数的细微波动
——输入和输出差异很小,残差映射可以更好的学习和表示这些差异,使网络更加准确的逼近恒等函数
3、在残差块中,输入可通过跨层数据通路更快的向前传播
——参差块中的跨层连接可以使得前向传播的信息流动更加直接和高效
二:原理(默认2个卷积层)
在残差块中,有两个有相同输出通道数的卷积层,每个卷积层后接一个批量规范化层和ReLU激活函数,
然后通过跨层数据通道,跳过这2个卷积运算,将输入直接加在最后的ReLU激活函数前
三:特点以及注意点
1、在原始的参差块中,2个卷积层的输入和输出要求形状相同
2、如果想要改变通道数,则需要另外增加一个额外的1*1的卷积层
3、在[2]的情况下,可以通过1*1的卷积层,进行高度和宽度的改变(减半操作)
7.6.3 ResNet模型
一:和GoogLeNet的区别
1、ResNet的每个卷积层增加了批量规范化层
2、架构更简单,修改更方便
二:ResNet结构
1、使用4个残差块组成的模块,每个模块使用若干输出通道相同的残差块
2、第一个模块的通道数同输入通道数一致
3、第一个模块已经使用了步幅为2的最大汇聚层,无需通道数翻倍和高度宽度减半
4、之后的每个模块在第一个残差块里将上一个模块的通道数翻倍,并将高度宽度减半
7.7 稠密连接网络(DenseNet)
总起:稠密连接网络是参差网络的某种程度上的逻辑扩展
7.7.1 从ResNet到DenseNet
一:关键区别以及相关基础
1、DenseNet输出是连接,而不是ResNet的简单相加
2、执行从x到其展开式的映射,将这些展开式结合到多层感知机中,再减少特征数量,实现方式:连接
3、DenseNet的相关数学基础为泰勒展开式
4、稠密网络的两大组成部分:稠密块(dense block)和过渡层(transition layer)
5、稠密块用于定义如何连接输入和输出、过渡层控制通道数
7.7.2 稠密块体
一:相关基础
1、一个稠密块由多个卷积块组成,每个卷积块使用相同数量的输出通道
2、在前向传播中,每个卷积块的输入和输出在通道维度上连接
3、卷积块的通道数控制了输出通道数相对于输入通道数的增长程度,因此也称为增长率
[得到输出通道数 = 输入通道数 + 输出通道数*DenseBlock数量]
7.7.3 过渡层
一:相关基础
1、过渡层可以用来控制模型的复杂度
2、使用1*1卷积层可以减少通道数,并使用步幅为2的平均汇聚层减半高度和宽度
7.7.4 DenseNet模型
一:与ResNet的相似点和架构
1、DenseNet和ResNet都使用一样的单卷积层和最大汇聚层
2、DenseNet使用4个稠密块
3、在稠密块中,可以设置,使用多少卷积层
4、在每个稠密块中的每个卷积层中,可以设置通道数(增长率)
5、在模块之间,DenseNet使用过渡层减半高度和宽度并减半通道数
6、与ResNet相似,最后连接全局汇聚层和全连接层来输出结果