banner
Fight4354

Fight4354

AI,Chem,Science,Study,Share,Hobby,LLM,Life,Sport

线性代数

这两天的学习过程对线性代数的认知逐渐清晰,我以此贴,把一些关键新内容汇总于此。

当面对矩阵、奇异值时,应该建立如下认知:
✅ 矩阵是空间操作器
✅ 奇异值分解帮你分解矩阵的精髓:旋转 → 拉伸 → 旋转
✅ 奇异值的大小排序,告诉你:矩阵在哪些方向上真正有力量,哪些方向是废

1、正交矩阵#

正交矩阵(Orthogonal Matrix)的核心定义

一个 n×nn \times n 实矩阵 QQ 如果满足

QTQ  =  QQT  =  InQ^{\mathsf T}\,Q \;=\; Q\,Q^{\mathsf T}\;=\;I_n

则称 QQ 为正交矩阵。
这里 QTQ^{\mathsf T} 是转置,InI_nnn 阶单位矩阵。

逆即转置

Q1=QTQ^{-1}=Q^{\mathsf T}

计算上省事,数值稳定。
正交矩阵就是 “保持内积” 的实矩阵—— 它把坐标系旋转或翻转,但绝不拉伸或扭曲。

2、尖括号#

在这里

qi,  qj\langle q_i,\;q_j\rangle

就是 “内积 (inner product)” 的符号。最常见的情形 —— 实数向量空间 Rn\mathbb R^n—— 它等同于我们熟悉的点积(dot product):

qi,  qj  =  qiTqj  =  k=1n(qi)k(qj)k.\langle q_i,\;q_j\rangle \;=\; q_i^{\mathsf T}\,q_j \;=\; \sum_{k=1}^n (q_i)_k\,(q_j)_k.

3、矩阵交换位置#

1. 消掉左边的 QQ

  • 贴在 SS左边的是 QQ

  • 用它的逆 Q1Q^{-1}左乘双方:

Q1A  =  Q1QSQTQ1A  =  SQTQ^{-1}\,A \;=\; \cancel{Q^{-1}Q}\,S\,Q^{\mathsf T} \quad\Longrightarrow\quad Q^{-1}A \;=\; S\,Q^{\mathsf T}

注意:

  • 必须左右一致地左乘;

  • 不要尝试把 Q1Q^{-1}乘到右边去(那会打乱乘积顺序)。

2. 消掉右边的 $Q^{\mathsf T}$

  • 贴在 SS 右边的是 QTQ^{\mathsf T}

  • 用它的逆 (QT)1(Q^{\mathsf T})^{-1}右乘双方:

Q1A(QT)1  =  SQT(QT)1S=Q1A(QT)1Q^{-1}A(Q^{\mathsf T})^{-1} \;=\; S\cancel{Q^{\mathsf T}(Q^{\mathsf T})^{-1}} \quad\Longrightarrow\quad S = Q^{-1}A(Q^{\mathsf T})^{-1}

QQ 是正交矩阵,Q1=QTQ^{-1}=Q^{\mathsf T},于是

S  =  QTAQ.S \;=\; Q^{\mathsf T}\,A\,Q.

为什么顺序不能颠倒?

  • 一旦乘错侧,符号会 “插” 到别的位置:
    AQ1Q1AAQ^{-1} \neq Q^{-1}A

  • 在等号两边必须 对称地 进行相同操作,等式才仍然成立。

  • 这本质上与函数复合顺序或坐标变换顺序相同:先做哪个变换、后做哪个变换都写在乘积的对应位置,绝不能随意交换。

4、相似对角化矩阵#

相似对角化矩阵(常说 “可对角化矩阵”)指的是:

存在一个可逆矩阵 PP,使得

P1AP=D,P^{-1}AP = D,

其中 DD 是对角矩阵。
此时说 AA 能通过相似变换被对角化,或简称 AA 可对角化

对角化的 “机械流程”

  1. 求特征值:解 det(AλI)=0\det(A-\lambda I)=0

  2. 求特征向量:对每个 λ\lambda,解 (AλI)x=0(A-\lambda I)x=0

  3. 组装 PP:把 nn 个互不相关的特征向量按列排成矩阵 PP

  4. 得到 DD:把对应特征值填进对角线:D=diag(λ1,,λn)D=\operatorname{diag}(\lambda_1,\dots,\lambda_n)
    就有 A=PDP1A = P D P^{-1}

