Internal covariate shift
定义
网络中每一层的输出是与该层的参数 和输入 决定的,我们可以认为,某个 layer 接受了一定分布的输入,会产生一个服从新的分布的输出。
伴随每次模型的更新,即使浅层 layer 的权重改变了很小的值,但是随着网络深度的加深,这种数据偏移会伴随积累变得越来越大,这就是所谓的内部协变量偏移
下面摘录一个知乎问题的回答
大家都知道在统计机器学习中的一个经典假设是“源空间(source domain)和目标空间(target domain)的数据分布(distribution)是一致的”。如果不一致,那么就出现了新的机器学习问题,如 transfer learning / domain adaptation 等。而 covariate shift 就是分布不一致假设之下的一个分支问题,它是指源空间和目标空间的条件概率是一致的,但是其边缘概率不同,即:对所有 ,有 但是 大家细想便会发现,的确,对于神经网络的各层输出,由于它们经过了层内操作作用,其分布显然与各层对应的输入信号分布不同,而且差异会随着网络深度增大而增大,可是它们所能“指示”的样本标记(label)仍然是不变的,这便符合了covariate shift的定义。由于是对层间信号的分析,也即是“internal”的来由。
会导致的问题
- 每次网络更新后,深层的 layer 可能都会面对一个全新的输入分布,这就会导致网络的收敛速度变得更慢
- 由于网络层的更新可能会影响其他的网络层,因此需要更小心的去调整参数更新的策略
- 网络的输出随着深度的加深可能会一直变大或变小,导致深层layer的输入落入激活函数的饱和区(梯度接近于0),使得学习过早的停止