1. 程式人生 > 實用技巧 >數學學習筆記--線性代數

數學學習筆記--線性代數

開始複習 AI 演算法的基礎–數學部分,主要是三方面的內容:

  1. 線性代數
  2. 概率論
  3. 微積分

參考內容如下:

  • 《深度學習》
  • https://github.com/scutan90/DeepLearning-500-questions
  • https://github.com/sladesha/Reflection_Summary

本文是第一篇,線性代數部分的內容,主要是比較基礎部分的學習筆記。

1. 線性代數

1.1 向量和矩陣

1.1.1 標量、向量、矩陣、張量之間的聯絡

標量(scalar)

一個標量表示一個單獨的數,它不同於線性代數中研究的其他大部分物件(通常是多個數的陣列)。我們用斜體表示標量。標量通常被賦予小寫的變數名稱。 一般會明確標量屬於哪種型別,比如定義實數標量時,會說“令 s ∈ R s\in R

sR 表示一條線的斜率”。

向量(vector)

一個向量表示一組有序排列的數。通過次序中的索引,我們可以確定每個單獨的數。通常我們賦予向量粗體的小寫變數名稱,比如xx。向量中的元素可以通過帶腳標的斜體表示。向量 X X X的第一個元素是 X 1 X_1 X1,第二個元素是 X 2 X_2 X2,以此類推。我們也會註明儲存在向量中的元素的型別(實數、虛數等)。

一個向量如下所示,一個向量可以看作空間中的點,即每個元素可以表示不同座標軸上的座標。
x = [ x 1 x 2 x 3 ⋯ x n ] x = \left[ \begin{matrix} x_1 \\ x_2 \\ x_3 \\ \cdots \\ x_n \end{matrix} \right]

x=x1x2x3xn

矩陣(matrix)

矩陣是具有相同特徵和緯度的物件的集合,表現為一張二維資料表。其意義是一個物件表示為矩陣中的一行,一個特徵表示為矩陣中的一列,每個特徵都有數值型的取值。通常會賦予矩陣粗體的大寫變數名稱,比如 A A A

一個矩陣的表示例子如下所示:
A = [ A 1 , 1 A 1 , 2 A 2 , 1 A 2 , 2 ] A = \left[ \begin{matrix} A_{1,1} & A_{1,2} \\ A_{2,1} & A_{2,2} \\ \end{matrix} \right] A=[

A1,1A2,1A1,2A2,2]

轉置是矩陣的重要操作之一,其轉置是以對角線為軸的映象,這條從左上角到右下角的對角線被稱為主對角線,定義如下:
( A T ) i , j = A j , i (A^T){i,j} = A_{j,i} (AT)i,j=Aj,i
一個示例操作如下:
A = [ A 1 , 1 A 1 , 2 A 2 , 1 A 2 , 2 A 3 , 1 A 3 , 2 ] = = > A T = [ A 1 , 1 A 2 , 1 A 3 , 1 A 1 , 2 A 2 , 2 A 3 , 2 ] A = \left[ \begin{matrix} A_{1,1} & A_{1,2} \\ A_{2,1} & A_{2,2} \\ A_{3,1} & A_{3,2} \end{matrix} \right] ==> A^T = \left[ \begin{matrix} A_{1,1} & A_{2,1} & A_{3, 1} \\ A_{1,2} & A_{2,2} & A_{3,2}\\ \end{matrix} \right] A=A1,1A2,1A3,1A1,2A2,2A3,2==>AT=[A1,1A1,2A2,1A2,2A3,1A3,2]

從一個 3 × 2 3\times 2 3×2 的矩陣變為了 $ 2\times 3$ 的矩陣。

張量(tensor)

在某些情況下,我們會討論座標超過兩維的陣列。一般地,一個數組中的元素分佈在若干維座標的規則網格中,我們將其稱之為張量。使用 A A A 來表示張量“A”。張量 A A A中座標為 ( i , j , k ) (i,j,k) (i,j,k)的元素記作 A ( i , j , k ) A_{(i,j,k)} A(i,j,k)

