子空间是什么?大空间中自成体系的一部分
子空间(Subspace)是线性代数中的一个基本概念:一个向量空间中的一部分,如果它本身也满足向量空间的所有要求,就叫作这个向量空间的子空间。在机器学习中,“子空间”的思想被广泛地用于降维、聚类、集成学习和模型微调等方面。
什么样的子集是子空间
一个向量空间的子集要成为子空间,需要满足三个条件:包含零向量;对加法封闭,子集中任意两个向量相加,结果仍然在这个子集中;对数乘封闭,子集中任何一个向量乘以任意一个数,结果仍然在这个子集中。直观地理解,在我们熟悉的三维空间中:任何一个经过原点的平面都是一个二维子空间,平面上的两个向量相加仍在平面上,向量伸缩之后也仍在平面上;任何一条经过原点的直线都是一个一维子空间;只包含原点的集合是零维的子空间;整个三维空间本身也是它自己的子空间。但一个不经过原点的平面不是子空间,因为它不包含零向量。子空间的维数,就是确定这个子空间所需要的、相互独立的方向的个数。比如一个平面由两个不共线的向量“张成”,它是二维的。
投影
与子空间密切相关的一个操作是投影:把一个向量投射到某个子空间上,找到子空间中离它最近的那个点。就像阳光下物体在地面上留下的影子。投影之后的向量与原向量之间的差,垂直于子空间。最小二乘法就可以从投影的角度来理解:线性回归的预测值,正是把观测值的向量投影到由各个特征张成的子空间上得到的结果。
主成分分析:找到最重要的子空间
主成分分析是最经典的降维方法,它的本质是寻找一个低维的子空间,使得把数据投影到这个子空间上之后,保留的信息最多,也就是数据的方差最大,或者说投影造成的损失最小。比如一组三维的数据点,实际上大致分布在一个平面附近,主成分分析就能找到这个平面,把数据投影到上面,用二维的坐标来表示它们,几乎不丢失信息。这个子空间由数据协方差矩阵最大的几个特征值所对应的特征向量张成。
子空间聚类
在很多实际问题中,数据并不是分布在单个低维子空间中,而是分布在多个不同的低维子空间中,每一组数据属于其中的一个。比如在人脸识别中,同一个人在不同光照条件下的人脸图片,近似地分布在一个低维的子空间中,不同的人对应着不同的子空间;在视频中,不同运动物体上的特征点轨迹,也分别位于不同的子空间中。子空间聚类的任务就是把数据划分到各自所属的子空间中,代表方法有稀疏子空间聚类和低秩表示等。
随机子空间方法
在集成学习中,随机子空间方法由何天琴在 1998 年提出:在训练每一个基学习器时,不使用全部的特征,而是随机地选取一部分特征,也就是在特征空间的一个随机子空间中进行训练。这让不同的基学习器关注不同的特征组合,增加了它们之间的多样性。随机森林在每个节点上随机地选择候选特征,也体现了这一思想。
大模型中的低秩子空间
在大模型的微调中,LoRA 方法基于一个观察:微调时模型权重的变化量,通常位于一个维度很低的子空间中,也就是说它是低秩的。因此,不需要更新整个巨大的权重矩阵,只需要训练两个小矩阵,它们的乘积就能表示这个低维子空间中的变化,大大减少了需要训练的参数数量。研究者也发现,神经网络在训练过程中,参数的有效变化往往集中在一个远低于参数总数的“内在维度”中。