数据预处理相关技巧
参考网页:
http://deeplearning.stanford.edu/wiki/index.php/Data_Preprocessing
http://deeplearning.stanford.edu/wiki/index.php/Whitening
前言:
数据预处理在深度学习中非常重要,通常通过标准化及白化后的数据可以学习到更好的特征及分类器。但是预处理中使用到的参数的确切值还是很难得到,除非你对算法有非常深刻的理解。
数据标准化:
尺度缩放:尺度缩放即将数据是将数据按比例缩放,使之落入一个小的特定区间[-1,1]或 [0,1]。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
减平均值:对每一维求平均值,然后每一个维度减去相应的平均值。在图像处理中,我们一般对光线变化不太关注,更经常的是关注图片的具体内容。不过该方法一般只用于灰度图片中,我们认为图片每一个维度具有相同的分布,而彩色图像不具有该性质。
特征标准化:即使每一维特征的期望为0,方差相等。这样做的目的是使每一个维度具有相同的重要性。
数据白化:
数据白化是去除样本的冗余性,白化有两个目标:1)维度间相互独立 2)各维度具有相同的的方差
PCA白化:计算变换矩阵U,xrot=Ux,然后为使每个维度的方差一致,xrot,i 乘以,数据协方差矩阵为I
有为防止特征值为0,上式阶乘以0的情况出现,一般会加一个很小的正则项epsion
epsion的选择也非常重要,在数据重建模型中(autoencoders, sparse coding.....)中,如果epsion非常小,那么重建后的图像噪声比较多,反之,图像比较模糊。一个行之有效的方法就是将特征值画出来,会发现有一个长尾(long tail),长尾上的特征值都非常小,即相应的维度为噪声。因此一般选择epsion大于大多数小特征值。如果数据已经被缩放到[0,1],我们一般选择epsion = 0.01或0.1
ZCA白化:PCA白化得到的数据的协方差矩阵为I,那么假设矩阵R是一个正交矩阵,且RRT=I,那么RXPCAWhite的协方差 矩阵也为I,sigma = (RXPCAWhite)T(RXPCAWhite) =I。即对PCA白化的数据进行旋转,它的协方差矩阵仍为I,满足白化的两个要 求。在ZCA白化上,我们使R = U,即
这里选择R = U,有一个好处使白化后的数据与原数据尽可能的相似。