GoogLeNetv2 论文研读笔记

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

原文链接

摘要

当前神经网络层之前的神经网络层的参数变化,引起神经网络每一层输入数据的分布产生了变化,这使得训练一个深度神经网络变得复杂。这样就要求使用更小的学习率,参数初始化也需要更为谨慎的设置。并且由于非线性饱和(注:如sigmoid激活函数的非线性饱和问题),训练一个深度神经网络会非常困难。我们称这个现象为:internal covariate shift。同时利用归一化层输入解决这个问题。我们将归一化层输入作为神经网络的结构,并且对每一个小批量训练数据执行这一操作。Batch Normalization(BN) 能使用更高的学习率,并且不需要过多地注重参数初始化问题。BN 的过程与正则化相似,在某些情况下可以去除Dropout

引言

随即梯度下降法(SGD)通过最小化 \(\theta\) 来最小化损失函数

GoogLeNetv2 论文研读笔记

其中X1…N为训练数据集。在使用SGD时,每次迭代我们使用一个大小为m 的小批量数据X1…m 。通过计算

GoogLeNetv2 论文研读笔记

来逼近损失函数关于权值的梯度。在迭代过程中使用小批量数据相比使用一个样本有几个好处。首先,由小批量数据计算而来的损失函数梯度是由整个训练数据集的损失函数梯度的估计。并且随着小批量数据大小的增加,其性能会越好。其次,由于现代计算平台的并行性,小批量训练会比单个样例训练更高效

尽管随机梯度下降法简单有效,但却需要谨慎的调整模型的参数,特别是在优化过程中加入学习率和参数初始化方式的选择。每一层的输入都会受之前所有层的参数影响,并且随着网络越深,即使参数的变化很小也为对每一层的输入产生很大的影响。这使得训练一个网络变得十分复杂。神经网络层输入分布的改变,使得神经网络层必须不停的适应新的数据分布。当一个学习系统的输入数据分布产生变化,称这种现象为:Experience Covariate Shift。解决这种现象的典型方法是领域适应。输入数据分布相同这一特性,使得子网络更容易训练。因此保持输入的分布不变是有利的。保持一个子网络的输入数据分布不变,对该子网络以外的隐藏层也有积极的作用

称在训练深度神经网络的过程中,网络内部节点的分布发生变换这一现象为 Internal Covariate Shift。而消除这个现象能够加速网络的训练。因此提出了Batch Normalization ,通过减少依赖参数缩放和初始化,进而缓解Internal Covariate Shift,并动态的加速深度神经网络的训练速度。BN 允许使用更高的学习率,而不会有发散的风险。进一步的,BN能够正则化模型,并且不需要Dropout。最后,BN能够使用s型激活函数,同时不会陷入饱和端

降低内协变量漂移(Internal Covariate Shift)

将 Internal Covariate Shift 定义为:在神经网络的训练过程中,由于参数改变,而引起的神经网络激活值分布的改变。通过缓解 Internal Covariate Shift 来提高训练。在训练的过程中保持神经网络层输入的分布不变,来提高训练速度。已知,如果对网络的输入进行白化(输入线性变换为具有零均值和单位方差,并去相关),网络训练将会收敛的更快。通过白化每一层的输入,采取措施实现输入的固定分布,消除内部协变量转移的不良影响

考虑在每个训练步骤或在某些间隔来白化激活值,通过直接修改网络或根据网络激活值来更改优化方法的参数。然而,如果这些修改分散在优化步骤中,那么梯度下降步骤可能会试图以要求标准化进行更新的方式来更新参数,这会降低梯度下降步骤的影响

我们希望确保对于任何参数值,网络总是产生具有所需分布的激活值。这样做将允许关于模型参数损失的梯度来解释标准化,以及它对模型参数\(\Theta\)的依赖。希望通过对相对于整个训练数据统计信息的单个训练样本的激活值进行归一化来保留网络中的信息

通过Mini-Batch统计进行标准化

由于每一层输入的整个白化是代价昂贵的并且不是到处可微分的,因此做了两个必要的简化。首先是单独标准化每个标量特征,从而代替在层输入输出对特征进行共同白化,使其具有零均值和单位方差。对于多为输入的层,将标准化每一维。简单标准化层的每一个输入可能会改变层可以表示什么。例如,标准化sigmoid的输入会将它们约束到非线性的线性状态。为了解决这个问题,要确保插入到网络中的变换可以表示恒等变换。为了实现这个,对于每一个激活值x(k),引入成对的参数\(\gamma^{(k)}, \beta^{(k)}\),它们会归一化和移动标准值
\[ y^{k} = \gamma^{k} \hat a^{k} + \beta(k) \]
这些参数与原始的模型参数一起学习,并恢复网络的表示能力

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxgjz.html