深度学习中的Internal Convariate Shift (ICS)

  深度学习网络模型的训练为什么会很困难?其中一个重要的原因是,深度神经网络设计到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化。通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。为了训练好模型,我们需要非常谨慎地设定学习率、初始化权重以及尽可能细致的参数更新策略。

  Google将这一现象总结为Internal Convariate Shift,简称ICS。什么是ICS呢?

  大家都知道在统计机器学习中的一个经典假设是“源空间(source domain)和目标空间(target domain)是一致的”。如果不一致,那么就出现了新的机器学习问题,如transfer learning/domain adaptation等。而Conariate Shift就是分布不一致的假设之下的一个分支问题,它是指源空间和目标空间的条件概率是一致的,但是其边缘概率不同,即:对所有的x∈X,有:Ps(Y|X=x)=Pt(Y|X=x)    但是Ps(X)≠Pt(X) 。        大家仔细想想便会发现,的确,对于神经网络的各层输出,由于它们经过了层内操作作用,其分布显然与各层对应的输入信号分布不同,而且差异会随着网络深度增大而增大,可是它们所能“指示”的样本标记(label)仍然是不变的,这便符合了Convariate Shift的定义。由于是对层间信号的分析,也即是“internal”的来由。

  ICS会导致什么问题?

  简而言之,每个神经元的输出数据不再是“独立同分布”。

  其一,上层的参数需要不断的适应新的输入数据分布,降低学习速度。  

  其二,下层输入的变化可能趋向于变大或者变小,导致上层落入饱和区,使得学习过早停止。  

  其三,每层的更新都会影响到其他层,因此每层的参数更新策略需要尽可能的谨慎。