四者之間關係

(來自深度學習 500 問第一章數學基礎)

標量是0階張量,向量是一階張量。舉例:
​標量就是知道棍子的長度,但是你不會知道棍子指向哪兒。
​向量就是不但知道棍子的長度,還知道棍子指向前面還是後面。
​張量就是不但知道棍子的長度,也知道棍子指向前面還是後面,還能知道這棍子又向上/下和左/右偏轉了多少。

1.1.2 張量與矩陣的區別

  • 從代數角度講, 矩陣它是向量的推廣。向量可以看成一維的“表格”(即分量按照順序排成一排), 矩陣是二維的“表格”(分量按照縱橫位置排列), 那麼 n n n階張量就是所謂的 n n n維的“表格”。 張量的嚴格定義是利用線性對映來描述。
  • 從幾何角度講, 矩陣是一個真正的幾何量,也就是說,它是一個不隨參照系的座標變換而變化的東西。向量也具有這種特性。
  • 張量可以用3×3矩陣形式來表達。
  • 表示標量的數和表示向量的三維陣列也可分別看作1×1,1×3的矩陣。

1.1.3 矩陣和向量相乘結果

若使用愛因斯坦求和約定(Einstein summation convention),矩陣 A A A, B B B相乘得到矩陣 C C C 可以用下式表示:
A B = C = = > a i k ∗ b k j = c i j AB = C ==> a_{ik}*b_{kj}=c_{ij} AB=C==>aikbkj=cij

其中, a i k a_{ik} aik, b k j b_{kj} bkj, c i j c_{ij} cij分別表示矩陣 A , B , C A, B, C A,B,C的元素, k k k出現兩次,是一個啞變數(Dummy Variables)表示對該引數進行遍歷求和。

用一個例子表示就是:
$$
A=
\left[
\begin{matrix}
A_{1,1} & A_{1,2} \
A_{2,1} & A_{2,2} \
\end{matrix}
\right]
B =
\left[
\begin{matrix}
B_{1,1} & B_{1,2} \
B_{2,1} & B_{2,2} \
\end{matrix}
\right] \
A \times B = C =
\left[
\begin{matrix}
A_{1,1}\times B_{1,1}+A_{1,2}\times B_{2,1} & A_{1,1}\times B_{1,2}+A_{1,2}\times B_{2,2} \
A_{2,1}\times B_{1,1}+A_{2,2}\times B_{2,1} & A_{2,1}\times B_{1,2}+A_{2,2}\times B_{2,2} \
\end{matrix}
\right]

\left[
\begin{matrix}
C_{1,1} & C_{1,2} \
C_{2,1} & C_{2,2} \
\end{matrix}
\right]
$$
所以矩陣相乘有一個前提,矩陣 A 的列數必須和矩陣 B 的行數相等,也就是如果 A 的維度是 m × n m\times n m×n,B 的維度必須是 n × p n \times p n×p,相乘得到的 C 矩陣的維度就是 m × p m\times p m×p

另外還有一種矩陣乘法,是矩陣對應元素相乘,這種稱為元素對應乘積,或者 Hadamard 乘積,記為 A ⊙ B

而矩陣和向量相乘可以看成是矩陣相乘的一個特殊情況,例如:矩陣 B B B是一個 n × 1 n \times 1 n×1的矩陣。

矩陣乘積滿足這些定律:

  1. 服從分配率:A(B+C) = AB + AC
  2. 服從結合律:A(BC) = (AB)C

但是不服從交換律,即 AB 不一定等於 BA。

矩陣的乘積滿足: ( A B ) T = A T B T (AB)^T = A^TB^T AB)T=ATBT

兩個相同維度的向量 x 和 y 的點積(dot product),可以看作矩陣乘積– x T y x^Ty xTy。也就是說可以將矩陣乘積 C = A B C=AB C=AB 中計算 C i , j C_{i,j} Ci,j的步驟看作是 A 的第 i 行和 B 的第 j 列之間的點積。畢竟,矩陣的每一行或者每一列都是一個向量。

