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 站視頻

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。