5、奇异值分解#

A  =  QSQTS  =  QTAQA \;=\; Q\,S\,Q^{\mathsf T} \quad\Longleftrightarrow\quad S \;=\; Q^{\mathsf T} A Q
符号含义
AA给定的 实对称矩阵AT=AA^{\mathsf T}=A
QQ正交矩阵QTQ=IQ^{\mathsf T}Q=I,列向量两两正交且单位长度
SS对角矩阵S=diag(λ1,,λn)S=\operatorname{diag}(\lambda_1,\dots,\lambda_n)

写法 A=QSQTA=Q S Q^{\mathsf T} 称为 正交相似对角化;几何上就是 “旋转(或镜像)坐标系 → A 只剩独立的伸缩”。

1. 为什么 “实对称矩阵一定能正交对角化”?

光谱定理

对任何实对称矩阵 AA,存在正交矩阵 QQ 使得 QTAQQ^{\mathsf T} A Q 是对角的,且对角元就是 AA 的特征值。

  • 实特征值:对称保证特征值全是实数。
  • 正交特征向量:若 λiλj\lambda_i \ne \lambda_j,对应特征向量必正交。
  • 重根也能取正交基:同一特征值可能对应多个向量,这时在它们张成的子空间里再做 Gram–Schmidt 即可。

  1. 文字步骤逐条解析
步骤说明
1. 求出 AA 的全部特征值和特征向量计算 det(AλI)=0\det(A-\lambda I)=0 得到所有 λi\lambda_i;对每个 λi\lambda_i(AλiI)v=0(A-\lambda_i I)v=0 求特征向量。
2. 将特征值按一定顺序在对角线上排列即可得到对角阵 SS例如按从小到大排成 S=diag(λ1,,λn)S=\operatorname{diag}(\lambda_1,\dots,\lambda_n)。顺序无关紧要,只要和稍后列向量顺序一致即可。
3. 不同特征值对应的特征向量彼此正交;对重根特征向量用 Gram-Schmidt 正交化并单位化- 若 λiλj\lambda_i\neq\lambda_j,对应向量天然正交,不用动。
- 如果 λ\lambda 有重复(几何重数 >1),先随便取一组线性无关向量,再在该子空间里做 Gram-Schmidt,使之两两正交并各自归一(长度调成 1)。
4. 按照特征值在对角线上的顺序将改造后的特征向量横向排列,即可得到正交矩阵 QQ按对角线特征值顺序把改造后的特征向量作为列排成 Q=[q1  qn]Q=[q_1\ \cdots\ q_n]。此时 QTQ=IQ^{\mathsf T}Q=I,并有 A=QSQTA = Q S Q^{\mathsf T}

  1. 一个 2×22 \times 2 具体小例子

A=[4114]A=\begin{bmatrix} 4 & 1\\ 1 & 4 \end{bmatrix}

① 求特征值

det(AλI)=(4λ)21=0λ1=5,  λ2=3\det(A-\lambda I)=(4-\lambda)^2-1=0 \Longrightarrow \lambda_1=5,\; \lambda_2=3

② 求特征向量

  • λ1=5\lambda_1=5(A5I)v=0  v1=[11](A-5I)v=0 \ \Rightarrow\ v_1=\begin{bmatrix}1\\1\end{bmatrix}
  • λ2=3\lambda_2=3(A3I)v=0  v2=[11](A-3I)v=0 \ \Rightarrow\ v_2=\begin{bmatrix}1\\-1\end{bmatrix}

③ 归一化

q1=12[11],q2=12[11]q_1=\frac{1}{\sqrt2}\begin{bmatrix}1\\1\end{bmatrix},\quad q_2=\frac{1}{\sqrt2}\begin{bmatrix}1\\-1\end{bmatrix}

④ 组装并验证

