深度学习UFLDL教程翻译之PCA白化

本文介绍了PCA(主成分分析)作为一种有效的降维算法,如何用于图像预处理,尤其是白化的概念和重要性。PCA通过寻找数据变化的主要方向来减少冗余,而白化则是进一步减少特征间的相关性并使所有特征具有相等方差。在自然图像处理中,PCA白化可以提高算法的效率和性能,尤其是在目标识别等任务中。文章提供了2D例子和数学背景,阐述了PCA、ZCA白化和正则化的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、引入

       主成分分析(PCA)是一种降维算法,能大大加速你的无监督特征学习算法。更重要的是,理解PCA能让我们后面实现白化,这是一个对所有算法适用的重要的预处理步骤。

       假设你在图像上训练你的算法。不过输入稍微有点冗余,因为图像中相邻的像素值是高度相关的。具体来说,假设我们在16*16的灰度图像块上训练。那么x∈R256是256维的向量,一个特征xj对应着图像中每个像素强度。由于相邻像素之间的相关性,PCA使我们能够以一个维数小得多的输入来近似原输入,而造成误差极小。

二、例子与数学背景

       对我们运行例子来说,我们使用数据集{x(1),x(2),…,x(m)},输入是n=2维的,因此x(i)∈R2。假设我们想要将二维数据将为1维。(实际上,我们比如可能想要将256维数据降为50维;但在我们的例子中使用低一点的维度数据能让我们更好地可视化算法。)这是我们的数据集:


       这些数据有经过预处理,因此每个特征x1和x2都有相同的均值(0)和方差。

       为了阐述,我们还将每一个点着色,有三种颜色,取决于x1的值;这些颜色不是给算法用的,只是为了阐述。

       PCA会寻找一个投影我们数据的较低维的子空间。

       通过可视化验证数据,能看出u1是数据变化的主要方向,u2是变化的第二个方向:


即,相比u2方向,数据更多地在u1方向上变化。为了更正式地得到方向u1和u2,我们首先计算如下矩阵:


       如果x有零均值,那么Σ恰好是x的协方差矩阵。(Σ符号,发音为sigma,是表示协方差矩阵的标准表示。不幸的是,它看起来就像求和的符号,和∑ni=1i中的一样;但实际上这是两种不同的东西。)

       然后就可以看出,u1——数据变化的主要方向——是Σ的第一个(主要的)特征向量,u2是第二个特征向量。

       注意:如果你感兴趣于阅读关于这个结果的更正式的数学推导/证明,可以阅读CS229(机器学习)关于PCA的课程笔记。然而在这个课程中你不需要这样做。

       你可以使用标准的数值线性代数软件来得到这些特征向量(看实现提示)。具体而言,让我们计算Σ的特征向量,并将特征向量按列排列,得到矩阵U:


在这里,u1是主要特征向量(对应于最大的特征值),u2是第二个特征向量,等等。另外,令λ1,λ2,…,λn为相应特征值。

       在我们的例子中,向量u1和u2构成新的基,我们的数据将用其表示。具体而言,令x∈R2为一些训练样本。然后uT1x为x投影到向量u1的长度(量)。

       同理,uT2x是x投影到向量u2的量。

三、旋转数据

       现在,我们可以用(u1,u2)基来表示x,通过计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值