而向量的點積是滿足交換律的:
x T y = y T x x^Ty = y^Tx xTy=yTx
證明主要是根據:

  1. 兩個向量的點積是標量
  2. 標量的轉置也是自身

所以有:
x T y = ( x T y ) T = x y T x^Ty = (x^Ty)^T = xy^T xTy=(xTy)T=xyT

1.1.4 單位矩陣和逆矩陣

單位矩陣的定義如下,用 I 表示單位矩陣,任何向量和單位矩陣相乘,都不會改變,即:
∀ x ∈ R n , I n x = x (1-1-8) \forall x \in R^n, I_n x = x \tag{1-1-8} xRn,Inx=x(1-1-8)
單位矩陣的結構很簡單,就是主對角線是 1,其他位置是 0,如下圖所示的單位矩陣 I 3 I_3 I3
[ 1 0 0 0 1 0 0 0 1 ] \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{matrix} \right] 100010001
而逆矩陣記作 A − 1 A^{-1} A1,其滿足如下條件:
A − 1 A = I n A^{-1}A=I_n A1A=In

1.1.5 線性方程組和線性相關

現在有一個線性方程組,如下所示:
A x = b Ax = b Ax=b
其中, A ∈ R m × n A\in R^{m\times n} ARm×n 是已知的矩陣, b ∈ R m b\in R^m bRm 是已知的向量,然後 x ∈ R n x\in R^n xRn 是需要求解的未知向量。

這裡根據矩陣相乘(x 相當於一個 n × 1 n\times 1 n×1 的矩陣),可以將上述公式拓展開來:
A 1 , : x = b 1 = = > A 1 , 1 x 1 + A 1 , 2 x 2 + ⋯ + A 1 , n x n = b 1 A 2 , : x = b 2 = = > A 2 , 1 x 1 + A 2 , 2 x 2 + ⋯ + A 2 , n x n = b 2 ⋯ A m , : x = b m = = > A m , 1 x 1 + A m , 2 x 2 + ⋯ + A m , n x n = b m A_{1,:}x = b_1 ==> A_{1,1}x_1 + A_{1,2}x_2+\cdots+A_{1,n}x_n = b_1 \\ A_{2,:}x = b_2 ==> A_{2,1}x_1 + A_{2,2}x_2+\cdots+A_{2,n}x_n = b_2 \\ \cdots \\ A_{m,:}x = b_m ==> A_{m,1}x_1 + A_{m,2}x_2+\cdots+A_{m,n}x_n = b_m \\ A1,:x=b1==>A1,1x1+A1,2x2++A1,nxn=b1A2,:x=b2==>A2,1x1+A2,2x2++A2,nxn=b2Am,:x=bm==>Am,1x1+Am,2x2++Am,nxn=bm
在我們定義了逆矩陣後,那麼可以這麼求解:
A x = b A − 1 A x = A − 1 b I n x = A − 1 b x = A − 1 b Ax=b\\ A^{-1}Ax = A^{-1}b\\ I_nx = A^{-1}b \\ x = A^{-1}b Ax=bA1Ax=A1bInx=A1bx=A1b
所以求解的關鍵就是是否存在一個逆矩陣,並找到它。

當逆矩陣 A − 1 A^{-1} A1存在的時候,對每個向量 b 肯定恰好存在一個解。

但對於方程組來說,向量 b 的某些值,有可能不存在解,或者有無限多個解,不存在多於1 個解,但有限解的情況,比如 x 和 y 都是方程組的解,則有:
z = α x + ( 1 − α ) y z = \alpha x + (1-\alpha)y z=αx+(1α)y
其中, α \alpha α 是任意實數,那麼 z 也是方程組的解,這種組合是無限的,所以不存在有限解(多於 1 個)。

確定 Ax=b 是否有解,關鍵是確定向量 b 是否在 A 列向量的生成子空間中,這個特殊的生成子空間,被稱為 A 的列空間或者 A 的值域。

