事先叠甲:本文中的所有公式都较为简单,且可能不够严谨。本文的作用主要是在几何上去理解矩阵论中的一些重要概念,并给出一些常用的代数上的公式。
范数 (Norm)
一种具有 “长度” 概念的抽象数学概念,本质是函数,用于量化的抽象概念。范数最容易被定义的数学概念是向量的模长,也就是向量的长度,因此可以说抽象的范数概念事实上就是向量模长的延伸,或者说向量的长度是一种特殊的常见范数。
半范数(seminorm) $p$,满足:
- $p(\bm{v}) \geq 0$
- $p(a\bm{v}) = \vert a \vert p(\bm{v})$
- $p(\bm{u} + \bm{v}) \leq p(\bm{u}) + p(\bm{v})$
其中,$\bm{v}$ 可以是任意的代数概念,常见的可以是实数(对应绝对值),向量(对应模长)等等。
半并非 1/2 的含义,而是接近(准)的含义,半范数对比范数缺少了一些核心的要求,性质更弱,但保留了核心框架;类似的概念还有群和半群等等。因此我认为半x存在的含义是因为场景允许非平凡的零空间,且零空间具有明确的含义,可以为特定的场景定制所需的零空间。
我的理解上,这个“半”的可能用“准”来描述更贴切。
范数在半范数的基础上,由于零空间的特殊性,需要额外满足:
- $p(\bm{v}) = 0$,当且仅当 $\bm{v}$ 是零向量。
符号上,通常用 $\Vert \bm{x} \Vert$ 来表示范数。
矩阵范数
在满足上述范数条件的基础上,对常见的算子范数,会因为矩阵的性质而自然地额外满足:
- $\Vert AB \Vert \leq \Vert A \Vert \Vert B \Vert$
- $\Vert A \Vert = \Vert A^* \Vert$,$A^*$ 为共轭转置,实数范围内等价于$A^T$
矩阵范数和行列式的区别
行列式的几何含义是体积的缩放因子(可正可负可零),范数的含义考虑最极端的缩放(大于等于零)。
常见的矩阵范数
矩阵的范数会因为具体的应用场景不同而有不同的计算方式,主要原因还是说对这玩意的长度认识可以有不同的角度去求出一个满足范数定义的函数。但虽然种类很多,常用的却只有这么几个。
向量范数诱导的矩阵范数
“诱导”(induced),指从一个数学结构中自然的衍生出另一个结构。
“诱导范数” (induced norm)代表了矩阵对向量的放大能力,可以说此时的矩阵代表了一种线性变化,例如,有向量 $x$ 和矩阵 $A$,$x$ 的长度为 $\Vert x \Vert$,那么 $Ax$ 的长度为$\Vert Ax \Vert$。
因此会如有如下的等式:
$\Vert A \Vert_{p} = max\lbrace \frac{\Vert Ax\Vert_{p}}{\Vert x \Vert_{p}} \rbrace, x \neq 0$
p-范数诱导的矩阵范数
$p = 1$ 时,为最大列和。
$p = \infty$ 时,为最大行和。
$p = 2$ (欧几里得范数)时,又称为谱范数,$\Vert A \Vert_{2} = \sqrt{\lambda_{max}(A^{*}A)}$
谱范数应该是一个最为常用的范数,代表的含义就是向量模长的放大能力,很直观地符合向量范数的常规定义。
矩阵元范数
有别于诱导范数,矩阵元范数是将矩阵看成了一个 $m×n$ 的向量,用类似的向量范数。
$\Vert A \Vert_{l}=(\sum_{i=1}^{n}\sum_{j=1}^{m}\vert a_{ij}\vert^{l})^{\frac{1}{l}}$
弗罗贝尼乌斯范数
$l = 2$ 的矩阵元范数,很直观地理解就是每个元素的平方和开根,当 $n$ 或者 $m$ 等于 $1$ 的时候就退化为了向量模长。
这个范数有很多好用的性质,但这里不展现讲,详细请看“希尔伯特空间”。
极大值范数
$l = \infty$ 的矩阵元范数。
谱半径
矩阵的谱半径是矩阵任何诱导范数的下界,但是不属于任何一种范数。
矩阵或有界线性算子的谱半径是其特征值绝对值中的最大值,记作 $\rho(·)$ 。
$$ \rho(A) = max\lbrace \vert\lambda_{1}\vert, \vert \lambda_{2}\vert, …, \vert\lambda_{n}\vert \rbrace $$
条件数
该数量在数值计算中的容易程度的衡量,也就是该问题的适定性。一个低条件数的问题称为良置的,而高条件数的问题称为病态(或者说非良置)的。
条件数刻画的是线性变换后被拉伸的“扁率”。沿短轴方向的分量会被极度压缩,这意味着,输入中的微小误差,经过逆变换后,会被成倍放大,从而导致解对扰动高度敏感。
举个栗子:

