20190317论文研讨——BN、ResNet

Batch Normalization


\hat x^{(k)} = \frac{x^{(k)}-E[x^{(k)}]}{\sqrt{Var[x^{(k)}]}}
y^{(k)} = \gamma\ \hat x^{(k)} +\beta

目的
使每一层的输出都满足均值为0、单位方差,以在经过激活函数时,能够在更敏感的范围内激活。缓解梯度消失/爆炸。

但饱和未必是件坏事,因此在进行归一化的操作后,加入两个可学习参数(\gamma、\beta),进行缩放和平移,用来让网络自动地控制饱和的程度。如此以来解空间也涵盖了恒等函数。

综上,经过归一化、缩放/平移两个步骤后,网络的学习过程更加灵活,更快收敛、也更加鲁棒(网络可以在更广范围的学习率和不同初始值下工作)。

另一个角度理解:重参数化
这种观点认为,BN实际上是一个自适应的重参数化的方法。
非常深的网络模型会涉及多个函数或层组合,层与层之间的参数相互依赖,若同时更新所有层,由于这种依赖关系,可能会发生意想不到的结果。这是因为改变一个函数的参数时,我们假设其他函数保持不变。
BN剔除了均值和标准差,保证每一层的输入在训练过程中的分布不变(或者说相对稳定),削弱了层间参数的依赖关系。

有正则化效果
BN层的输出不仅依赖于单个输入x,还(通过均值和方差)依赖于同一batch的其他样本。它不再对给定的训练样本提供确定性的值,就像在X中加入一些扰动,从而实现正则化的效果。

ResNet


图片.png

Pytorch ResNet代码
中心思想

  • 提出残差学习框架,使网络能够更深。相比于之前直接学习函数,改为学习残差函数。
  • 使网络更容易优化、能够加深网络、精度更高(精度的提高依赖于深度的增加)。
  • 相当于引入这一先验:给较浅网络加入恒等层,使其变深,网络效果至少不会变差。
  • 只有在需要升维的shortcut处引入了额外参数,没有增加算法复杂度。

背景问题:更深的网络是否一定提高精度?会带来哪些问题?

  1. 过深的网络引起梯度消失/爆炸,从一开始就阻碍收敛。(很大程度上,可以通过归一化预处理、BN层来解决。)
  2. 较深的网络有退化问题:网络加深,精度提高至饱和;再加深网络,则精度迅速降低。这不是由过拟合造成:因为网络越深,训练集上精度也越低。


    图片.png

技术方案

图片.png
\quad原函数: H(x)=F(x)+x \\ 残差函数: F(x)=H(x)-x

  • 给较浅网络加入恒等层,使其变深,网络效果至少不会变差(不会产生比较浅的模型更高的训练误差)。但已有的网络并不会自动学习到这个结论(【先验】)。
  • 于是本文通过学习残差F(X)来解决退化问题。假设输入和输出的维度匹配(不匹配的情况在下文再讨论),若多层非线性网络可以逼近H(x),则也必定可以逼近残差F(x)。文中证明了逼近残差F(x)比逼近原函数H(x)更简单。
  • 如果恒等映射是最优的,求解器可以简单地将多个非线性层的权值趋近于零来逼近恒等映射。而在实际情况中,最优函数不太可能是恒等映射。实验表明,学习后的残差函数F(X)一般响应较小,即最优函数更接近于恒等映射而不是零映射,因此只需学习这个扰动(即残差函数F(X))就可以。

shortcut连接中的维度匹配
当维度变化时有两种选择:

  1. 恒等映射对于增加的维数用0填充(无参数引入)。
  2. 使用1x1卷积对输入x进行升维再bn(会引入可学习参数)。

实验证明,第二种方法会带来精度的提升。是因为引入的参数增强了模型的表达能力。本文在不需要升维时,shortcut使用恒等映射,需要升维时,采用上述方法2。(但ResNet V2论文指出,这并不一定带来好的效果)

Bottleneck 瓶颈层:减小参数

图片.png

利用右图所示结构,对channel进行控制,减少参数。

其他

  • 数据增强的方法与AlexNet\VGG相同。
  • 在每个卷积层后(激活层前),加入BN。
  • SGD,batch_size设为256。
  • 学习率初始为0.1,误差平稳时为0.01;0.9动量。
  • 没有使用dropout

最终结构,以ResNet-50为例

图片.png

ResNet V2


图片.png

shortcut的路径应该是clean的
恒等映射是最优的,前向、反向传播的信号能直接从一个残差块传递到其他任意一个残差块。一切多余操作(如relu、1x1卷积)都会阻碍信息的反向传播并且阻碍训练训练过程。

shortcut中,1x1卷积带来的问题
当残差单元有很多时,1x1卷积并不能起到好的效果,可能阻碍信号的传播。当使用1×1 的卷积shortcut时,110 层的ResNet的结果很差(12.22%), 训练误差变得很高。
1×1的卷积shortcut连接引入了更多的参数(且1×1的卷积涵盖了恒等捷径连接的解空间),本应该具有比恒等连接更强大的表达能力。然而,当网络变得更深时,它们的训练误差比恒等捷径连接的训练误差要高得多,这表明了这些模型退化问题的原因是优化问题,而不是表达能力的问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容