Q=12[1111],S=[5003],QTAQ=S.Q=\frac1{\sqrt2}\begin{bmatrix} 1 & 1\\ 1 & -1 \end{bmatrix},\quad S=\begin{bmatrix}5&0\\0&3\end{bmatrix},\quad Q^{\mathsf T} A Q = S.

image

image

image

image

6、取行列式(det・)#

行列式(determinant)是把一个方阵 AA 映射成一个标量 detA\det A 的运算
这个标量综合了矩阵最核心的几何与代数信息:体积伸缩因子、可逆性、特征值乘积等。

公式

阶数公式
1×11\times1det[a]=a\det[a]=a
2×22\times2det ⁣[abcd]=adbc\displaystyle\det\!\begin{bmatrix}a&b\\c&d\end{bmatrix}=ad-bc
3×33\times3“Sarrus 法” 或按第一行展开:
det ⁣[abcdefghi]=a(eifh)b(difg)+c(dheg)\displaystyle \det\!\begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix}=a(ei-fh)-b(di-fg)+c(dh-eg)
核心性质(任何定义都必须满足)
性质说明
乘法性det(AB)=detAdetB\det(AB)=\det A\cdot\det B
可逆判据detA0    A\det A\neq0 \iff A 可逆
按行列线性每一行(列)关于元素线性
交替性两行(列)交换 ⇒ 行列式变号
对角线积上 / 下三角矩阵:detA=iaii\det A=\prod_{i}a_{ii}
特征值积detA=λ1λ2λn\det A=\lambda_1\lambda_2\cdots\lambda_n(含重数)

3×3 手算示例

A=[213041520]A=\begin{bmatrix} 2 & 1 & 3\\ 0 & 4 & -1\\ 5 & 2 & 0 \end{bmatrix}

按第一行展开:

detA=2  det ⁣[4120]    1  det ⁣[0150]  +  3  det ⁣[0452]=2(40(1)2)1(00(1)5)+3(0245)=2(2)1(5)+3(20)=4560=61.\begin{aligned} \det A &= 2\;\det\!\begin{bmatrix}4&-1\\2&0\end{bmatrix} \;-\;1\;\det\!\begin{bmatrix}0&-1\\5&0\end{bmatrix} \;+\;3\;\det\!\begin{bmatrix}0&4\\5&2\end{bmatrix} \\[4pt] &= 2\,(4\cdot0-(-1)\cdot2) -1\,(0\cdot0-(-1)\cdot5) +3\,(0\cdot2-4\cdot5) \\[4pt] &= 2\,(2) -1\,(5) +3\,(-20) \\[4pt] &= 4 - 5 - 60 = -61. \end{aligned}

一句话总结

“取行列式” 就是:让一个 n×nn\times n 方阵通过一套交替、线性的规则坍缩成单一数字,这个数字同时编码了矩阵的体积伸缩、方向、可逆性和特征值乘积等关键信息。

7、矩阵的秩#

矩阵的 “秩” 到底是什么?

等价视角直观解释
线性独立行(或列)里能挑出多少个彼此线性无关的向量,就是秩。
空间维数列向量张成的子空间(列空间)维度 = 行向量张成的子空间(行空间)维度 = 秩。
满秩子式矩阵里最大的非零行列式的阶数 = 秩。
奇异值在 SVD A=UΣV ⁣A=U\Sigma V^{\!*} 里,非零奇异值的个数 = 秩。

线性独立
下面用 3 × 3 的小矩阵举三个对比案例,让「秩 = 能挑出几根线性无关的列(或行)向量」这句话一目了然。

