白化

From Ufldl

Jump to: navigation, search
Line 1: Line 1:
-
:【原文】:
+
[原文]:
:Introduction
:Introduction
   
   
We have used PCA to reduce the dimension of the data. There is a closely related preprocessing step called whitening (or, in some other literatures, sphering) which is needed for some algorithms. If we are training on images, the raw input is redundant, since adjacent pixel values are highly correlated. The goal of whitening is to make the input less redundant; more formally, our desiderata are that our learning algorithms sees a training input where (i) the features are less correlated with each other, and (ii) the features all have the same variance.
We have used PCA to reduce the dimension of the data. There is a closely related preprocessing step called whitening (or, in some other literatures, sphering) which is needed for some algorithms. If we are training on images, the raw input is redundant, since adjacent pixel values are highly correlated. The goal of whitening is to make the input less redundant; more formally, our desiderata are that our learning algorithms sees a training input where (i) the features are less correlated with each other, and (ii) the features all have the same variance.
-
:【初译】:
+
[初译]:
:介绍
:介绍
我们使用过 PCA 来降低数据维度. 还有一个与之非常相关的预处理步骤叫 白化 (一些文献中也称sphering) ,一些算法中需要这个步骤. 当在图像数据上进行训练时, 由于相邻像素值高度相关,原始的输入具有冗余性。白化的目标是降低输入的冗余性;更形式化地说,我们需要的是使我们的学习算法可以有一个供训练的输入使得:(i) 特征之间相关性更低 (ii) 特征都有相同的方差。
我们使用过 PCA 来降低数据维度. 还有一个与之非常相关的预处理步骤叫 白化 (一些文献中也称sphering) ,一些算法中需要这个步骤. 当在图像数据上进行训练时, 由于相邻像素值高度相关,原始的输入具有冗余性。白化的目标是降低输入的冗余性;更形式化地说,我们需要的是使我们的学习算法可以有一个供训练的输入使得:(i) 特征之间相关性更低 (ii) 特征都有相同的方差。
-
:【一校】:
+
[一审]:
我们已经了解了如何使用PCA降低数据维度。在一些算法中还需要一个与之相关的预处理步骤,这个预处理过程称为白化(一些文献中也叫shpering)。举例来说,假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,如果用原始图像数据作为输入的话,输入是冗余的。白化的目的就是降低输入的冗余性;更正式的说,我们希望通过白化过程使得学习算法的输入具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。
我们已经了解了如何使用PCA降低数据维度。在一些算法中还需要一个与之相关的预处理步骤,这个预处理过程称为白化(一些文献中也叫shpering)。举例来说,假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,如果用原始图像数据作为输入的话,输入是冗余的。白化的目的就是降低输入的冗余性;更正式的说,我们希望通过白化过程使得学习算法的输入具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。
-
:【原文】:
+
[原文]:
:2D example
:2D example
Line 19: Line 19:
-
:【初译】:
+
[初译]:
:2D 的例子
:2D 的例子
Line 25: Line 25:
我们如何消除输入特征之间的相关性? 在计算<math>x_{rot}^{(i)}=U^Tx^{(i)}</math>时我们其实已经完成了。回顾之前的图表, 在坐标系中绘出<math>x_{rot}</math>:  
我们如何消除输入特征之间的相关性? 在计算<math>x_{rot}^{(i)}=U^Tx^{(i)}</math>时我们其实已经完成了。回顾之前的图表, 在坐标系中绘出<math>x_{rot}</math>:  
-
:【一校】:
+
[一审]:
下面我们先用前文的2D例子描述白化的主要思想,然后分别介绍如何将白化与平滑和PCA相结合。
下面我们先用前文的2D例子描述白化的主要思想,然后分别介绍如何将白化与平滑和PCA相结合。
在前文计算<math>x_{rot}^{(i)}=U^Tx^{(i)}</math>时我们实际上已经消除了输入特征<math>x^{(i)}</math>之间的相关性。得到的新特征<math>x_{rot}</math>的分布如下图所示:
在前文计算<math>x_{rot}^{(i)}=U^Tx^{(i)}</math>时我们实际上已经消除了输入特征<math>x^{(i)}</math>之间的相关性。得到的新特征<math>x_{rot}</math>的分布如下图所示:
Line 31: Line 31:
[[File:PCA-rotated.png | 600px]]
[[File:PCA-rotated.png | 600px]]
-
:【原文】:
+
[原文]:
The covariance matrix of this data is given by:
The covariance matrix of this data is given by:
Line 48: Line 48:
that you should worry about.)
that you should worry about.)
-
:【初译】:
+
[初译]:
数据的协方差矩阵如下:  
数据的协方差矩阵如下:  
(注: 严格地讲, 这部分许多关于“协方差”的陈述仅当数据以0为均值时成立。接下来,我们将这一假设作为隐含条件。然而,即使数据不以0为均值,我们在这里提出的仍然保持正确,因此读者无需担心。)  
(注: 严格地讲, 这部分许多关于“协方差”的陈述仅当数据以0为均值时成立。接下来,我们将这一假设作为隐含条件。然而,即使数据不以0为均值,我们在这里提出的仍然保持正确,因此读者无需担心。)  
-
:【一校】:
+
[一审]:
数据的协方差矩阵如下:  
数据的协方差矩阵如下:  
(注: 严格地讲, 这部分许多关于“协方差”的陈述仅当数据均值为0时成立。下文的论述都隐式地假定这一条件成立。不过即使数据均值不为0,下文的说法仍然成立。)
(注: 严格地讲, 这部分许多关于“协方差”的陈述仅当数据均值为0时成立。下文的论述都隐式地假定这一条件成立。不过即使数据均值不为0,下文的说法仍然成立。)
-
:【原文】:
+
[原文]:
It is no accident that the diagonal values are <math>\textstyle \lambda_1</math> and <math>\textstyle \lambda_2</math>.   
It is no accident that the diagonal values are <math>\textstyle \lambda_1</math> and <math>\textstyle \lambda_2</math>.   
Further,  
Further,  
Line 75: Line 75:
[[File:PCA-whitened.png | 600px]]
[[File:PCA-whitened.png | 600px]]
-
:【初译】:
+
[初译]:
毫无疑问,对角元素的值为<math>\textstyle \lambda_1</math>和<math>\textstyle \lambda_2</math>。非对角元素值为0; 并且,<math>\textstyle x_{{\rm rot},1}</math>和<math>\textstyle x_{{\rm rot},2}</math>是不相关的, 满足其中一个我们对白化结果的要求 (特征间更不相关)。
毫无疑问,对角元素的值为<math>\textstyle \lambda_1</math>和<math>\textstyle \lambda_2</math>。非对角元素值为0; 并且,<math>\textstyle x_{{\rm rot},1}</math>和<math>\textstyle x_{{\rm rot},2}</math>是不相关的, 满足其中一个我们对白化结果的要求 (特征间更不相关)。
为了使我们每个输入特征具有单位方差,可以直接使用<math>\textstyle 1/\sqrt{\lambda_i}</math>来缩放每个特征<math>\textstyle x_{{\rm rot},i}</math>。具体地,我们定义白化后的数据<math>\textstyle x_{{\rm PCAwhite}} \in \Re^n</math>如下:
为了使我们每个输入特征具有单位方差,可以直接使用<math>\textstyle 1/\sqrt{\lambda_i}</math>来缩放每个特征<math>\textstyle x_{{\rm rot},i}</math>。具体地,我们定义白化后的数据<math>\textstyle x_{{\rm PCAwhite}} \in \Re^n</math>如下:
绘制出<math>\textstyle x_{{\rm PCAwhite}}</math>, 我们得到:
绘制出<math>\textstyle x_{{\rm PCAwhite}}</math>, 我们得到:
-
:【一校】:
+
[一审]:
毫无疑问, 协方差矩阵对角元素的值为<math>\textstyle \lambda_1</math>和<math>\textstyle \lambda_2</math>。非对角元素值为0; 并且,<math>\textstyle x_{{\rm rot},1}</math>和<math>\textstyle x_{{\rm rot},2}</math>是不相关的, 满足我们对白化结果的第一个要求 (特征间相关性降低)。
毫无疑问, 协方差矩阵对角元素的值为<math>\textstyle \lambda_1</math>和<math>\textstyle \lambda_2</math>。非对角元素值为0; 并且,<math>\textstyle x_{{\rm rot},1}</math>和<math>\textstyle x_{{\rm rot},2}</math>是不相关的, 满足我们对白化结果的第一个要求 (特征间相关性降低)。
为了使每个输入特征具有单位方差,我们可以直接使用<math>\textstyle 1/\sqrt{\lambda_i}</math>来缩放每个特征<math>\textstyle x_{{\rm rot},i}</math>。具体地,我们定义白化后的数据<math>\textstyle x_{{\rm PCAwhite}} \in \Re^n</math>如下:
为了使每个输入特征具有单位方差,我们可以直接使用<math>\textstyle 1/\sqrt{\lambda_i}</math>来缩放每个特征<math>\textstyle x_{{\rm rot},i}</math>。具体地,我们定义白化后的数据<math>\textstyle x_{{\rm PCAwhite}} \in \Re^n</math>如下:
Line 86: Line 86:
绘制出<math>\textstyle x_{{\rm PCAwhite}}</math>, 我们得到:
绘制出<math>\textstyle x_{{\rm PCAwhite}}</math>, 我们得到:
-
:【原文】:
+
[原文]:
This data now has covariance equal to the identity matrix <math>\textstyle I</math>.  We say that
This data now has covariance equal to the identity matrix <math>\textstyle I</math>.  We say that
Line 99: Line 99:
nearly zero anyway, and thus can safely be dropped.
nearly zero anyway, and thus can safely be dropped.
-
:【初译】:
+
[初译]:
这些数据现在的协方差矩阵为单位矩阵<math>\textstyle I</math>. 我们说,<math>\textstyle x_{{\rm PCAwhite}}</math>是数据经过PCA白化的版本:<math>\textstyle x_{{\rm PCAwhite}}</math>中不同的成分是不相关的并且具有单位方差。
这些数据现在的协方差矩阵为单位矩阵<math>\textstyle I</math>. 我们说,<math>\textstyle x_{{\rm PCAwhite}}</math>是数据经过PCA白化的版本:<math>\textstyle x_{{\rm PCAwhite}}</math>中不同的成分是不相关的并且具有单位方差。
Line 105: Line 105:
如果你想得到经过白化并且维度比初试输入更低的数据, 你也可以任意地仅保留前<math>\textstyle k</math>个<math>\textstyle x_{{\rm PCAwhite}}</math>中的成分。当我们把PCA白化和正则化结合起来时(在稍后讨论),在最后的一些<math>\textstyle x_{{\rm PCAwhite}}</math>的成分将总是接近于0,因此可以放心地舍弃它们。  
如果你想得到经过白化并且维度比初试输入更低的数据, 你也可以任意地仅保留前<math>\textstyle k</math>个<math>\textstyle x_{{\rm PCAwhite}}</math>中的成分。当我们把PCA白化和正则化结合起来时(在稍后讨论),在最后的一些<math>\textstyle x_{{\rm PCAwhite}}</math>的成分将总是接近于0,因此可以放心地舍弃它们。  
-
:【一校】:
+
[一审]:
这些数据现在的协方差矩阵为单位矩阵<math>\textstyle I</math>. 我们说,<math>\textstyle x_{{\rm PCAwhite}}</math>是数据经过PCA白化后的版本:<math>\textstyle x_{{\rm PCAwhite}}</math>中不同的特征之间是不相关并且具有单位方差。
这些数据现在的协方差矩阵为单位矩阵<math>\textstyle I</math>. 我们说,<math>\textstyle x_{{\rm PCAwhite}}</math>是数据经过PCA白化后的版本:<math>\textstyle x_{{\rm PCAwhite}}</math>中不同的特征之间是不相关并且具有单位方差。
Line 111: Line 111:
如果你要经过白化并且维度比初始输入更低维的数据, 也可以仅保留<math>\textstyle x_{{\rm PCAwhite}}</math>中前<math>\textstyle k</math>个的成分。当我们把PCA白化和正则化结合起来时(在稍后讨论),<math>\textstyle x_{{\rm PCAwhite}}</math>中最后的少量成分将总是接近于0,因而舍弃这些成分不会带来很大的问题。  
如果你要经过白化并且维度比初始输入更低维的数据, 也可以仅保留<math>\textstyle x_{{\rm PCAwhite}}</math>中前<math>\textstyle k</math>个的成分。当我们把PCA白化和正则化结合起来时(在稍后讨论),<math>\textstyle x_{{\rm PCAwhite}}</math>中最后的少量成分将总是接近于0,因而舍弃这些成分不会带来很大的问题。  
-
:【原文】:
+
[原文]:
:ZCA Whitening
:ZCA Whitening
Line 136: Line 136:
of the data, and do not try to reduce its dimension.
of the data, and do not try to reduce its dimension.
-
:【初译】:
+
[初译]:
-
:ZCA白化
+
ZCA白化
最后,事实证明使数据的协方差矩阵为单位矩阵<math>\textstyle I</math>的方式并不唯一。具体地,如果<math>\textstyle R</math>是任意正交矩阵,即满足<math>\textstyle RR^T = R^TR = I</math>(不太正式地讲,若<math>\textstyle R</math>是旋转/反射矩阵), 那么<math>\textstyle R \,x_{\rm PCAwhite}</math>具有单位协方差。在 ZCA白化中,令<math>\textstyle R = U</math>.我们定义:  
最后,事实证明使数据的协方差矩阵为单位矩阵<math>\textstyle I</math>的方式并不唯一。具体地,如果<math>\textstyle R</math>是任意正交矩阵,即满足<math>\textstyle RR^T = R^TR = I</math>(不太正式地讲,若<math>\textstyle R</math>是旋转/反射矩阵), 那么<math>\textstyle R \,x_{\rm PCAwhite}</math>具有单位协方差。在 ZCA白化中,令<math>\textstyle R = U</math>.我们定义:  
Line 150: Line 150:
当使用 ZCA白化时(不同于 PCA白化),我们通常保留数据的全部<math>\textstyle n</math>个维度,不尝试去降低它的维数。  
当使用 ZCA白化时(不同于 PCA白化),我们通常保留数据的全部<math>\textstyle n</math>个维度,不尝试去降低它的维数。  
-
:【一校】:
+
[一审]:
:ZCA白化
:ZCA白化
Line 164: Line 164:
当使用 ZCA白化时(不同于 PCA白化),我们通常保留数据的全部<math>\textstyle n</math>个维度,不尝试去降低它的维数。  
当使用 ZCA白化时(不同于 PCA白化),我们通常保留数据的全部<math>\textstyle n</math>个维度,不尝试去降低它的维数。  
-
:【原文】:
+
[原文]:
:Regularizaton
:Regularizaton
Line 181: Line 181:
might be typical.  
might be typical.  
-
:【初译】:
+
[初译]:
-
:正则化
+
正则化
实践中需要实现PCA白化或ZCA白化时,有时一些特征值<math>\textstyle \lambda_i</math>在数值上接近于0, 这样在缩放步骤时我们除以<math>\sqrt{\lambda_i}</math>将导致除以一个接近0的值;这可能使数据上溢 (赋为大数值)或造成数值不稳定。因而在实践中,我们使用些许的正则化实现这个缩放过程,即在取平方根和倒数之前给特征值加上一个很小的常数<math>\textstyle \epsilon</math>:
实践中需要实现PCA白化或ZCA白化时,有时一些特征值<math>\textstyle \lambda_i</math>在数值上接近于0, 这样在缩放步骤时我们除以<math>\sqrt{\lambda_i}</math>将导致除以一个接近0的值;这可能使数据上溢 (赋为大数值)或造成数值不稳定。因而在实践中,我们使用些许的正则化实现这个缩放过程,即在取平方根和倒数之前给特征值加上一个很小的常数<math>\textstyle \epsilon</math>:
Line 191: Line 191:
当<math>\textstyle x</math>在区间<math>\textstyle [-1,1]</math>上时,  一般取值为<math>\textstyle \epsilon \approx 10^{-5}</math>。
当<math>\textstyle x</math>在区间<math>\textstyle [-1,1]</math>上时,  一般取值为<math>\textstyle \epsilon \approx 10^{-5}</math>。
-
:【一校】:
+
[一审]:
-
:正则化
+
正则化
实践中需要实现PCA白化或ZCA白化时,有时一些特征值<math>\textstyle \lambda_i</math>在数值上接近于0, 这样在缩放步骤时我们除以<math>\sqrt{\lambda_i}</math>将导致除以一个接近0的值;这可能使数据上溢 (赋为大数值)或造成数值不稳定。因而在实践中,我们使用少量的正则化实现这个缩放过程,即在取平方根和倒数之前给特征值加上一个很小的常数<math>\textstyle \epsilon</math>:
实践中需要实现PCA白化或ZCA白化时,有时一些特征值<math>\textstyle \lambda_i</math>在数值上接近于0, 这样在缩放步骤时我们除以<math>\sqrt{\lambda_i}</math>将导致除以一个接近0的值;这可能使数据上溢 (赋为大数值)或造成数值不稳定。因而在实践中,我们使用少量的正则化实现这个缩放过程,即在取平方根和倒数之前给特征值加上一个很小的常数<math>\textstyle \epsilon</math>:
Line 201: Line 201:
当<math>\textstyle x</math>在区间<math>\textstyle [-1,1]</math>上时,  一般取值为<math>\textstyle \epsilon \approx 10^{-5}</math>。
当<math>\textstyle x</math>在区间<math>\textstyle [-1,1]</math>上时,  一般取值为<math>\textstyle \epsilon \approx 10^{-5}</math>。
-
:【原文】:
+
[原文]:
For the case of images, adding <math>\textstyle \epsilon</math> here also has the effect of slightly smoothing (or low-pass
For the case of images, adding <math>\textstyle \epsilon</math> here also has the effect of slightly smoothing (or low-pass
Line 220: Line 220:
image, which is then transmitted to your brain.
image, which is then transmitted to your brain.
-
:【初译】:
+
[初译]:
对图像来说, 这里加上<math>\textstyle \epsilon</math>,对输入图像也有一些平滑(或低通滤波)的作用。这样处理还能消除在图像的像素信息获取过程中产生的人为的噪声,改善学习到的特征。(细节超出了本文的范围).  
对图像来说, 这里加上<math>\textstyle \epsilon</math>,对输入图像也有一些平滑(或低通滤波)的作用。这样处理还能消除在图像的像素信息获取过程中产生的人为的噪声,改善学习到的特征。(细节超出了本文的范围).  
ZCA 白化是一种对数据的预处理方法,它将数据从<math>\textstyle x</math>映射到<math>\textstyle x_{\rm ZCAwhite}</math>。 事实证明这也是一种对生物的眼睛(视网膜)处理图像的粗糙的模型。特别地,当你的眼睛感知图像时,由于一幅图像中相邻的部分在亮度上十分相关,大多数临近的“像素”在你眼中被感知为相近的值。你的眼睛如果需要分别传输每个像素(通过视觉神经)到你的大脑中,会非常不划算。取而代之的是,你的视网膜进行一个与ZCA中相似的去相关操作 (这由视网膜神经元通过计算一个称作“在中心, 不在周围/不在中心, 在周围”的函数完成)。由此得到一个对输入图像更低冗余的表示,然后它将被传输到你的大脑。  
ZCA 白化是一种对数据的预处理方法,它将数据从<math>\textstyle x</math>映射到<math>\textstyle x_{\rm ZCAwhite}</math>。 事实证明这也是一种对生物的眼睛(视网膜)处理图像的粗糙的模型。特别地,当你的眼睛感知图像时,由于一幅图像中相邻的部分在亮度上十分相关,大多数临近的“像素”在你眼中被感知为相近的值。你的眼睛如果需要分别传输每个像素(通过视觉神经)到你的大脑中,会非常不划算。取而代之的是,你的视网膜进行一个与ZCA中相似的去相关操作 (这由视网膜神经元通过计算一个称作“在中心, 不在周围/不在中心, 在周围”的函数完成)。由此得到一个对输入图像更低冗余的表示,然后它将被传输到你的大脑。  
-
:【一校】:
+
[一审]:
对图像来说, 这里加上<math>\textstyle \epsilon</math>,对输入图像也有一些平滑(或低通滤波)的作用。这样处理还能消除在图像的像素信息获取过程中产生的噪声,改善学习到的特征。(细节超出了本文的范围).  
对图像来说, 这里加上<math>\textstyle \epsilon</math>,对输入图像也有一些平滑(或低通滤波)的作用。这样处理还能消除在图像的像素信息获取过程中产生的噪声,改善学习到的特征。(细节超出了本文的范围).  
ZCA 白化是一种数据预处理方法,它将数据从<math>\textstyle x</math>映射到<math>\textstyle x_{\rm ZCAwhite}</math>。 事实证明这也是一种对生物眼睛(视网膜)处理图像的粗糙的模型。眼睛感知图像时,由于一幅图像中相邻的部分在亮度上十分相关,大多数临近的“像素”在眼中被感知为相近的值。人眼如果分别传输每个像素(通过视觉神经)到大脑中,会非常不划算。取而代之的是,视网膜进行一个与ZCA中相似的去相关操作 (这是由视网膜上的ON-型和OFF-型光感受器细胞将光信号转变为神经信号完成的)。由此得到对输入图像的更低冗余的表示,并将它被传输到大脑。
ZCA 白化是一种数据预处理方法,它将数据从<math>\textstyle x</math>映射到<math>\textstyle x_{\rm ZCAwhite}</math>。 事实证明这也是一种对生物眼睛(视网膜)处理图像的粗糙的模型。眼睛感知图像时,由于一幅图像中相邻的部分在亮度上十分相关,大多数临近的“像素”在眼中被感知为相近的值。人眼如果分别传输每个像素(通过视觉神经)到大脑中,会非常不划算。取而代之的是,视网膜进行一个与ZCA中相似的去相关操作 (这是由视网膜上的ON-型和OFF-型光感受器细胞将光信号转变为神经信号完成的)。由此得到对输入图像的更低冗余的表示,并将它被传输到大脑。

Revision as of 10:29, 8 March 2013

Personal tools