本文提出一个新奇的方法来加快神经网络的训练速度, 基于这样一个想法, 即对输入进行白化处理有助于加快收敛速度. 已知独立的随机变量之间一定是白化的(不相关的), 所以对网络输入进行独立成分分析能够获得白化的输入. 然而进行独立成分分析是十分耗时的, 为此作者提出一种被称为 Independent-Component (IC) 的神经网络结构来实现, 这个结构是批归一化和 dropout 的组合. 本文通过理论分析了这一结构的有效性, 通过实验也表明了这一改进提升了分类性能.
论文链接: https://arxiv.org/abs/1905.05928v1
白化是一种用于去除数据之间相关性的方法, 这使得网络训练更加容易 (Le Cun et al., 1991), 但 Le Cun 所做的工作仅限于预处理训练数据. 而在神经网络中每个激活层上实现白化则需要大量的计算, 因此有了后来的批归一化方法(Batch Normalization, (Ioffe & Szegedy, 2015)), 该方法通过将每个激活层的净激活比例缩放为零均值和单位方差来增强性能. 批归一化程序可以显着平滑参数空间中的优化环境 (Bjorck et al., 2018),以提高训练性能. 由于批归一化易于实施和成功. 因此注意力从最初的白化目标转移了. 这项工作的动机是恢复对设计出高效的计算方法来白化每一层的输入的追求.
为什么要通过获得变量的独立成分来进行白化呢? 这受到神经科学的一项发现的支持: 神经系统的表达能力随群体中独立神经元的数量而线性增加 (Moreno-Bote et al., 2014; Beaulieu-Laroche et al., 2018). 因此要使得每一层的输入变量之间尽可能独立, 这也将使得训练更加稳定. 本文提出的 IC 层是由批归一化 Batch Normalization (Ioffe & Szegedy, 2015) 和 Dropout (Srivastava et al., 2014) 组成的, 这两种方法能够很容易的实现.
在 (Huang et al., 2018) 中提出了在网络中添加额外的层来实现独立成分分析, 然而这种方法计算两太大了.
本文提出的 IC 层结构是非常简单的, 首先它的位置如下图所示:
IC 层位于激活层之后, 它的下一层就是卷积层. IC 层的结构从代码上来看如下:
也就是简单得将 BatchNorm 和 Dropout 叠加在一起.
IC 层能够二次方地减少变量之间的非独立性, 线性地减少相关性. 在减少非独立性的同时, Dropout 操作也会线性的减少信息熵, 作者提到可以通过调整 p p p 值来权衡获得的独立性和减少的信息熵. 有关理论证明请查看原文.
IC 方法直观解释如下: 批归一化使得变量具有零均值和单位方差, 这 ZCA 方法一样.Dropout 操作使得神经元以概率 p 输出其值, 或者通过输出零来使神经元失活,
这样一来经元的输出的信息将很少来自其他神经元, 也就是使得这些神经元在统计上变得彼此独立.
互信息可用来衡量变量之间的独立性, 而相关性则用协方差来表示.
独立成分分析 (Independent Component Analysis, ICA)
https://blog.csdn.net/Tonywu2018/article/details/91490158
, 论文: Independent Component Analysis: Algorithms and Applications
https://www.zhihu.com/question/28845451
https://zhuanlan.zhihu.com/p/43130318
Whitening (白化)
https://www.cnblogs.com/demian/p/7627324.html
为什么使用白化? 教程给出的解释是:
假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。白化的目的就是降低输入的冗余性。
比如在独立成分分析(ICA)中,对数据做白化预处理可以去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程,而且,通常情况下,数据进行白化处理与不对数据进行白化处理相比,算法的收敛性较好。
注意: 白化可以去除相关性, 但不能去除非独立性, 即独立不一定相关, 但是不相关不一定独立. 详见 https://blog.csdn.net/Tonywu2018/article/details/91490158