上图是原始的网格,以及经过 $A$ 变换后的结果,原始网格是低条件数的也就是 $1$,正交方向比值都为 $1$,变换后的网格是高条件数的(我随机把原网格压扁的)。现在对这个网格参数化完后输入一组向量 $uv$,在原网格上很容易找到对应的点,但是在变换后的网格下,你很难说凭借 $uv$ 并且伴有一些误差,还能找到那个原始网格上真正想要的那个点。
$\kappa(A) = \Vert A^{-1} \Vert · \Vert A \Vert$
若$\Vert·\Vert$ 为 $l_2$ 矩阵范数,则:
$\kappa(A) = \frac{\sigma_{max}(A)}{\sigma_{min}(A)}$,其中 $\sigma_{max}(A)$, $\sigma_{min}(A)$ 分别为最大最小奇异值
- 若 $A$ 是正规矩阵,则:
$\kappa(A) = \vert\frac{\lambda_{max}(A)}{\lambda_{min}(A)}\vert = \rho(A) \rho(A^{-1}) $
正则化
为了改善条件数于是就有了正则化。
在数值计算里,一个很常见的问题是去解
$$ Ax \approx b $$
如果 $A$ 是病态矩阵,那么 $b$ 中很小的扰动也可能让最后的解变化很大。特别是某些奇异值很小的时候,求逆或者做最小二乘时就会把这些方向上的误差一起放大。
因此正则化做的事情其实很直接:不再只追求“拟合得最好”,而是同时限制解本身不要太极端。
Tikhonov正则化
对最小二乘问题
$$ \min_{x} \Vert Ax - b \Vert_2^2 $$
一种最常见的正则化方式就是额外加一个惩罚项:
$$ \min_{x} \Vert Ax - b \Vert_2^2 + \lambda \Vert x \Vert_2^2 $$
其中 $\lambda > 0$ 是正则化参数。
这个式子的含义比较自然:
- 第一项要求结果尽量拟合原数据
- 第二项要求解不要过大
对其求导并令导数为 $0$,可以得到:
$$ (A^TA + \lambda I)x = A^Tb $$
于是:
$$ x = (A^TA + \lambda I)^{-1}A^Tb $$
相比普通最小二乘的正规方程
$$ A^TAx = A^Tb $$
这里多出来了一个 $\lambda I$,而这个东西就是稳定性的来源。
几何理解
普通最小二乘会尽可能逼近 $b$,哪怕某些方向非常不稳定,也可能硬着头皮往这些方向上“追”。
但如果某个方向上的奇异值很小,那么沿这个方向稍微动一点,解向量的长度就可能暴涨。这样得到的解虽然残差可能更小,但数值上非常脆弱。
加上 $\lambda \Vert x \Vert_2^2$ 后,相当于在说:
可以拟合,但是不要为了拟合一点点误差,把解拉得特别长。
所以正则化解通常会更平滑,也更抗噪声。
为什么会改善条件数
设 $A$ 的奇异值为 $\sigma_1,\sigma_2,\cdots,\sigma_r$,那么 $A^TA$ 的特征值为
$$ \sigma_1^2,\sigma_2^2,\cdots,\sigma_r^2 $$
而 $A^TA + \lambda I$ 的特征值就变成了
$$ \sigma_1^2 + \lambda,\sigma_2^2 + \lambda,\cdots,\sigma_r^2 + \lambda $$
也就是说,原本接近 $0$ 的特征值被整体抬高了。因此矩阵不会那么接近奇异,逆也会稳定很多。
若 $A$ 满列秩,在 $l_2$ 范数下有:
$$ \kappa(A^TA + \lambda I) = \frac{\sigma_{max}^2 + \lambda}{\sigma_{min}^2 + \lambda} $$
当 $\lambda > 0$ 时,分母不再那么小,所以条件数通常会比 $\kappa(A^TA)$ 更好看。
从SVD的角度看
设
$$ A = U\Sigma V^T $$
则 Tikhonov 正则化的解可以写成
$$ x = \sum_{i=1}^{r}\frac{\sigma_i}{\sigma_i^2 + \lambda}(u_i^Tb)v_i $$
普通最小二乘里,小奇异值方向容易出现很大的放大效应;而这里的系数变成了
$$ \frac{\sigma_i}{\sigma_i^2 + \lambda} $$
当 $\sigma_i$ 很小时,这一项也会很小,因此这些不稳定方向上的贡献被压下去了。
参数 $\lambda$ 的作用
$\lambda$ 控制的是“拟合原数据”和“让解更稳定”之间的平衡。
- $\lambda$ 太小,效果接近普通最小二乘,抗噪声能力有限
- $\lambda$ 太大,解会被压得太厉害,结果可能偏得比较多
两个极端情况也很直观:
- 当 $\lambda \to 0$ 时,趋近普通最小二乘解
- 当 $\lambda \to +\infty$ 时,解会逐渐趋近于 $0$
截断SVD
除了 Tikhonov 正则化以外,还有一种也很常见的思路,就是直接把过小的奇异值对应的方向丢掉。
若
$$ A = U\Sigma V^T $$
只保留前 $k$ 个较大的奇异值,则得到截断后的近似矩阵
$$ A_k = U_k \Sigma_k V_k^T $$
对应的近似解为
$$ x_k = \sum_{i=1}^{k}\frac{1}{\sigma_i}(u_i^Tb)v_i $$
它和 Tikhonov 的想法其实差不多,都是少去相信那些特别小的奇异值方向,因为这些方向往往最容易把噪声带进来。
小结
正则化本质上不是让原问题“变简单”了,而是主动放弃一部分过度拟合,换一个更稳定的解。
所以在病态问题里,正则化求出来的解不一定是残差最小的那个,但通常是数值上更可信的那个。