| 矩阵 $A$ | 列向量写成 (v1v2v3)\bigl(v_1\,|\,v_2\,|\,v_3\bigr) | 线性关系 | |
|------------|-----------------------------------------------|-----------|--------|
| [123246369]\displaystyle\begin{bmatrix}1&2&3\\2&4&6\\3&6&9\end{bmatrix} | v1=[123]v_1=\begin{bmatrix}1\\2\\3\end{bmatrix}
v2=[246]=2v1v_2=\begin{bmatrix}2\\4\\6\end{bmatrix}=2v_1
v3=[369]=3v1v_3=\begin{bmatrix}3\\6\\9\end{bmatrix}=3v_1 | 三列全在同一直线上 ——只有 1 根独立向量 | 1 |
| [101011112]\displaystyle\begin{bmatrix}1&0&1\\0&1&1\\1&1&2\end{bmatrix} | v1=[101]v_1=\begin{bmatrix}1\\0\\1\end{bmatrix}
v2=[011]v_2=\begin{bmatrix}0\\1\\1\end{bmatrix}
v3=v1+v2v_3=v_1+v_2 | v1,v2v_1, v_2 不共线 ⇒ 2 维平面;v3v_3 落在这平面里 | 2 |
| [101011110]\displaystyle\begin{bmatrix}1&0&1\\0&1&1\\1&1&0\end{bmatrix} | v1=[101]v_1=\begin{bmatrix}1\\0\\1\end{bmatrix}
v2=[011]v_2=\begin{bmatrix}0\\1\\1\end{bmatrix}
v3=[110]v_3=\begin{bmatrix}1\\1\\0\end{bmatrix} | 任意两列都无法线性表达第三列 ⇒ 三列张成整个 R3\mathbb R^{3} | 3 |

如何判断「无关」?

  • 手算 把列拼成矩阵,对它做消元 → 非零行数就是秩。

  • 概念 如果存在常数 $c_1,c_2,c_3$ 使 $c_1v_1+c_2v_2+c_3v_3=0$ 且不全为 0,向量就相关;否则无关。

    • 案例 1:$2v_1-v_2=0$ → 相关

    • 案例 2:只有 $v_3=v_1+v_2$ 相关,$v_1,v_2$ 无关

    • 案例 3:任何非平凡组合都 ≠ 0 → 三向量全独立

一句话:秩 = 这张矩阵真正 “存得下” 多少独立信息(维度)。

8、低秩近似#

为什么截断 SVD (低秩近似) 只要存 k (m+n)+k 个数?

把原矩阵

ARm×nA\in\mathbb R^{m\times n}

截断到秩 $k$ 后写成

Ak  =  UkΣkVkT,A_k \;=\; U_k \,\Sigma_k \, V_k^{\mathsf T},
形状需要保存的标量个数说明
UkU_km×km\times km×km \times k左奇异向量:只取前 kk
VkV_kn×kn\times kn×kn \times k右奇异向量:同理
Σk\Sigma_kk×kk\times k对角kk只保留对角线上 kk 个奇异值

把三块加起来就是

mkUk  +  nkVk  +  kΣk  =  k(m+n)+k.\underbrace{m k}_{U_k} \;+\; \underbrace{n k}_{V_k} \;+\; \underbrace{k}_{\Sigma_k} \;=\; k\,(m+n)+k.
  • UkU_kVkV_k:各有 kk 列,每列存一个长度为行数的向量
    mk+nk\Rightarrow mk + nk 个数。

  • Σk\Sigma_k:是对角矩阵,只需那 kk 个对角元素 —— 不是 k2k^2

因此,用秩 -kk 的 SVD 近似替代原来的 m×nm\times n 储存量,参数量从 mnmn 缩到 k(m+n)+kk(m+n)+k
如果 kmin(m,n)k \ll \min(m,n),省下的空间就非常可观。

秩降低 = 信息维度降低,低秩存储 = 参数量 / 内存同步降低

9、范数#

“两竖线” $|,\cdot,|$ 在线性代数里表示 范数(norm)

  • 对向量 vRmv\in\mathbb R^m,最常用的是 二范数(Euclidean norm)v=vTv=i=1mvi2,v2=vTv.\|v\|=\sqrt{v^{\mathsf T}v}=\sqrt{\sum_{i=1}^{m}v_i^{2}},\qquad \|v\|^{2}=v^{\mathsf T}v.
    在图中 Xwy2\|Xw-y\|^{2} 就是把向量 XwyXw-y 的每个分量平方后求和。

  • 对矩阵 AA 若也写 A\|A\|,常默认为 Frobenius 范数AF=i,jAij2\|A\|_F=\sqrt{\sum_{i,j}A_{ij}^{2}}。不过在这张图里涉及的都是向量。