一組向量的線性組合是指每個向量乘以對應標量係數之後的和,即 ∑ i c i v ( i ) \sum_i c_i v^{(i)} iciv(i)

一組向量的生成子空間是原始向量線性組合後所能抵達的點的集合。

那麼為了讓上述成立,應該讓 A 的列空間構成整個 R m R^m Rm 空間,如果這個空間某個點不在 A 的列空間,那麼對應的 b 會使得方程無解。而要讓其成立,**即要滿足不等式 n ≥ m n\ge m nm **。

但該不等式只是方程對每個 b 有解的必要條件,非充分條件。因為存在一種情況,某些列向量可能是冗餘的,比如一個 2 × 2 2\times 2 2×2的矩陣,如果兩個列向量都是相同的,那該矩陣的列空間和它的一個列向量作為矩陣的列空間是一樣的,並不能滿足覆蓋了整個 R 2 R^2 R2 空間。

這種冗餘也被稱為線性相關,而如果一組向量中任意一個向量都不能表示為其他向量的線性組合,則這組向量稱為線性無關

所以,如果一個矩陣的列空間要覆蓋整個 R m R^m Rm,那麼該矩陣必須包含至少一組m 個線性無關的向量,這才是對每個 b 都有解的充分必要條件

此外,要讓矩陣可逆,還必須保證 Ax=b 對每個 b 的取值至多隻有一個解,那必須保證該矩陣至多有 m 個列向量,否則方程有不止一個解。

綜上,那麼矩陣就必須是方陣,也就是 m = n,並且所有列向量都是線性無關的。一個列向量都是線性無關的方陣被稱為是奇異的

假如 A 不是方陣或者不是奇異的方陣,也可能有解,但是不能通過逆矩陣去求解。

1.1.6 向量和矩陣的範數歸納

向量的範數(norm)

通常衡量向量的大小是通過範數來衡量的,形式上 L P L^P LP範數定義如下:

L p = ∥ x ⃗ ∥ p = ∑ i = 1 N ∣ x i ∣ p p L_p=\Vert\vec{x}\Vert_p=\sqrt[p]{\sum_{i=1}^{N}|{x_i}|^p} Lp=x p=pi=1Nxip

這裡 p ≥ 1 p\ge 1 p1

範數是將向量對映到非負數的函式,直觀上來說,向量 x 的範數衡量從原點到點 x 的距離。

範數是滿足下列性質的任意函式:
f ( x ) = 0 = > x = 0 f ( x + y ) ≤ f ( x ) + f ( y ) ( 三 角 不 等 式 ) ∀ α ∈ R , f ( α x ) = ∣ α ∣ f ( x ) f(x)=0=>x=0 \\ f(x+y)\le f(x)+f(y)(三角不等式)\\ \forall \alpha \in R, f(\alpha x) = |\alpha|f(x) f(x)=0=>x=0f(x+y)f(x)+f(y)()αR,f(αx)=αf(x)

定義一個向量為: a ⃗ = [ − 5 , 6 , 8 , − 10 ] \vec{a}=[-5, 6, 8, -10] a =[5,6,8,10]。任意一組向量設為 x ⃗ = ( x 1 , x 2 , . . . , x N ) \vec{x}=(x_1,x_2,...,x_N) x =(x1,x2,...,xN)。其不同範數求解如下:

  • 向量的1範數:向量的各個元素的絕對值之和,上述向量 a ⃗ \vec{a} a 的1範數結果就是:x = |-5|+|6|+|8|+|-10| = 29。

∥ x ⃗ ∥ 1 = ∑ i = 1 N ∣ x i ∣ \Vert\vec{x}\Vert_1=\sum_{i=1}^N\vert{x_i}\vert x 1=i=1Nxi

  • 向量的2範數(歐幾里得範數):向量的每個元素的平方和再開平方根,上述 a ⃗ \vec{a} a 的2範數結果就是: x = ( − 5 ) 2 + ( 6 ) 2 + ( 8 ) 2 + ( − 10 ) 2 15 x=\sqrt{(-5)^2+(6)^2+(8)^2+(-10)^2}15 x=(5)2+(6)2+(8)2+(10)2 15

