今天我们来讲一讲神经网络的数据预处理。
1. 数据预处理
数据预处理的方法通常有三种,假设数据矩阵X是一个N*D维的矩阵,N表示样本数目,D表示数据的维度。
- 0均值 是最常用的预处理方法,就是把数据的每一维-每一维的均值,这样数据就变成0均值的了。在numpy中,这个操作可以写成:X -= np.mean(X, axis = 0)。对于图片来讲,我们可以更简单地对所有pixel减去同一个均值(如 X -= np.mean(X)),当然也可以对RGB三个通道分别减均值。
归一化(Normalization) 是指将数据归一化到相同的尺度。通常有两种归一化的方法。第一种是0均值以后的数据的每一维/每一维的标准差(X /= np.std(X, axis = 0));另一种是将数据归一化到每一维的最大最小值为1和-1。这种归一化只适用于当你认为数据的不同维度应该具有相同的重要性时。对于图片来说,不同像素的尺度是基本一致的(0-255),因此我们并不需要对它进行归一化操作。
PCA和白化 是另一种形式的预处理方法。首先我们将数据变成0均值的,然后计算数据的协方差矩阵来得到数据不同维度之间的相关性:
# Assume input data mat