与之对比,单竖线 |\,\cdot\,| 通常表示绝对值(标量)或行列式 A|A|。所以双竖线是向量/矩阵 “长度” 的符号,单竖线是标量大小或行列式的符号 —— 对象和含义都不同。

向量常用欧几里得距离 -- 2 范数(L2 范数)#

import torch

b = torch.tensor([3.0, 4.0])
print(b.norm())  # 输出 5.0

.norm()PyTorch 张量(torch.Tensor) 的方法。

矩阵常用 Frobenius 范数#

矩阵也有 “长度”—— 常用的是 Frobenius 范数

名称记号公式(对 $A\in\mathbb R^{m\times n}$)与向量的类比
Frobenius 范数$\displaystyle|A|_F$$\displaystyle\sqrt{\sum_{i=1}^{m}\sum_{j=1}^{n}A_{ij}^{2}}$就像向量 2 - 范数 $|v|=\sqrt {\sum v_i^2}$

1. 为什么也能写成 “矩阵点积”

在矩阵空间里常用的 内积

A,B:=tr ⁣(ATB),\langle A,B\rangle := \operatorname{tr}\!\bigl(A^{\mathsf T}B\bigr),

其中 tr()\operatorname{tr}(\cdot) 是迹运算(对角线元素之和)。
AA 自己做这个内积,就得到

AF2  =  A,A  =  tr ⁣(ATA).\|A\|_F^{2} \;=\;\langle A,A\rangle \;=\;\operatorname{tr}\!\bigl(A^{\mathsf T}A\bigr).

所以:

  

  AF2=tr(ATA)  \boxed{\;\|A\|_F^{2}= \operatorname{tr}(A^{\mathsf T}A)\;}

这正是矩阵版本的 v2=vTv\|v\|^{2}=v^{\mathsf T}v—— 只是把向量点积换成了 “迹点积”。
Frobenius 范数确实等于所有奇异值平方和的平方根,也就是:

AF=iσi2\| A \|_F = \sqrt{\sum_i \sigma_i^2}

这里:

  • $| A |_F$ 是矩阵 $A$ 的 Frobenius 范数

  • $\sigma_i$ 是 $A$ 的奇异值


Frobenius 范数确实等于所有奇异值平方和的平方根
展开解释:

Frobenius 范数定义为:

AF=i,jaij2\| A \|_F = \sqrt{ \sum_{i,j} |a_{ij}|^2 }

但奇异值分解(SVD)告诉我们:

A=UΣVTA = U \Sigma V^T

其中 Σ\Sigma 是对角矩阵,主对角线上就是奇异值 σ1,σ2,\sigma_1, \sigma_2, \dots

因为 Frobenius 范数不变换(单位正交变换不改变范数),我们可以直接算:

AF2=i,jaij2=iσi2\| A \|_F^2 = \sum_{i,j} |a_{ij}|^2 = \sum_i \sigma_i^2

所以最终:

AF=iσi2\| A \|_F = \sqrt{ \sum_i \sigma_i^2 }

小心误区

注意:
不是 单个奇异值平方根,也不是最大奇异值
所有奇异值平方后再相加取根号


谱范数看 “最能放大的一个方向”,Frobenius 则把所有能量都累加

矩阵的谱范数#

谱范数定义

矩阵 AA 的谱范数(spectral norm)定义为:

A2=maxx2=1Ax2\| A \|_2 = \max_{\|x\|_2 = 1} \| A x \|_2

直白讲,就是 矩阵 AA 把单位向量拉伸到多长的最大值
奇异值本来就是表示矩阵的拉伸变换的。

它等于 AA 的最大奇异值:

A2=σmax(A)\| A \|_2 = \sigma_{\max}(A)

另一角度:谱范数 ≈ 把单位向量丢进矩阵后被拉伸的最大长度
它跟 Frobenius 范数的关系

  • Frobenius 范数 → 看整体能量(矩阵元素平方和)

  • 谱范数 → 看单个方向上最大拉伸量

换句话说:

  • Frobenius 像是矩阵 “体积” 总量感

  • 谱范数像是 “最极端” 的单一方向放大率

例子:为什么它重要?