∥ x ⃗ ∥ 2 = ∑ i = 1 N ∣ x i ∣ 2 \Vert\vec{x}\Vert_2=\sqrt{\sum_{i=1}^N{\vert{x_i}\vert}^2} x 2=i=1Nxi2

  • 向量的負無窮範數:向量的所有元素的絕對值中最小的:上述向量 a ⃗ \vec{a} a 的負無窮範數結果就是:5。

∥ x ⃗ ∥ − ∞ = min ⁡ ∣ x i ∣ \Vert\vec{x}\Vert_{-\infty}=\min{|{x_i}|} x =minxi

  • 向量的正無窮範數:向量的所有元素的絕對值中最大的:上述向量 a ⃗ \vec{a} a 的正無窮範數結果就是:10。

∥ x ⃗ ∥ + ∞ = max ⁡ ∣ x i ∣ \Vert\vec{x}\Vert_{+\infty}=\max{|{x_i}|} x +=maxxi

矩陣的範數

定義一個矩陣。
A = [ − 1 2 − 3 4 − 6 6 ] A = \left[ \begin{matrix} -1 & 2 & -3 \\ 4 & -6 & 6 \\ \end{matrix} \right] A=[142636]

任意矩陣定義為: A m × n A_{m\times n} Am×n,其元素為 a i j a_{ij} aij

矩陣的範數定義為

∥ A ∥ p : = sup ⁡ x ≠ 0 ∥ A x ∥ p ∥ x ∥ p \Vert{A}\Vert_p :=\sup_{x\neq 0}\frac{\Vert{Ax}\Vert_p}{\Vert{x}\Vert_p} Ap:=x=0supxpAxp

當向量取不同範數時, 相應得到了不同的矩陣範數。

  • 矩陣的1範數(列範數):先對矩陣的每一列元素的絕對值求和,再從中取個最大的(列和最大),上述矩陣 A A A的1範數先得到 [ 5 , 8 , 9 ] [5,8,9] [5,8,9],再取最大的最終結果就是:9。
    ∥ A ∥ 1 = max ⁡ 1 ≤ j ≤ n ∑ i = 1 m ∣ a i j ∣ \Vert A\Vert_1=\max_{1\le j\le n}\sum_{i=1}^m|{a_{ij}}| A1=1jnmaxi=1maij

  • 矩陣的2範數:矩陣 A T A A^TA ATA的最大特徵值開平方根,上述矩陣 A A A的2範數得到的最終結果是:10.0623。

∥ A ∥ 2 = λ m a x ( A T A ) \Vert A\Vert_2=\sqrt{\lambda_{max}(A^T A)} A2=λmax(ATA)

其中, λ m a x ( A T A ) \lambda_{max}(A^T A) λmax(ATA) A T A A^T A ATA 的特徵值絕對值的最大值。

  • 矩陣的無窮範數(行範數):矩陣的每一行上的元素絕對值先求和,再從中取個最大的,(行和最大),上述矩陣 A A A的行範數先得到 [ 6 ; 16 ] [6;16] [616],再取最大的最終結果就是:16。
    ∥ A ∥ ∞ = max ⁡ 1 ≤ i ≤ m ∑ j = 1 n ∣ a i j ∣ \Vert A\Vert_{\infty}=\max_{1\le i \le m}\sum_{j=1}^n |{a_{ij}}| A=1immaxj=1naij

  • 矩陣的核範數:矩陣的奇異值(將矩陣svd分解)之和,這個範數可以用來低秩表示(因為最小化核範數,相當於最小化矩陣的秩——低秩),上述矩陣A最終結果就是:10.9287。

  • 矩陣的L0範數:矩陣的非0元素的個數,通常用它來表示稀疏,L0範數越小0元素越多,也就越稀疏,上述矩陣 A A A最終結果就是:6。

  • 矩陣的L1範數:矩陣中的每個元素絕對值之和,它是L0範數的最優凸近似,因此它也可以表示稀疏,上述矩陣 A A A最終結果就是:22。

  • 矩陣的F範數:最常用的矩陣的範數,矩陣的各個元素平方之和再開平方根,它通常也叫做矩陣的L2範數,它的優點在於它是一個凸函式,可以求導求解,易於計算,上述矩陣A最終結果就是:10.0995。
    ∥ A ∥ F = ( ∑ i = 1 m ∑ j = 1 n ∣ a i j ∣ 2 ) \Vert A\Vert_F=\sqrt{(\sum_{i=1}^m\sum_{j=1}^n{| a_{ij}|}^2)} AF=(i=1mj=1naij2)

  • 矩陣的L21範數:矩陣先以每一列為單位,求每一列的F範數(也可認為是向量的2範數),然後再將得到的結果求L1範數(也可認為是向量的1範數),很容易看出它是介於L1和L2之間的一種範數,上述矩陣 A A A最終結果就是:17.1559。

  • 矩陣的 p範數

