矩阵的有效秩(Effective Rank)
By 苏剑林 | 2025-04-10 | 4811位读者 |秩(Rank)是线性代数中的重要概念,它代表了矩阵的内在维度。然而,数学上对秩的严格定义,很多时候并不完全适用于数值计算场景,因为秩等于非零奇异值的个数,而数学上对“等于零”这件事的理解跟数值计算有所不同,数学上的“等于零”是绝对地、严格地等于零,哪怕是10−100也是不等于零,但数值计算不一样,很多时候10−10就可以当零看待。
因此,我们希望将秩的概念推广到更符合数值计算特性的形式,这便是有效秩(Effective Rank)概念的由来。
误差截断 #
需要指出的是,目前学术界对有效秩并没有统一的定义,接下来我们介绍的是一些从不同角度切入来定义有效秩的思路。对于实际问题,读者可以自行选择适合的定义来使用。
接下来我们主要从奇异值的角度来考虑秩。对于矩阵\boldsymbol{M}\in\mathbb{R}^{n\times m},不失一般性,设n\leq m,那么它的标准秩为
\begin{equation}\mathop{\text{rank}}(\boldsymbol{M}) \triangleq \max\{i\,|\,\sigma_i > 0\}\leq n\end{equation}
其中\sigma_1\geq \sigma_2\geq \cdots\geq\sigma_n \geq 0是\boldsymbol{M}的奇异值。直观上,有效秩的概念就是为了将接近于零的奇异值当成零处理,所以有效秩的一个基本属性是不超过标准秩,并且特殊情况下能退化成标准秩。满足该属性的一个简单的定义是
\begin{equation}\mathop{\text{erank}}(\boldsymbol{M},\epsilon) \triangleq \max\{i\,|\,\sigma_i > \epsilon\}\end{equation}
然而,“大”与“小”的概念应该是相对的,1相对于0.01大,但相对于100就小了,所以看起来除以\sigma_1来标准化一下更科学:
\begin{equation}\mathop{\text{erank}}(\boldsymbol{M},\epsilon) \triangleq \max\big\{i\,\big|\,\sigma_i/\sigma_1 > \epsilon\big\}\end{equation}
除了直接对接近于零的奇异值进行截断外,我们还可以从低秩近似的角度来考虑这个问题。在《低秩近似之路(二):SVD》我们证明了,一个矩阵的最优r秩近似就是只保留最大的r个奇异值的SVD结果。反过来,我们可以指定一个相对误差\epsilon,将有效秩定义为可以达到这个相对误差的最小秩:
\begin{equation}\mathop{\text{erank}}(\boldsymbol{M},\epsilon) \triangleq \min\left\{ i\,\,\left|\,\,\sqrt{\left(\sum_{i=1}^r \sigma_i^2\right)\left/\left(\sum_{i=1}^n \sigma_i^2\right.\right)} \geq 1-\epsilon\right.\right\}\end{equation}
这个定义的数值意义更清晰,但它只考虑了总体误差,所以有些例子反而不大优雅。比如n\times n的单位阵,我们期望它的有效秩总是n,因为每个奇异值都是等同的1,不应有任何截断行为。但采用上述定义的话,当n足够大(1/n < \epsilon)时,有效秩就会小于n。
范数之比 #
上一节定义的有效秩虽然直观,但都依赖于一个超参数\epsilon,终究是不够简洁。现在我们的基本认知是有效秩的概念只能依赖于相对大小,所以问题等价为从1\geq \sigma_2/\sigma_1\geq\cdots\geq\sigma_n/\sigma_1\geq 0中构建有效秩。由于都在[0,1]内的特点,一个巧妙的想法是直接将它们求和
\begin{equation}\mathop{\text{erank}}(\boldsymbol{M}) \triangleq \sum_{i=1}^n\frac{\sigma_i}{\sigma_1}\end{equation}
从《低秩近似之路(二):SVD》我们知道,最大的奇异值\sigma_1是矩阵的谱范数(Spectral Norm),记为\Vert\boldsymbol{M}\Vert_2,而所有奇异值之和实际上也是一个矩阵范数,称为“核范数(Nuclear Norm)”,通常记为\Vert\boldsymbol{M}\Vert_*,于是上式也可以简记为
\begin{equation}\mathop{\text{erank}}(\boldsymbol{M}) \triangleq \frac{\Vert\boldsymbol{M}\Vert_*}{\Vert\boldsymbol{M}\Vert_2}\label{eq:n-2}\end{equation}
这最早的出处可能是《An Introduction to Matrix Concentration Inequalities》,在里边被称为“Intrinsic Dimension”,但相关性质在《Guaranteed Minimum-Rank Solutions of Linear Matrix Equations via Nuclear Norm Minimization》已经被探讨过了。
类似地,我们也可以通过平方求和来构建有效秩:
\begin{equation}\mathop{\text{erank}}(\boldsymbol{M}) \triangleq \sum_{i=1}^n\frac{\sigma_i^2}{\sigma_1^2} = \frac{\Vert\boldsymbol{M}\Vert_F^2}{\Vert\boldsymbol{M}\Vert_2^2}\label{eq:f-2}\end{equation}
这里的\Vert\cdot\Vert_F是F范数。该定义的出自应该是《Sampling from large matrices: an approach through geometric functional analysis》,当时被称为“Numerical Rank”,如今更多称为“Stable Rank”,是比较流行的有效秩概念之一。
从计算复杂度来看,式\eqref{eq:f-2}比式\eqref{eq:n-2}更低。因为计算核范数需要全体奇异值,这意味着需要完整的SVD;而\Vert\boldsymbol{M}\Vert_F^2又等于矩阵所有元素的平方和,所以式\eqref{eq:f-2}主要的计算量是最大奇异值,这比计算全体奇异值成本更低。如果愿意,我们还可以将式\eqref{eq:n-2}、式\eqref{eq:f-2}推广到k次方求和,结果实际上是更一般的Schatten范数与谱范数之比。
分布与熵 #
读者如果直接搜索“Effective Rank”,大概率会搜到论文《The Effective Rank: a Measure of Effective Dimensionality》,这也是比较早探讨有效秩的文献,里边提出基于熵来定义有效秩。
首先,由于奇异值总是非负的,我们可以将它归一化得到一个概率分布:
\begin{equation}p_i = \frac{\sigma_i^{\gamma}}{\sum_{j=1}^n \sigma_j^{\gamma}}\end{equation}
其中\gamma > 0,从文献看\gamma=1和\gamma=2都经常有人用(我们在Moonlight中用了\gamma=2),下面我们都以\gamma=1为例。有了概率分布,那么就可以计算信息熵(香农熵):
\begin{equation}H = -\sum_{i=1}^n p_i \log p_i\end{equation}
回忆一下,熵的值域是[0, \log n],取指数后则有e^H \in [1, n],当分布是One Hot时e^H=1(只有一个非零奇异值),当分布均匀时e^H=n(全体奇异值相等),这正好是标准秩的两个特殊例子,这启发我们可以将有效秩定义为
\begin{equation}\mathop{\text{erank}}(\boldsymbol{M}) \triangleq e^H = \exp\left(-\sum_{i=1}^n p_i \log p_i\right)\label{eq:h-erank}\end{equation}
代入p_i的定义,我们发现它可以进一步变换成
\begin{equation}\mathop{\text{erank}}(\boldsymbol{M}) = \exp\left(\log\sum_{i=1}^n \sigma_i -\frac{\sum_{i=1}^n \sigma_i\log\sigma_i}{\sum_{i=1}^n \sigma_i}\right)\end{equation}
很明显括号内的第一项\exp后就是\Vert\boldsymbol{M}\Vert_*;第二项是\log\sigma_i的加权平均,权重是\sigma_i,此时\log\sigma_i会约等于最大的\log\sigma_1,取指数后即\sigma_1=\Vert\boldsymbol{M}\Vert_2。所以,上式总的结果将会近似于式\eqref{eq:n-2},这表明了基于熵来定义有效秩看似是一条截然不同的路径,但实际上跟上一节的范数之比有异曲同工之妙。
我们知道,标准秩满足三角不等式\mathop{\text{rank}}(\boldsymbol{A}+\boldsymbol{B})\leq \mathop{\text{rank}}(\boldsymbol{A}) + \mathop{\text{rank}}(\boldsymbol{B}),而原论文证明了,对于(半)正定对称矩阵\boldsymbol{A},\boldsymbol{B},式\eqref{eq:h-erank}所定义的有效秩满足\mathop{\text{erank}}(\boldsymbol{A}+\boldsymbol{B})\leq \mathop{\text{erank}}(\boldsymbol{A}) + \mathop{\text{erank}}(\boldsymbol{B}),尚不清楚这个不等式是否可以推广到一般矩阵。目前看来,证明有效秩能否保持标准秩的一些不等式,是一件并不容易的事情。
稀疏指标 #
从上述一系列有效秩的定义中,尤其是从奇异值到分布再到熵的转变,相信已经有读者隐约意识到,有效秩跟稀疏性有明显的共性,实际上有效秩可以理解为奇异值向量的一个稀疏性度量,跟一般的稀疏性指标不同的是,我们会将值域对齐到1\leq \mathop{\text{erank}}(\boldsymbol{M}) \leq \mathop{\text{rank}}(\boldsymbol{M}) \leq n,使其跟秩的概念对齐,从而更直观地感知稀疏程度。
关于稀疏性度量,我们曾在《如何度量数据的稀疏程度?》有过比较系统的讨论,理论上那里边的结果都可以用来构造有效秩。事实上我们也是这样做的,“范数之比”一节中我们基于Schatten范数与谱范数之比来构建有效值,其实只相当于那篇文章的公式(1),我们还可以其他公式如(16),它相当于将有效秩定义为核范数和F范数之比的平方:
\begin{equation}\mathop{\text{erank}}(\boldsymbol{M}) \triangleq \frac{\Vert\boldsymbol{M}\Vert_*^2}{\Vert\boldsymbol{M}\Vert_F^2} = \frac{(\sum_{i=1}^n\sigma_i)^2}{\sum_{i=1}^n\sigma_i^2}\end{equation}
这同样满足1\leq \mathop{\text{erank}}(\boldsymbol{M}) \leq \mathop{\text{rank}}(\boldsymbol{M}),是一个可用的有效秩定义。
非常神奇,我们关于有效秩和稀疏性的认知,在无形之中达成了闭环。不得不说这是一种很美妙的体验:笔者开始学习稀疏性度量时对有效秩是一无所知的,而这几天在学习有效秩时,慢慢意识到它跟稀疏性本质是相通的,冥冥之中似乎有一种神秘力量,将我们在不同领域、不同学科中积累的知识悄然串联起来,最终汇聚在同一个正确的方向上。
文章小结 #
本文探讨了矩阵的有效秩(Effective Rank)概念,它是线性代数中矩阵的秩(Rank)概念在数值计算方面的延伸,能够更有效地度量矩阵的本质维度。
转载到请包括本文地址:https://spaces.ac.cn/archives/10847
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Apr. 10, 2025). 《矩阵的有效秩(Effective Rank) 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/10847
@online{kexuefm-10847,
title={矩阵的有效秩(Effective Rank)},
author={苏剑林},
year={2025},
month={Apr},
url={\url{https://spaces.ac.cn/archives/10847}},
}
April 11th, 2025
good
April 14th, 2025
苏神你好!看到您的这个刚好想起以前一些工作会使用SVD对图像进行处理,图像的秩如何确定呢?