关于GoogLe net V2和V3的思考

前言

本周主要看了GoogLe net V2和V3两篇论文,有一些思考与大家分享。

Inception V2

BN批量标准化

V2最主要的贡献就是提出了BN层,而BN层在10年后的现在还在用,就可想而知这个层次有多经典了。
在这里插入图片描述
在这里插入图片描述
为什么要使用BN层?
深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。
当我们在神经网络中采用饱和激活函数(saturated activation function)时,例如sigmoid,tanh激活函数,很容易使得模型训练陷入梯度饱和区。
而BN层的使用就减少了上述现象。
BN层的原理:
在线性层或卷积层后,添加BN层,BN层对一个mini-batch中的均值,方差进行计算,然后对每一个元素进行标准化,再进行变换重构操作。
BN层不是简单的对网络的某一层数据做标准化,简单的标准化会对网络学习到的特征产生影响,比如网络中学习到的数据本来大部分分布在0的右边,经过RELU激活函数以后大部分会被激活,如果直接强制标准化,那么就会有大多数的数据无法激活了,BN引入了可学习参数γ、β,针对标准化后的值进行再一次的变换重构,这就是算法的关键之处,这两个参数被用在尺度缩放与偏移操作上,偏移和尺度为参数,通过训练来学习,目的是为了补偿网络的非线性表达能力。

BN层的优势:

  • 加快网络的训练和收敛的速度
  • 控制梯度爆炸,防止梯度消失
  • 可以使用大的学习率
  • 可以作为正则化器,防止过拟合
  • 可以用饱和激活函数

问题一:BN层的可学习参数的作用?

答:经过了解,可学习参数γ、β是网络模型自动学习的,神经网络会判断前面的标准化有没有起到优化作用,如果没有的话,就用这个变换重构操作抵消之前的标准化操作带来的影响。另一方面是要保证能有获得非线性的表达能力,变换重构可以让数据从线性区变换到非线性区,恢复模型的表达能力。

问题二:BN层放在激活函数之前还是之后?

答:在现在的实践中,通常放在激活函数之后,放在激活函数之前的做法主要是考虑到使用的是饱和激活函数,对数据标准化后再输入饱和激活函数,有助于缓解梯度衰减的问题,如果用的是不饱和激活函数如Relu,放在之前会大量扭曲本身的特征分布。当然这些主要是理论想法,BN放在之前还是之后还是依据个人所做实验的结果来确定的。

问题三:BN的劣势在哪里?

如果 Batch Size 太小,则 BN 效果明显下降。因为在小的 BatchSize 意味着数据样本少,因而得不到有效统计量,也就是说噪音太大。
对于有些像素级图片生成任务来说,BN 效果不佳;对于图片分类等任务,只要能够找出关键特征,就能正确分类,这算是一种粗粒度的任务,因为在 Mini-Batch 内多张无关的图片之间计算统计量,弱化了单张图片本身特有的一些细节信息

问题四:BN为什么不能和Dropout一起使用?

论文中说Batch Normalization 实现了一些与 Dropout 相同的目标。 从修改的 BN-Inception 中删除 Dropout 可加快训练速度,而不会增加过度拟合。

BN和Dropout不能混合使用,单独使用更佳。
在这里插入图片描述
那我们首先要明确一下,它们混合使用的顺序是怎么样的?
如图,如果是Dropout后跟一个BN就会引起不佳的表现。

  • 在训练阶段:Dropout以一定概率失活神经元,而BN是直接对一批样本算均值和方差然后记录起来。样本的均值不会因为乘一个概率值而变化,但是样本的方差会受到影响(数学里正态分布讲的)。
  • 在测试阶段:使用的是全体样本的方差和训练阶段的方差是不同的,这个现象也叫方差偏移
    有兴趣的话可以看看这篇论文《Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift》

指数滑动平均

在这里插入图片描述得到的权重在图像上更加平缓光滑,抖动性更小,不会因为某次的异常取值而使得滑动平均值波动很大。

Inception V3

非对称卷积

在这里插入图片描述
在这里插入图片描述
在输入和输出等同的情况下,参数降低33%(将3x3卷积核分解为两个2x2卷积核,只是降低了11%)
非对称分解卷积,将n ×n 分解成了 n×1 和1 ×n,比VGG中的分解节省更多的运算量。

高效下降特征图尺寸

在这里插入图片描述
无论是先池化再卷积(丢失信息),还是先卷积再池化(计算量比较大),这两种传统降维方法都有各自缺点,所以提出并行执行卷积+池化,再进行特征图的堆叠,在扩充通道的同时下采样又保证了计算效率。

标签平滑正则化

在这里插入图片描述
根据CE-loss的公式,只有y中为1的那一维度参与了loss的计算,其他的都忽略了。这样就会造成一些后果:
真实标签跟其他标签之间的关系被忽略了,很多有用的知识无法学到;比如:“鸟”和“飞机”本来也比较像,因此如果模型预测觉得二者更接近,那么应该给予更小的loss;
倾向于让模型更加“武断”,成为一个“非黑即白”的模型,导致泛化性能差;
面对易混淆的分类任务、有噪音(误打标)的数据集时,更容易受影响。

标签平滑正则化的原理:
把原来的one-hot表示,在每一维上都添加了一个随机噪音。

标签平滑正则化的优势:
避免模型对于正确标签过于自信,使得预测正负样本的输出值差别不那么大,提高模型的泛化能力,实现对模型进行约束,降低模型过拟合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值