數學學習筆記--線性代數
開始複習 AI 演算法的基礎–數學部分,主要是三方面的內容:
- 線性代數
- 概率論
- 微積分
參考內容如下:
- 《深度學習》
- 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
向量(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]
矩陣(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=[
轉置是矩陣的重要操作之一,其轉置是以對角線為軸的映象,這條從左上角到右下角的對角線被稱為主對角線,定義如下:
(
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==>aik∗bkj=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的矩陣。
矩陣乘積滿足這些定律:
- 服從分配率:A(B+C) = AB + AC
- 服從結合律: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
證明主要是根據:
- 兩個向量的點積是標量
- 標量的轉置也是自身
所以有:
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}
∀x∈Rn,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}
A−1,其滿足如下條件:
A
−
1
A
=
I
n
A^{-1}A=I_n
A−1A=In
1.1.5 線性方程組和線性相關
現在有一個線性方程組,如下所示:
A
x
=
b
Ax = b
Ax=b
其中,
A
∈
R
m
×
n
A\in R^{m\times n}
A∈Rm×n 是已知的矩陣,
b
∈
R
m
b\in R^m
b∈Rm 是已知的向量,然後
x
∈
R
n
x\in R^n
x∈Rn 是需要求解的未知向量。
這裡根據矩陣相乘(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=b2⋯Am,: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=bA−1Ax=A−1bInx=A−1bx=A−1b
所以求解的關鍵就是是否存在一個逆矩陣,並找到它。
當逆矩陣 A − 1 A^{-1} A−1存在的時候,對每個向量 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 n≥m **。
但該不等式只是方程對每個 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=1∑N∣xi∣p
這裡 p ≥ 1 p\ge 1 p≥1。
範數是將向量對映到非負數的函式,直觀上來說,向量 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=1∑N∣xi∣
- 向量的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=1∑N∣xi∣2
- 向量的負無窮範數:向量的所有元素的絕對值中最小的:上述向量 a ⃗ \vec{a} a 的負無窮範數結果就是:5。
∥ x ⃗ ∥ − ∞ = min ∣ x i ∣ \Vert\vec{x}\Vert_{-\infty}=\min{|{x_i}|} ∥x ∥−∞=min∣xi∣
- 向量的正無窮範數:向量的所有元素的絕對值中最大的:上述向量 a ⃗ \vec{a} a 的正無窮範數結果就是:10。
∥ x ⃗ ∥ + ∞ = max ∣ x i ∣ \Vert\vec{x}\Vert_{+\infty}=\max{|{x_i}|} ∥x ∥+∞=max∣xi∣
矩陣的範數
定義一個矩陣。
A
=
[
−
1
2
−
3
4
−
6
6
]
A = \left[ \begin{matrix} -1 & 2 & -3 \\ 4 & -6 & 6 \\ \end{matrix} \right]
A=[−142−6−36]
任意矩陣定義為: 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} ∥A∥p:=x=0sup∥x∥p∥Ax∥p
當向量取不同範數時, 相應得到了不同的矩陣範數。
-
矩陣的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}}| ∥A∥1=1≤j≤nmaxi=1∑m∣aij∣ -
矩陣的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)} ∥A∥2=λ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] [6;16],再取最大的最終結果就是: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∥∞=1≤i≤mmaxj=1∑n∣aij∣ -
矩陣的核範數:矩陣的奇異值(將矩陣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)} ∥A∥F=(i=1∑mj=1∑n∣aij∣2) -
矩陣的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)} ∥A∥p=p(i=1∑mj=1∑n∣aij∣p)
兩個向量的點積可以用範數來表示:
x
T
y
=
∥
x
∥
2
∥
y
∥
2
c
o
s
θ
x^Ty =\Vert x \Vert_2 \Vert y \Vert_2 cos\theta
xTy=∥x∥2∥y∥2cosθ
這裡
θ
\theta
θ 就是 x 和 y 之間的夾角。
1.1.7 一些特殊的矩陣和向量
對角矩陣:只在對角線上有非零元素,其他位置都是零。之前介紹的單位矩陣就是對角矩陣的一種;
對稱矩陣:轉置和自己相等的矩陣,即: A = A T A = A^T A=AT。
單位向量:具有單位範數的向量,也就是 ∥ x ∥ 2 = 1 \Vert x \Vert_2 =1 ∥x∥2=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
A−1=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=Q∑Q−1
其中, 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(λ)V−1
其中,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
m、n)個的奇異值來近似描述矩陣,即部分奇異值分解:
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×n≈Um×rr×r∑Vr×nT
右邊的三個矩陣相乘的結果將會是一個接近於 A A A的矩陣,在這兒, r r r越接近於 n n n,則相乘的結果越接近於 A A A。
歡迎關注我的公眾號 –AI 演算法筆記,每週分享演算法學習筆記、論文閱讀筆記,或者工具教程相關的 github 專案。