训练一个的Neural Network(特指由FC层和non-linearity构成的MLP式网络),为了达到又快又好的convergence,训练前的准备非常重要。这里主要谈个主要的预训练措施:数据预处理 and 网络初始化。
一. 数据预处理:
本文还是以在CIFAR-10上做10分类任务为背景展开(训练集50000张32 * 32 * 3 = 3072dim的图片,X∈[N , D] = [50000, 3072])。所谓数据预处理,就是把这个3072维空间上的50000个点的数据进行处理,使得他们在3072维feature空间的各个单个feature维度上,具有很好的分布(distribution)性质。注意,这里把3072维feature中的每一维看做一个variable,是50000个采样的distribution。
数据预处理的核心(即希望处理后的数据集)有三:1. zero-mean(zero-centered);2. unit varaiance;3. low dimensionality; 4. Features de-correlation。
1. Mean Subtraction for zero-mean(centered):
对3072维feature的每一维重复以下操作:求50000个值的mean,然后用50000个值各自减去这个mean;
2. Scaling/Normalization by dividing std:
对3072维feature的每一维重复一下操作:求50000个值得标准差(std, i.e. varaince的算术平方根),然后用50000个值各自除以这个标准差。
zero-centered和normalization处理数据的过程如下图:
3. Dimensionality reduciton & de-correlation by PCA:
有时input图像太大导致输入维度很高,从而使得存储和计算代价都很大,而如此高维度的特征中有很多冗余、互相关的信息。可以通过PCA的方法,实现降维和解相关。