低秩近似之路(一):伪逆¶
Author: [苏剑林]
Link: [https://zhuanlan.zhihu.com/p/790279779]
最佳排版请看原博客:
低秩近似之路(一):伪逆 - 科学空间|Scientific Spaces可能很多读者跟笔者一样,对矩阵的低秩近似有种熟悉而又陌生的感觉。熟悉是因为,低秩近似的概念和意义都不难理解,加之目前诸如LoRA等基于低秩近似的微调技术遍地开花,让低秩近似的概念在耳濡目染间就已经深入人心;然而,低秩近似所覆盖的内容非常广,在低秩近似相关的论文中时常能看到一些不熟悉但又让我们叹为观止的新技巧,这就导致了一种似懂非懂的陌生感。
因此,在这个系列文章中,笔者将试图系统梳理一下矩阵低秩近似相关的理论内容,以补全对低秩近似的了解。而在第一篇文章中,我们主要介绍低秩近似系列中相对简单的一个概念——伪逆。
优化视角¶
伪逆(Pseudo Inverse),也称“广义逆(Generalized Inverse)”,顾名思义就是“广义的逆矩阵”,它实际上是“逆矩阵”的概念对于不可逆矩阵的推广。
我们知道,对于矩阵方程AB=M,如果A 方阵且可逆,那么直接得到B=A^{-1}M,可如果A 可逆或者干脆不是方阵呢?这种情况下我们很可能找不到B 足AB=M,这时候我们如果还想继续下去的话,通常是转为优化问题
\mathop{\text{argmin}}_B \Vert AB - M\Vert_F^2\label{eq:loss-ab-m} \
其中A\in\mathbb{R}^{n\times r}, B\in\mathbb{R}^{r\times m}, M\in\mathbb{R}^{n\times m},注意数域是\mathbb{R},表明本系列文章关注的都是实矩阵,而\Vert\cdot\Vert_F 矩阵的F 数(Frobenius Norm),用来衡量矩阵AB - M 全零矩阵的距离,其定义为
\Vert M\Vert_F = \sqrt{\sum_{i=1}^n\sum_{j=1}^m M_{i,j}^2} \
说白了,就是从求精确的逆矩阵改为最小化AB M 平方误差。本系列的主题是低秩近似,所以下面假设r \ll \min(n,m),其机器学习意义就是通过低维的、有损的输入矩阵A 线性变换B 重建完整的M 阵。
当m=n M 单位阵I_n ,我们就得到一个只依赖于A 结果,记为
A^{\dagger} = \mathop{\text{argmin}}_B \Vert AB - I_n\Vert_F^2\label{eq:loss-ab-m-b} \
它的作用类似于A 逆矩阵,所以称为A “(右)伪逆”。类似地,如果给定的是B 阵,那么我们也可以将优化参数改为A,得到B “(左)伪逆”:
B^{\dagger} = \mathop{\text{argmin}}_A \Vert AB - I_n\Vert_F^2 \
范数相关¶
在进一步推导之前,我们先补充一下F 数的相关介绍。向量的范数想必很多读者已经熟知,比较经典的就是“p-范数”:对于x=(x_1,x_2,\cdots,x_m),其p-范数定义为
\Vert x\Vert_p = \sqrt[\uproot{10}p]{\sum_{i=1}^m |x_i|^p} \
而p-范数中,最常见的就是p=2 情形,它就是我们经常说的向量模长,也叫“欧几里得范数”,如果省略范数的下标只写\Vert x\Vert,那么基本上就是默认p=2。
矩阵的范数稍微复杂一些,它至少有两种不同但都常用的范数,其中一种就是上一节已经提到的F 数,它是直接将矩阵展平为向量来计算的范数:
\Vert M\Vert_F = \Vert \text{vec}(M)\Vert_2 = \sqrt{\sum_{i=1}^n\sum_{j=1}^m M_{i,j}^2} \
其他矩阵范数我们遇到时再作介绍。由于矩阵范数的多样性,所以\Vert M\Vert_F 下标{}_F 常不能省略,以免引起混淆。F 数是将矩阵当成向量然后照搬向量范数的定义而来的,由此启发我们可以尝试把更多的向量运算搬到矩阵中去,比如内积:
\langle P, Q \rangle_F = \langle \text{vec}(P), \text{vec}(Q) \rangle = \sqrt{\sum_{i=1}^n\sum_{j=1}^m P_{i,j} Q_{i,j}} \
这称为矩阵P,Q F 积(Frobenius Inner Product),其中P,Q\in\mathbb{R}^{n\times m},它可以用向量的迹运算来表示
\langle P, Q \rangle_F = \text{Tr}(P^{\top} Q) \
这可以直接由矩阵乘法和迹的定义来证明(请读者尝试一下)。当P,Q 由多个矩阵连乘而来时,转换为等价的迹运算通常能帮助我们进行化简。比如,利用它我们可以证明正交变换不改变F 数:假设U 一个正交矩阵,利用\Vert M\Vert_F^2 = \langle M, M \rangle_F 及F 积与迹的关系,得到
\Vert UM\Vert_F^2 = \text{Tr}((UM)^{\top} UM)= \text{Tr}(M^{\top} U^{\top}UM)=\text{Tr}(M^{\top} M) = \Vert M\Vert_F^2 \
矩阵求导¶
言归正传,对于一个优化目标,最理想的结果自然是能够通过求导来求出解析解,而\eqref{eq:loss-ab-m} 好能实现这一点!改结论可以简单“目测”出来:AB-M 关于B 线性函数,所以\Vert AB-M\Vert_F^2 关于A B 二次函数,二次函数的最小值有解析解的。
要求\mathcal{L}=\Vert AB-M\Vert_F^2 于B 导数,首先要求\mathcal{L} 于E=AB-M 导数,然后求E 于B 导数,最后通过链式法则组合起来,即
\frac{\partial \mathcal{L}}{\partial B_{i,j}} = \sum_{k,l}\frac{\partial \mathcal{L}}{\partial E_{k,l}}\frac{\partial E_{k,l}}{\partial B_{i,j}} \
根据定义\mathcal{L}=\Vert E\Vert_F^2 = \sum_{i,j} E_{i,j}^2,很明显在求和的众多平方中只有当(i,j)=(k,l) ,关于E_{k,l} 导数才不为零,所以\mathcal{L} 于E_{k,l} 导数就是E_{k,l}^2 于E_{k,l} 导数,即\frac{\partial \mathcal{L}}{\partial E_{k,l}}=2E_{k,l};接着,根据矩阵乘法的定义有
E_{k,l} = \left(\sum_{\alpha} A_{k,\alpha}B_{\alpha,l}\right) - M_{k,l} \
类似地,只有当(\alpha,l)=(i,j) ,上式对B_{i,j} 导数才会产生非零的结果A_{k,i},所以我们可以写出\frac{\partial E_{k,l}}{\partial B_{i,j}}=A_{k,i}\delta_{l,j},这里的\delta_{l,j} Kronecker符号,用来声明l=j 条件。将结果组合起来,我们就得到
\frac{\partial \mathcal{L}}{\partial B_{i,j}} = \sum_{k,l}E_{k,l}A_{k,i}\delta_{l,j} = \sum_k E_{k,j}A_{k,i} \
如果我们约定,标量对矩阵的梯度形状跟矩阵本身一致,那么可以写出
\frac{\partial \mathcal{L}}{\partial B} = 2A^{\top}(AB-M) \
虽然推导过程破费周折,但好在结果还是很直观的:直觉上\frac{\partial \mathcal{L}}{\partial B} 是2(AB-M) A 乘积(类比标量求导),而我们已经约定\frac{\partial \mathcal{L}}{\partial B} 状跟B 状一致(即r\times m),所以就要想办法通过2(AB-M)\in\mathbb{R}^{n\times m} A\in\mathbb{R}^{n\times r} 乘来凑出一个r\times m 结果来,结果就只有上式右端一种方式。根据同样原理,我们可以快速写出
\frac{\partial \mathcal{L}}{\partial A} = 2(AB-M)B^{\top} \
基本结果¶
现在我们已经分别求出了\frac{\partial \mathcal{L}}{\partial B} \frac{\partial \mathcal{L}}{\partial A},让它们等于零便可以解出相应的最优解 \begin{align} 2A^{\top}(AB-M)=0\quad\Rightarrow\quad (A^{\top} A)^{-1}A^{\top}M = \mathop{\text{argmin}}_B \Vert AB - M\Vert_F^2 \ 2(AB-M)B^{\top}=0\quad\Rightarrow\quad MB^{\top}(B B^{\top})^{-1} = \mathop{\text{argmin}}_A \Vert AB - M\Vert_F^2 \end{align}\ 代入M=I_n,就得到
\begin{aligned}A^{\dagger} = (A^{\top} A)^{-1}A^{\top} \label{eq:p-inv-a}\ B^{\dagger} = B^{\top}(B B^{\top})^{-1}\label{eq:p-inv-b}\end{aligned}\
如果A B 可逆方阵,那么容易证明伪逆就等于逆矩阵,即A^{\dagger}=A^{-1},B^{\dagger}=B^{-1}。此外,根据上式我们还可以验证:
1、(A^{\dagger})^{\dagger}=A,(B^{\dagger})^{\dagger}=B,即伪逆的伪逆等于自身,这意味着伪逆在作为近似逆矩阵的同时,保全了自身的信息;
2、AA^{\dagger}A=A,B^{\dagger}BB^{\dagger}=B^{\dagger},即AA^{\dagger},B^{\dagger}B 然没法成为单位阵I,但对A,B^{\dagger} 说它们起到了单位阵的作用。
顺便说一下,矩阵的伪逆实际上是一个很宽泛的概念,它有很多种不同的形式,这里我们介绍的实际上是最常见的“https://en.wikipedia.org/wiki/Moore–Penrose_inverse”,除此之外还有“Drazin逆”、“Bott–Duffin逆”等,但这些笔者也不了解,所以就不作展开,读者可以自行参考维基百科的“https://en.wikipedia.org/wiki/Generalized_inverse”条目。
一般形式¶
不过,事情还没完。式\eqref{eq:p-inv-a},\eqref{eq:p-inv-b} 立还有个关键前提是相应的A^{\top} A B B^{\top} 逆,如果不可逆呢?
我们以A^{\dagger} 例,假设A^{\top} A 可逆,那么意味着A 秩不足r,我们只能从中找到s < r 列向量构成的极大线性无关组构成矩阵A_s\in\mathbb{R}^{n\times s},然后A 以表示成A_s P,其中P\in\mathbb{R}^{s\times r} A_s A 矩阵。此时
\mathop{\text{argmin}}_B \Vert AB - I_n\Vert_F^2 = \mathop{\text{argmin}}_B \Vert A_s PB - I_n\Vert_F^2 \
如果B 最优解仍然记为A^{\dagger},那么我们只能确定
PA^{\dagger} = A_s^{\dagger} = (A_s^{\top} A_s)^{-1}A_s^{\top} \
由于已经假设了A_s 极大线性无关组,所以A_s^{\top} A_s 然可逆,因此上式是良好定义的。然而,从A^{\dagger} PA^{\dagger} 一个降维到过程,这意味着存在多个A^{\dagger} 得PA^{\dagger} = A_s^{\dagger},即此时目标\eqref{eq:loss-ab-m-b} 最优解并不唯一,换言之当A^{\top} A 可逆时我们无法只凭目标\eqref{eq:loss-ab-m-b} 确定唯一的伪逆A^{\dagger}。
一个可能的思路是补充(A^{\dagger})^{\dagger}=A A^{\dagger}AA^{\dagger}=A^{\dagger},这样结合PA^{\dagger} = A_s^{\dagger} 可以唯一地确定A^{\dagger}。然而,这样打补丁的味道太浓了,实际上我们可以用一个精妙的技巧更优雅和统一地处理这个问题。问题出在当A^{\top} A 可逆时,目标函数\eqref{eq:loss-ab-m-b} 是严格正定的,我们可以加上一个正则项让它变得正定,求出结果后再让正则项的权重趋于零:
A^{\dagger} = \lim_{\epsilon\to 0}\,\mathop{\text{argmin}}_B \Vert AB - I_n\Vert_F^2 + \epsilon\Vert B\Vert_F^2 \
这里\epsilon > 0,\epsilon\to 0 指正向趋于零。由上式可以解得
A^{\dagger} = \lim_{\epsilon\to 0}\,(A^{\top} A + \epsilon I_r)^{-1}A^{\top}\label{eq:a-pinv-lim} \
当\epsilon > 0 ,A^{\top} A + \epsilon I_r 然是可逆的(请读者证明一下),因此上式是良好定义的。由于\epsilon\to 0 ,正则项可以忽略不计,所以上述极限必然是存在的。注意,这里说的是整体极限的存在性,当A^{\top} A 可逆时,极限\lim\limits_{\epsilon\to 0}\,(A^{\top} A + \epsilon I_r)^{-1} 不存在的(结果会出现无穷大),只有乘上A^{\top} 整体再取极限才是正常的。
式\eqref{eq:a-pinv-lim} 为伪逆的一般推广有什么优点呢?首先,我们已经有了A^{\top} A 逆时的A^{\dagger} 达式\eqref{eq:p-inv-a},式\eqref{eq:a-pinv-lim} 为它的推广,具有直观且形式一致的理论优雅性;其次,形式上的一致也使得A^{\top} A 逆时A^{\dagger} 性质如(A^{\dagger})^{\dagger} 够得以保留,从而让我们在讨论A^{\dagger} 几乎可以完全不考虑A^{\top} A 可逆性。
数值计算¶
当然,目前的式\eqref{eq:a-pinv-lim} 是一个形式化的定义,如果直接利用它来数值计算的话,就必须取一个足够小的\epsilon 后把(A^{\top} A + \epsilon I_r)^{-1} 出来,这样必然会面临严重的数值不稳定性。为了得到一个稳定的计算方式,我们利用实对称矩阵总可以正交对角化这一特点(https://en.wikipedia.org/wiki/Spectral_theorem),对A^{\top} A 如下分解:
A^{\top} A = U\Lambda U^{\top} \
其中U 正交矩阵,\Lambda=\text{diag}(\lambda_1,\lambda_2,\cdots,\lambda_r) 特征值组成的对角矩阵,由于A^{\top} A 半正定性,它的特征值总是非负的。利用这个分解,我们有
\begin{aligned} (A^{\top} A + \epsilon I_r)^{-1}A^{\top} =&\, (U\Lambda U^{\top} + \epsilon I_r)^{-1} A^{\top} \ =&\, [U(\Lambda + \epsilon I_r) U^{\top}]^{-1}A^{\top} \ =&\, U(\Lambda + \epsilon I_r)^{-1} U^{\top}A^{\top} \end{aligned}\
对于(\Lambda + \epsilon I_r)^{-1} 们有
(\Lambda + \epsilon I_r)^{-1} = \text{diag}\Big((\lambda_1 + \epsilon)^{-1},(\lambda_2 + \epsilon)^{-1},\cdots,(\lambda_r + \epsilon)^{-1}\Big) \
如果\lambda_i > 0,那么\lim\limits_{\epsilon\to 0}\,(\lambda_i + \epsilon)^{-1}=\lambda_i^{-1},这是有限的结果,不妨碍计算,问题出现在\lambda_i = 0 \lim\limits_{\epsilon\to 0}\,(\lambda_i + \epsilon)^{-1}=\lim\limits_{\epsilon\to 0}\,\epsilon^{-1}\to\infty 。然而,我们知道\epsilon\to 0 正则项的影响就会消失,所以断定极限\eqref{eq:a-pinv-lim} 然不会出现无穷大值,因此如果存在\lambda_i=0,那么右端所乘的U^{\top}A^{\top} 然有办法抵消\lim\limits_{\epsilon\to 0}\, \epsilon^{-1} 来的无穷大。而能抵消这种无穷大的,唯有“乘以0”,即\lim\limits_{\epsilon\to 0}\, \epsilon^{-1}\times 0 = 0。
换句话说,如果\lambda_i=0,那么U^{\top}A^{\top} (\lambda_i+\epsilon)^{-1} 乘的因子必然是0。既然如此,由于“0乘任何数都得0”,所以其实\lambda_i=0 (\lambda_i+\epsilon)^{-1} 取值反而不重要,我们可以简单地让它等于0。这样一来,我们就得到了一种通用的计算A^{\dagger} 简单方法:
A^{\dagger} = U\Lambda^{\dagger}U^{\top}A^{\top}, \quad A^{\top} A = U\Lambda U^{\top} \
其中\Lambda^{\dagger} 示对角线上的元素如果等于零则不变,非零则取倒数。
可能有读者疑问,既然“0乘任何数都得0”,那么为什么等于零的\lambda_i 不变呢?随意取一个别的值可以吗?其实这里随便取一个值也不会影响结果的,但由于我们用了\Lambda^{\dagger} 个记号,那么就要保持它跟式\eqref{eq:a-pinv-lim} 一致性,即它跟将对角阵\Lambda 入式\eqref{eq:a-pinv-lim} 直接计算结果要一致
\Lambda^{\dagger} = \lim_{\epsilon\to 0}\,(\Lambda^{\top} \Lambda + \epsilon I_r)^{-1}\Lambda^{\top} = \text{diag}(\kappa_1,\kappa_2,\cdots,\kappa_n),\quad \kappa_i = \left{\begin{aligned}\lambda_i^{-1}, \,\,\lambda_i\neq 0 \ 0, \,\,\lambda_i=0 \end{aligned} \right. \
文章小结¶
在这篇文章中,我们从低秩近似的角度介绍了伪逆,这是逆矩阵概念对于非方阵或不可逆方阵的扩展,使我们可以更有效地分析和求解一般的矩阵方程。
评论