想象一个神经网络的线性层 $W$:

  • 如果 W2\| W \|_2 非常大,输入的微小扰动会被放大,
    网络容易过拟合,对噪声敏感。

  • 如果 W2\| W \|_2 适度,网络输出变化对输入扰动就稳定,
    泛化能力更好。

所以现代方法(比如 spectral normalization)
会直接在训练中把 WW 的谱范数压制到一个范围内。


直说缺点

谱范数很强,但:

  • 只关注单一最大方向,忽略了其他方向的放大;

  • 计算比 Frobenius 范数复杂(需要奇异值分解,而不是简单元素平方和)。


概要对比

欧几里得范数 (2-norm, ‖v‖)Frobenius 范数 (‖A‖F)
对象向量 vRnv\in\mathbb R^{n}矩阵 ARm×nA\in\mathbb R^{m\times n}
定义v=i=1nvi2\displaystyle\|v\|=\sqrt{\sum_{i=1}^{n}v_i^{2}}AF=i=1mj=1nAij2\displaystyle\|A\|_F=\sqrt{\sum_{i=1}^{m}\sum_{j=1}^{n}A_{ij}^{2}}
等价表达v2=vTv\|v\|^{2}=v^{\mathsf T}vAF2=tr(ATA)=kσk2\|A\|_F^{2}=\operatorname{tr}(A^{\mathsf T}A)=\sum_{k}\sigma_k^{2}
几何意义向量在 nn 维欧氏空间的长度把矩阵元素按 “长向量” 看时的长度
单位 / 尺度与坐标轴有同样度量同上;对矩阵不依赖行列数的排列方式
常见用途误差度量、正则化 L2L^2、距离权重衰减、矩阵近似误差、核方法
与谱范数关系v=σmax(v)\|v\|=\sigma_{\max }(v) (仅一条奇异值)AFA2=σmax(A)\|A\|_F\ge \|A\|_2=\sigma_{\max }(A);若 rank = 1 则相等

1. 同一思路、不同维度

  • 欧几里得范数是 向量自身与自己做点积后开方

  • Frobenius 范数把矩阵各元素看成一条长向量,再做同样的事;用矩阵语言写成

    AF=tr(ATA). \|A\|_F=\sqrt{\operatorname{tr}(A^{\mathsf T}A)}.

    这就是 “转置 → 乘 → 取迹”。

2. 何时用哪个?

场景推荐范数原因
预测误差、梯度下降欧几里得 (向量残差)残差天然是列向量
网络权重正则 (Dense / Conv)Frobenius不关心参数形状、仅关心整体幅度
比较矩阵逼近质量 (SVD, PCA)Frobenius容易与奇异值平方和对应
稳定性 / Lipschitz 边界谱范数 (A2\|A\|_2)关心放大率而非总能量

3. 直观区别

  • 欧几里得:量 单个方向 的长度;

  • Frobenius:量 每个元素能量 的总和,因此对矩阵来说,哪一列或哪一行并不特殊,所有元素一视同仁。


一句话记忆:

欧几里得 范数:向量 “标尺”。
Frobenius 范数:把矩阵 “铺平” 后用同一把标尺量它的整体大小。

10、矩阵相乘的转置#

在矩阵代数里,两个(或多个)矩阵相乘后的转置有一个固定的 “翻转顺序” 规则:

(AB)T=BTAT.(AB)^{\mathsf T}=B^{\mathsf T}\,A^{\mathsf T}.

也就是说 先转置每个矩阵,再把乘法顺序倒过来
这一条性质对任何维度匹配的实(或复)矩阵都成立,而且可以递归推广:

(ABC)T=CTBTAT,(A1A2Ak)T=AkTA2TA1T.(ABC)^{\mathsf T}=C^{\mathsf T}\,B^{\mathsf T}\,A^{\mathsf T},\qquad (\,A_1A_2\cdots A_k)^{\mathsf T}=A_k^{\mathsf T}\cdots A_2^{\mathsf T}A_1^{\mathsf T}.

xLog 编辑 Markdown 文档注意内容

  • 确认所有数学表达式都用 $$$$

  • 如果有 $n \times n$ 之类单 $,改成 n × n$$n\\times n$$

参考视频:

点这里看 B 站视频

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。