最近正在对之前写过的文章进行汇总,在回顾线性代数和机器学习系列文章时我发现好多地方都涉及到维度这个词,有的是升高维度,有的是降低维度。这就引发了我的思考。
先罗列一下什么地方涉及到了维度改变。
齐次坐标
在计算机图形学中,假设您想要使用矩阵表示变换。点可以表示为:
旋转操作可以表示为:
缩放可以表示为:
这些被称为线性变换,它们允许我们通过矩阵乘法来完成。但请注意,我们无法使用矩阵乘法完成平移操作。相反,您必须执行:
这被称为仿射变换。然而,这种方法并不理想。
假设 R 和 S 是旋转和缩放矩阵,T 是一个平移向量。在计算机图形学中,您可能需要对一个点进行一系列平移。可以想象这会变得非常棘手。
例如,缩放、平移、然后旋转和缩放、再次平移:
一个点还好,但是想象一下,如果你需要在一百万个点上做这些计算会怎样。你将无法利用图形显卡高效的矩阵乘法操作。我们希望将旋转、缩放和平移全部表示为矩阵乘法。然后将这些矩阵预先乘在一起,得到一个统一的变换矩阵,这样就可以轻松进行计算了。
例如,缩放、平移,然后旋转和缩放,再次平移:
我们可以通过增加这个点的维度来实现这一点。这里展示所2D 图形(3D 点),你可以扩展到 3D 图形(4D 点)中。
此时的旋转矩阵:
缩放矩阵:
平移矩阵:
在计算机图形学中,这种形式被称为齐次坐标。
它们简化和统一了数学对图形学的建模方法:
它允许用矩阵表示平移。
它允许在透视投影中表示深度除法。
第一个与仿射几何有关,第二个与投影几何有关
总结:
升高维度,你就能完成低维空间无法完成的事。
核技巧
Kernel trick通过将数据映射到高维空间,使得我们可以在高维空间中使用线性函数来分离数据,避免了高维度数据带来的问题。具体来说,它使用核函数(Kernel Function)来计算数据在高维空间中的点积,而不是通过显式计算高维特征向量来实现。这样,我们可以在低维空间中计算高维空间中的点积,从而避免了高维度数据带来的计算负担。
PCA,LDA降维
关于降维,前面已经写过不少文章了,在图像压缩,人脸识别中,涉及到图像的存储,传输和计算,降维的目的无非就是减少存储空间,提升传输效率,加速相似度计算等。但除此之外,还有一个作用,那就是经降维后,在变换后的特征空间中,有相似特征的会聚在一起,异类会散开,这就更有利于后续任务。
如何实现降维?
最简单的就是利用统计学知识直接去掉重复列,没有用的列,异常值多的列。但很多时候很难分析特征的相关性,例如图像。所以,更常用的是主成分分析,也就是对矩阵进行特征分解或者奇异值分解,在线性代数中,我们知道非方阵与向量的乘法能实现向量维度的变换,所以我们接下来就是去构造这个非方阵。
特征值分解要求方阵,一般都是协方差矩阵,一个N维方阵,特征值个数最大为N,特征向量维度为N,所以只要选取前M个特征值,M小于N,由此构成的矩阵就是M*N的非方阵。用该矩阵去乘以原始特征向量就能实现N维特征到M维的转换。
总结:
降低维度,你就能更加高效的完成高维空间无法完成的事。
在著名的科幻小说《三体》中,作者刘慈欣为我们描述了歌者文明攻击地球文明的可怕场景, 一种叫做“二向箔”的“维度打击”武器被投掷到了太阳系,对包括地球在内的太阳系空间 进行了残酷的“降维攻击" —— 三维空间中的一维无限蜷缩,太阳系内所有的物质都塌缩到 了二维空间中,就像一只猴子被压缩到了一张绝对平面的纸上,人类文明也随之灭亡。
现在到了我最喜欢的环节,说一下由此引发的思考。
1.要取得压倒性的优势,要比竞争对手站在更高的层次,或具备更高的思维或战略。
2. 弱小事物要打败强大事物,可以将强大事物的生存维度降低一个层次;在同一层级下,强大事物失去了原有的竞争优势,而弱小事物可以发挥独特优势,从而超越竞争对手。
上述两种情况都属于降维打击的范畴,一是对自己升维进行降维打击;二是对竞争对手降维(其实本质上也是自己先升维再降维打击)。