∥ A ∥ p = ( ∑ i = 1 m ∑ j = 1 n ∣ a i j ∣ p ) p \Vert A\Vert_p=\sqrt[p]{(\sum_{i=1}^m\sum_{j=1}^n{| a_{ij}|}^p)} Ap=p(i=1mj=1naijp)

兩個向量的點積可以用範數來表示:
x T y = ∥ x ∥ 2 ∥ y ∥ 2 c o s θ x^Ty =\Vert x \Vert_2 \Vert y \Vert_2 cos\theta xTy=x2y2cosθ
這裡 θ \theta θ 就是 x 和 y 之間的夾角。

1.1.7 一些特殊的矩陣和向量

對角矩陣:只在對角線上有非零元素,其他位置都是零。之前介紹的單位矩陣就是對角矩陣的一種;

對稱矩陣:轉置和自己相等的矩陣,即: A = A T A = A^T A=AT

單位向量:具有單位範數的向量,也就是 ∥ x ∥ 2 = 1 \Vert x \Vert_2 =1 x2=1

向量正交:如果 x T y = 0 x^Ty=0 xTy=0,那麼就說向量 x 和 y 互相正交。如果向量不僅互相正交,範數還是 1,那麼就稱為標準正交

正交矩陣:行向量和列向量是分別標準正交的方陣,即
A T A = A A T = I A^TA=AA^T=I ATA=AAT=I
也就是有:
A − 1 = A T A^{-1}=A^T A1=AT
所以正交矩陣的一個優點就是求逆計算代價小。

1.1.8 如何判斷一個矩陣為正定

