注:本博文為本人閱讀論文、文章后的原創(chuàng)筆記,未經(jīng)授權不允許任何轉載或商用行為,否則一經(jīng)發(fā)現(xiàn)本人保留追責權利。有問題可留言聯(lián)系,歡迎指摘批評,共同進步!??!
1. 前言
假設矩陣
A
\mathbf{A}
A是一個
M
×
N
M \times N
M×N大小的矩陣。對其進行奇異值分解后可以得到:
A
(
m
×
n
)
=
U
(
m
×
m
)
Σ
(
m
×
n
)
V
(
n
×
n
)
T
\mathbf{A_{(m \times n)} = U_{(m \times m)} \Sigma_{(m \times n)} V^T_{(n \times n)}}
A(m×n)?=U(m×m)?Σ(m×n)?V(n×n)T?
其中矩陣
Σ
\mathbf{\Sigma}
Σ是準對角矩陣,其對角元素就是奇異值。矩陣
U
\mathbf{U}
U和
V
\mathbf{V}
V都是酉矩陣,一條重要的性質就是,其列向量都是兩兩正交的單位向量(模為1,對應相乘等于0).
2. 數(shù)值計算
在計算時,首先我們考慮計算矩陣 V \mathbf{V} V和準對角陣 Σ : \mathbf{\Sigma}: Σ:
- 首先計算 A T A \mathbf{A^TA} ATA,因為已知矩陣 A \mathbf{A} A大小為 M × N M \times N M×N,因此 A T A \mathbf{A^TA} ATA是大小為 N × N N \times N N×N的方陣,可以進行特征分解,求得 N N N個特征值 λ i ( i = 1 , . . . , N ) \lambda_i(i = 1, ..., N) λi?(i=1,...,N)和單位化的特征向量 α i ( i = 1 , . . . , N ) \bm{\alpha_i}(i = 1, ..., N) αi?(i=1,...,N).
- 因此,矩陣
V
\mathbf{V}
V和準對角陣
Σ
\mathbf{\Sigma}
Σ可以得到為:
V = ( α 1 ? α 2 ? ? ? α N ) Σ = ( λ 1 0 ? 0 0 λ 2 ? 0 ? ? ? ? 0 0 ? λ N ) \begin{aligned} \mathbf{V} &= (\bm{\alpha_1\ \alpha_2\ \cdots\ \alpha_N}) \\ \mathbf{\Sigma} &= \begin{pmatrix} \sqrt{\lambda_1} & 0 & \cdots & 0\\ 0 & \sqrt{\lambda_2} & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots\\ 0 & 0 & \cdots & \sqrt{\lambda_N} \end{pmatrix} \end{aligned} VΣ?=(α1??α2????αN?)=? ??λ1??0?0?0λ2???0??????00?λN???? ???
注意:矩陣 Σ \mathbf{\Sigma} Σ不一定是方陣,但是也是只有主對角線上有值,其余填0即可;
另外,矩陣 Σ \mathbf{\Sigma} Σ和矩陣 V \mathbf{V} V中的元素一定要以特征值-特征向量對應書寫,順序不可錯亂。
計算矩陣 U \mathbf{U} U:
- 計算 A A T \mathbf{AA^T} AAT,因為已知矩陣 A \mathbf{A} A大小為 M × N M \times N M×N,因此 A A T \mathbf{AA^T} AAT是大小為 M × M M \times M M×M的方陣,可以進行特征分解,求得 M M M個特征值 γ i ( i = 1 , . . . , M ) \gamma_i(i = 1, ..., M) γi?(i=1,...,M)和單位化的特征向量 θ i ( i = 1 , . . . , M ) \bm{\theta_i}(i = 1, ..., M) θi?(i=1,...,M). 由此,我們可以確定,矩陣 U \mathbf{U} U是由 M M M個單位特征向量組成的,但是向量的排列順序還不確定,接下來就是要確定這件事;
∵ V 是正交矩陣 ∴ V T = V ? 1 ? A = U Σ V ? 1 ? A V = U Σ \begin{aligned} \because \mathbf{V}是正交矩陣 \\ \therefore \mathbf{V^T} = \mathbf{V^{-1}} \\ \Rightarrow \mathbf{A} = \mathbf{U \Sigma V^{-1}}\\ \Rightarrow \mathbf{AV} = \mathbf{U \Sigma} \end{aligned} ∵V是正交矩陣∴VT=V?1?A=UΣV?1?AV=UΣ?
- 計算出矩陣 A V \mathbf{AV} AV,再由于矩陣 Σ \mathbf{\Sigma} Σ只有主對角線上有元素,可以根據(jù)簡單的除法,對應計算出矩陣 U \mathbf{U} U中前幾列對應的元素。由此可以確定特征向量在矩陣 U \mathbf{U} U中的對應位置關系,然后寫出矩陣 U \mathbf{U} U.
- A = U Σ V T \mathbf{A = U \Sigma V^{T}} A=UΣVT(一定要記得矩陣 V \mathbf{V} V最后還有個轉置運算)
3. 奇異值分解的原理
在上述數(shù)值計算過程中有一個問題,就是為什么矩陣 A T A \mathbf{A^TA} ATA的特征向量就組成矩陣 V \mathbf{V} V,特征值組成矩陣 Σ \mathbf{\Sigma} Σ,而矩陣 A A T \mathbf{AA^T} AAT的特征向量組成矩陣 U \mathbf{U} U呢?接下來就解釋這個問題:
-
為什么矩陣 A T A \mathbf{A^TA} ATA的特征向量就組成矩陣 V \mathbf{V} V,特征值開根號組成矩陣 Σ \mathbf{\Sigma} Σ?
A = U Σ V T A T = V Σ T U T = V Σ T U ? 1 ( 因為 U 是正交陣 ) ? A T A = V Σ T U ? 1 U Σ V T = V Σ 2 V ? 1 ? ( A T A ) V = V Σ 2 \mathbf{A = U \Sigma V^T}\\ \mathbf{A^T = V \Sigma^T U^T}=\mathbf{V \Sigma^T U^{-1}}(因為\mathbf{U}是正交陣)\\ \Rightarrow \mathbf{A^TA} = \mathbf{V \Sigma^T U^{-1} U \Sigma V^T} = \mathbf{V \Sigma^2 V^{-1}}\\ \Rightarrow (\mathbf{A^TA})\mathbf{V} = \mathbf{V \Sigma^2} A=UΣVTAT=VΣTUT=VΣTU?1(因為U是正交陣)?ATA=VΣTU?1UΣVT=VΣ2V?1?(ATA)V=VΣ2
由此可以看到,矩陣 V \mathbf{V} V中包含的列向量實際上就是矩陣 ( A T A ) (\mathbf{A^TA}) (ATA)的特征向量,而矩陣 Σ \mathbf{\Sigma} Σ中的對角值,就是矩陣 ( A T A ) (\mathbf{A^TA}) (ATA)的 特征值 \sqrt{特征值} 特征值?. -
為什么矩陣 A A T \mathbf{AA^T} AAT的特征向量組成矩陣 U \mathbf{U} U呢?
顯然,這個問題和上面同理。
4. 例題
5. 奇異值分解的幾何含義
5.1 數(shù)據(jù)的線性變換——拉伸
例如,有一組數(shù)據(jù)
D
\mathbf{D}
D,
D
\mathbf{D}
D表示為如下的矩陣:
D
=
[
x
1
x
2
x
3
x
4
y
1
y
2
y
3
y
4
]
\mathbf{D} = \begin{bmatrix} x_1 & x_2 & x_3 & x_4\\ y_1 & y_2 & y_3 & y_4 \end{bmatrix}
D=[x1?y1??x2?y2??x3?y3??x4?y4??]
有一矩陣
S
=
[
2
0
0
1
]
\mathbf{S}=\begin{bmatrix} 2 & 0\\ 0 & 1 \end{bmatrix}
S=[20?01?]作用在該數(shù)據(jù)矩陣
D
\mathbf{D}
D上,可以得到:
S
D
=
[
2
0
0
1
]
[
x
1
x
2
x
3
x
4
y
1
y
2
y
3
y
4
]
=
[
2
x
1
2
x
2
2
x
3
2
x
4
y
1
y
2
y
3
y
4
]
\mathbf{SD} = \begin{bmatrix} 2 & 0\\ 0 & 1 \end{bmatrix} \begin{bmatrix} x_1 & x_2 & x_3 & x_4\\ y_1 & y_2 & y_3 & y_4 \end{bmatrix}= \begin{bmatrix} 2x_1 & 2x_2 & 2x_3 & 2x_4\\ y_1 & y_2 & y_3 & y_4 \end{bmatrix}
SD=[20?01?][x1?y1??x2?y2??x3?y3??x4?y4??]=[2x1?y1??2x2?y2??2x3?y3??2x4?y4??]
這是矩陣運算中一條重要的性質:矩陣 S \mathbf{S} S是由 2 × 2 2 \times 2 2×2大小單位矩陣經(jīng)由初等變化而來的,當數(shù)據(jù)矩陣 D \mathbf{D} D左乘上一個單位矩陣的初等變換等于對 D \mathbf{D} D進行對應的行變換。
- 矩陣 D \mathbf{D} D左乘一個 S \mathbf{S} S相當于將基底由默認的 [ 1 0 ] \begin{bmatrix} 1\\ 0 \end{bmatrix} [10?]和 [ 0 1 ] \begin{bmatrix} 0\\ 1 \end{bmatrix} [01?]換為了 [ 2 0 ] \begin{bmatrix} 2\\ 0 \end{bmatrix} [20?]和 [ 0 1 ] \begin{bmatrix} 0\\ 1 \end{bmatrix} [01?](即矩陣 S \mathbf{S} S的列向量),所以數(shù)據(jù)進行了拉伸。
5.2 數(shù)據(jù)的線性變換——旋轉
換作一矩陣
R
=
[
c
o
s
(
θ
)
?
s
i
n
(
θ
)
s
i
n
(
θ
)
c
o
s
(
θ
)
]
\mathbf{R} = \begin{bmatrix} cos(\theta) & -sin(\theta)\\ sin(\theta) & cos(\theta) \end{bmatrix}
R=[cos(θ)sin(θ)??sin(θ)cos(θ)?] 作用與數(shù)據(jù)矩陣
D
\mathbf{D}
D上(
D
\mathbf{D}
D左乘
R
\mathbf{R}
R),可得:
R
D
=
[
c
o
s
(
θ
)
?
s
i
n
(
θ
)
s
i
n
(
θ
)
c
o
s
(
θ
)
]
[
x
1
x
2
x
3
x
4
y
1
y
2
y
3
y
4
]
\mathbf{RD} = \begin{bmatrix} cos(\theta) & -sin(\theta)\\ sin(\theta) & cos(\theta) \end{bmatrix} \begin{bmatrix} x_1 & x_2 & x_3 & x_4\\ y_1 & y_2 & y_3 & y_4 \end{bmatrix}
RD=[cos(θ)sin(θ)??sin(θ)cos(θ)?][x1?y1??x2?y2??x3?y3??x4?y4??]
- 同理,矩陣 D \mathbf{D} D左乘一個 R \mathbf{R} R相當于將基底由默認的 [ 1 0 ] \begin{bmatrix} 1\\ 0 \end{bmatrix} [10?]和 [ 0 1 ] \begin{bmatrix} 0\\ 1 \end{bmatrix} [01?]換為了 [ c o s ( θ ) s i n ( θ ) ] \begin{bmatrix} cos(\theta)\\ sin(\theta) \end{bmatrix} [cos(θ)sin(θ)?]和 [ ? s i n ( θ ) c o s ( θ ) ] \begin{bmatrix} -sin(\theta)\\ cos(\theta) \end{bmatrix} [?sin(θ)cos(θ)?](即矩陣 R \mathbf{R} R的列向量),顯然與原基底相比,作用后的基底逆時針旋轉了 θ \theta θ角度。相應地,數(shù)據(jù)點也是逆時針旋轉 θ \theta θ角度。
5.3 奇異值分解的幾何意義
觀察矩陣奇異值分解的形式:
A
(
m
×
n
)
=
U
(
m
×
m
)
Σ
(
m
×
n
)
V
(
n
×
n
)
T
\mathbf{A_{(m \times n)} = U_{(m \times m)} \Sigma_{(m \times n)} V^T_{(n \times n)}}
A(m×n)?=U(m×m)?Σ(m×n)?V(n×n)T?
由前面的介紹可以知道,矩陣
U
\mathbf{U}
U和矩陣
V
\mathbf{V}
V都是酉矩陣。而酉矩陣有如下性質:
若矩陣 A \mathbf{A} A為酉矩陣,則
- 性質1: A H A = E \mathbf{A^HA=E} AHA=E 且 A A H = E \mathbf{AA^H=E} AAH=E,即表明酉矩陣行與行、列與列之間都是正交的,且各行、各列都是單位向量;
- 性質2: A H = A ? 1 \mathbf{A^H=A^{-1}} AH=A?1且共軛轉置矩陣和逆矩陣也都是酉矩陣
因此矩陣 U \mathbf{U} U和矩陣 V T \mathbf{V^T} VT的每一列都是單位向量,且列與列之間相互正交,可以代表旋轉變換的基底;矩陣 Σ \mathbf{\Sigma} Σ只有主對角線上有 元素,可以代表拉伸(或收縮)變換的基底。
實際上,單位正交矩陣就可以看做是一組旋轉變換的基底;對角矩陣可以看做是拉伸變換的基底。
因此,但任意的矩陣 A \mathbf{A} A作用于數(shù)據(jù)矩陣時,相當于將數(shù)據(jù)坐標點先進行旋轉變換,再進行拉伸變換,最后再進行一次旋轉變換。對于任意一個給定的變換 A \mathbf{A} A,都可以拆解成一個旋轉、伸縮、再旋轉的變換。奇異值本身的數(shù)值,代表了單位超球體經(jīng)變換后成為的超橢球體的每條半軸的長度。
6. 奇異值分解的應用價值
假設矩陣
A
\mathbf{A}
A的奇異值分解為:
A
(
m
×
n
)
=
U
(
m
×
m
)
Σ
(
m
×
n
)
V
(
n
×
n
)
T
=
[
u
1
u
2
?
u
m
]
[
λ
1
1
2
λ
2
1
2
?
]
[
v
1
T
v
2
T
?
v
n
T
]
\begin{aligned} \mathbf{A_{(m \times n)}} &= \mathbf{U_{(m \times m)} \Sigma_{(m \times n)} V^T_{(n \times n)}}\\ &= \begin{bmatrix} \mathbf{u_1} & \mathbf{u_2} & \cdots & \mathbf{u_m} \end{bmatrix} \begin{bmatrix} \lambda_1^{\frac{1}{2}} & & \\ & \lambda_2^{\frac{1}{2}} & \\ & & \cdots \end{bmatrix} \begin{bmatrix} \mathbf{v^T_1}\\ \mathbf{v^T_2}\\ \vdots \\ \mathbf{v^T_n} \end{bmatrix} \end{aligned}
A(m×n)??=U(m×m)?Σ(m×n)?V(n×n)T?=[u1??u2????um??]?
??λ121???λ221??????
???
??v1T?v2T??vnT???
???
此處
u
i
\mathbf{u_i}
ui?和
v
i
\mathbf{v_i}
vi?均為列向量(秩一矩陣),
Σ
\mathbf{\Sigma}
Σ矩陣中存儲的奇異值
λ
i
1
2
\lambda^{\frac{1}{2}}_i
λi21??按照由大到小的順序對角排列:
λ
1
>
λ
2
>
?
>
λ
m
i
n
(
m
×
n
)
\lambda_1 > \lambda_2 > \cdots > \lambda_{min(m \times n)}
λ1?>λ2?>?>λmin(m×n)?。
如下圖運算步驟所示,我們實際上可以將矩陣
A
\mathbf{A}
A的奇異值分解再寫為眾多的秩一矩陣積的和的形式:
即,矩陣
A
=
σ
1
u
1
v
1
T
+
σ
2
u
2
v
2
T
+
?
+
σ
r
u
r
v
r
T
\mathbf{A}=\sigma_1\mathbf{u_1}\mathbf{v^T_1}+\sigma_2\mathbf{u_2}\mathbf{v^T_2}+\cdots+\sigma_r\mathbf{u_r}\mathbf{v^T_r}
A=σ1?u1?v1T?+σ2?u2?v2T?+?+σr?ur?vrT?(r表示矩陣
Σ
\mathbf{\Sigma}
Σ的秩)。奇異值往往代表著矩陣中隱含信息的重要程度,奇異值越大,信息越重要。因此,可以根據(jù)奇異值分解來進行數(shù)據(jù)壓縮。例如,矩陣
A
\mathbf{A}
A代表一張高清圖片,但是礙于存儲大小的限制,需要對圖片進行壓縮,那么我們就可以對圖像矩陣
A
\mathbf{A}
A進行奇異值分解,然后僅保留分解后奇異值大的
k
k
k(
k
<
<
r
k << r
k<<r)個部分,構成一個新的圖片矩陣
A
′
\mathbf{A'}
A′即:
A
′
=
σ
1
u
1
v
1
T
+
?
+
σ
k
u
k
v
k
T
\mathbf{A'}=\sigma_1\mathbf{u_1}\mathbf{v^T_1}+\cdots+\sigma_k\mathbf{u_k}\mathbf{v^T_k}
A′=σ1?u1?v1T?+?+σk?uk?vkT?。此時即完成了對圖片的壓縮。文章來源:http://www.zghlxwxcb.cn/news/detail-784050.html
有趣的性質:
由于矩陣 U \mathbf{U} U和 V \mathbf{V} V都是滿秩的,所以原矩陣 A \mathbf{A} A和對角陣 Σ \mathbf{\Sigma} Σ的秩相同,因此,想要求原矩陣 A \mathbf{A} A的秩,那么只要對A進行奇異值分解,然后數(shù)一數(shù)奇異值的個數(shù)就可以了。文章來源地址http://www.zghlxwxcb.cn/news/detail-784050.html
7. 相關資料
- 相關講解視頻:
1. 矩陣的【奇異值分解】(SVD),圖像壓縮
2. 【學長小課堂】什么是奇異值分解SVD–SVD如何分解時空矩陣 - 相關講解內容專欄:
知乎回答
到了這里,關于矩陣的奇異值分解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!