判定一個矩陣是否為正定,通常有以下幾個方面:

  • 順序主子式全大於0;
  • 存在可逆矩陣 C C C使 C T C C^TC CTC等於該矩陣;
  • 正慣性指數等於 n n n
  • 合同於單位矩陣 E E E(即:規範形為 E E E
  • 標準形中主對角元素全為正;
  • 特徵值全為正;
  • 是某基的度量矩陣。

所有特徵值是非負數的矩陣稱為半正定,而所有特徵值是負數的矩陣稱為負定,所有特徵值是非正數的矩陣稱為半負定。

正定性的用途

  • Hessian矩陣正定性在梯度下降的應用
    • 若Hessian正定,則函式的二階偏導恆大於0,,函式的變化率處於遞增狀態,判斷是否有區域性最優解
  • 在 svm 中核函式構造的基本假設

1.2 特徵值和特徵向量

1.2.1 特徵值分解與特徵向量

特徵分解是使用最廣的矩陣分解之一,矩陣分解可以得到一組特徵值(eigenvalues)與特徵向量(eigenvectors);

特徵值表示的是這個特徵到底有多重要,而特徵向量表示這個特徵是什麼。

如果說一個向量 v ⃗ \vec{v} v 是方陣 A A A的特徵向量,將一定可以表示成下面的形式:

A ν = λ ν A\nu = \lambda \nu Aν=λν

λ \lambda λ為特徵向量 v ⃗ \vec{v} v 對應的特徵值。

特徵值分解是將一個矩陣分解為如下形式:

A = Q ∑ Q − 1 A=Q\sum Q^{-1} A=QQ1

其中, Q Q Q是這個矩陣 A A A特徵向量組成的正交矩陣 ∑ \sum 是一個對角矩陣,每一個對角線元素就是一個特徵值,裡面的特徵值是由大到小排列的,這些特徵值所對應的特徵向量就是描述這個矩陣變化方向(從主要的變化到次要的變化排列)。也就是說矩陣 A A A的資訊可以由其特徵值和特徵向量表示。

並非每個矩陣都可以分解成特徵值和特徵向量,但每個實對稱矩陣都可以分解為實特徵向量和實特徵值。

1.2.2 奇異值分解

除了特徵分解外,還有一種矩陣分解,稱為奇異值分解(SVD),將矩陣分解為奇異值和奇異向量。通過奇異值分解,可以得到和特徵分解相同型別的資訊,但是,奇異值分解有更廣泛的應用,每個實數矩陣都有一個奇異值分解,但不一定有特徵分解,因為必須是方陣才有特徵分解

在特徵分解中,我們將 A 重新寫作:
A = V d i a g ( λ ) V − 1 A = Vdiag(\lambda)V^{-1} A=Vdiag(λ)V1
其中,V 是特徵向量構成的矩陣, λ \lambda λ是特徵值構成的向量, d i a g ( λ ) diag(\lambda) diag(λ)表示一個對角線都是特徵值的對角矩陣。

奇異值分解的形式如下所示:
A = U D V T A = U D V^T A=UDVT
假如 A 是 m × n m\times n m×n 的矩陣,則 U 是 m × m m\times m m×m的矩陣,D 是 m × n m\times n m×n 的矩陣,V 是 n × n n\times n n×n 的矩陣。並且,矩陣 U 和 V 是正交矩陣,D 是對角矩陣,且不一定是方陣。

D 對角線上的元素就是 A 的奇異值,而 U 的列向量是左奇異向量,V 的列向量是右奇異向量。

可以套用和 A 相關的特徵分解來解釋其奇異值分解,A 的左奇異向量就是 A A T AA^T AAT的特徵向量,而右奇異向量就是 A T A A^TA ATA 的特徵向量,A 的非零奇異值是 A A T AA^T AAT特徵值的平方根,也是 A T A A^TA ATA特徵值的平方根。

(來自深度學習 500 問的數學基礎的內容)

那麼奇異值和特徵值是怎麼對應起來的呢?我們將一個矩陣 A A A的轉置乘以 A A A,並對 A T A A^TA ATA求特徵值,則有下面的形式:

( A T A ) V = λ V (A^TA)V = \lambda V (ATA)V=λV

這裡 V V V就是上面的右奇異向量,另外還有:

σ i = λ i , u i = 1 σ i A V \sigma_i = \sqrt{\lambda_i}, u_i=\frac{1}{\sigma_i}AV σi=λi ,ui=σi1AV

這裡的 σ \sigma σ就是奇異值, u u u就是上面說的左奇異向量。

奇異值 σ \sigma σ跟特徵值類似,在矩陣 ∑ \sum 中也是從大到小排列,而且 σ \sigma σ的減少特別的快,在很多情況下,前10%甚至1%的奇異值的和就佔了全部的奇異值之和的99%以上了。也就是說,我們也可以用前 r r r r r r遠小於 m 、 n m、n mn)個的奇異值來近似描述矩陣,即部分奇異值分解:
A m × n ≈ U m × r ∑ r × r V r × n T A_{m\times n}\approx U_{m \times r}\sum_{r\times r}V_{r \times n}^T Am×nUm×rr×rVr×nT

右邊的三個矩陣相乘的結果將會是一個接近於 A A A的矩陣,在這兒, r r r越接近於 n n n,則相乘的結果越接近於 A A A


歡迎關注我的公眾號 –AI 演算法筆記,每週分享演算法學習筆記、論文閱讀筆記,或者工具教程相關的 github 專案。
在這裡插入圖片描述