奇异值与其应用
1. 奇异值定义
对于任意的矩阵
A
A
A(可以是方阵或非方阵),存在三个矩阵
U
U
U、
Σ
\Sigma
Σ 和
V
V
V,使得:
A
=
U
Σ
V
T
A = U \Sigma V^T
A=UΣVT
其中:
- U U U 是一个 m × m m \times m m×m 的正交矩阵,表示左奇异向量;
- V V V 是一个 n × n n \times n n×n 的正交矩阵,表示右奇异向量;
- Σ \Sigma Σ 是一个 m × n m \times n m×n 的对角矩阵,其中对角线上的元素为奇异值。
2. 奇异值的性质
- 非负性:奇异值始终为非负数,即对角矩阵 Σ \Sigma Σ 的对角元素均为非负。
- 奇异值的数量:对于一个 m × n m \times n m×n 的矩阵 A A A,最多有 min ( m , n ) \min(m, n) min(m,n) 个奇异值。
- 矩阵的秩:矩阵 A A A 的秩等于其非零奇异值的数量。
- 特征值与奇异值的关系:方阵 A A A 的奇异值是矩阵 A T A A^T A ATA 的特征值的平方根。
- 不变性:奇异值是矩阵的固有属性,与矩阵的旋转或变换无关。
2.1 奇异值分解的示例
为了更好地理解奇异值分解的具体过程和应用,我们通过一个简单的例子展示如何进行奇异值分解。
示例矩阵
考虑一个
3
×
2
3 \times 2
3×2 的矩阵
A
A
A:
A
=
(
1
0
0
1
1
1
)
A = \begin{pmatrix} 1 & 0 \\ 0 & 1 \\ 1 & 1 \end{pmatrix}
A=
101011
我们将对这个矩阵进行奇异值分解。
1. 计算 A T A A^T A ATA
首先,我们计算矩阵
A
T
A
A^T A
ATA:
A
T
A
=
(
1
0
1
0
1
1
)
(
1
0
0
1
1
1
)
=
(
2
1
1
2
)
A^T A = \begin{pmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \end{pmatrix} \begin{pmatrix} 1 & 0 \\ 0 & 1 \\ 1 & 1 \end{pmatrix} = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}
ATA=(100111)
101011
=(2112)
2. 求 A T A A^T A ATA 的特征值和特征向量
接下来,我们求矩阵
A
T
A
A^T A
ATA 的特征值和特征向量。先写出特征方程:
det
(
A
T
A
−
λ
I
)
=
det
(
2
−
λ
1
1
2
−
λ
)
=
(
2
−
λ
)
2
−
1
=
λ
2
−
4
λ
+
3
=
0
\det(A^T A - \lambda I) = \det\begin{pmatrix} 2 - \lambda & 1 \\ 1 & 2 - \lambda \end{pmatrix} = (2 - \lambda)^2 - 1 = \lambda^2 - 4\lambda + 3 = 0
det(ATA−λI)=det(2−λ112−λ)=(2−λ)2−1=λ2−4λ+3=0
解得特征值为:
λ
1
=
3
,
λ
2
=
1
\lambda_1 = 3, \quad \lambda_2 = 1
λ1=3,λ2=1
对于
λ
1
=
3
\lambda_1 = 3
λ1=3,解特征方程
(
A
T
A
−
3
I
)
v
=
0
(A^T A - 3I)v = 0
(ATA−3I)v=0 得到特征向量:
v
1
=
1
2
(
1
1
)
v_1 = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ 1 \end{pmatrix}
v1=21(11)
对于
λ
2
=
1
\lambda_2 = 1
λ2=1,解
(
A
T
A
−
I
)
v
=
0
(A^T A - I)v = 0
(ATA−I)v=0 得到特征向量:
v
2
=
1
2
(
1
−
1
)
v_2 = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ -1 \end{pmatrix}
v2=21(1−1)
因此,矩阵
V
V
V 的列向量是特征向量:
V
=
(
1
2
1
2
1
2
−
1
2
)
V = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix}
V=(212121−21)
3. 计算奇异值
奇异值是
A
T
A
A^T A
ATA 的特征值的平方根,因此:
σ
1
=
3
,
σ
2
=
1
=
1
\sigma_1 = \sqrt{3}, \quad \sigma_2 = \sqrt{1} = 1
σ1=3,σ2=1=1
因此,矩阵
Σ
\Sigma
Σ 为:
Σ
=
(
3
0
0
1
0
0
)
\Sigma = \begin{pmatrix} \sqrt{3} & 0 \\ 0 & 1 \\ 0 & 0 \end{pmatrix}
Σ=
300010
4. 计算 U U U
矩阵 U U U 的列向量是矩阵 A A A 的左奇异向量,左奇异向量通过公式 A v i = σ i u i A v_i = \sigma_i u_i Avi=σiui 计算。
对于
σ
1
=
3
\sigma_1 = \sqrt{3}
σ1=3,我们有:
A
(
1
2
1
2
)
=
(
1
1
2
)
,
u
1
=
1
6
(
1
1
2
)
A \begin{pmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{pmatrix} = \begin{pmatrix} 1 \\ 1 \\ 2 \end{pmatrix}, \quad u_1 = \frac{1}{\sqrt{6}} \begin{pmatrix} 1 \\ 1 \\ 2 \end{pmatrix}
A(2121)=
112
,u1=61
112
对于
σ
2
=
1
\sigma_2 = 1
σ2=1,我们有:
A
(
1
2
−
1
2
)
=
(
1
−
1
0
)
,
u
2
=
1
2
(
1
−
1
0
)
A \begin{pmatrix} \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} \end{pmatrix} = \begin{pmatrix} 1 \\ -1 \\ 0 \end{pmatrix}, \quad u_2 = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ -1 \\ 0 \end{pmatrix}
A(21−21)=
1−10
,u2=21
1−10
因此,矩阵
U
U
U 为:
U
=
(
1
6
1
2
1
6
−
1
2
2
6
0
)
U = \begin{pmatrix} \frac{1}{\sqrt{6}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{6}} & -\frac{1}{\sqrt{2}} \\ \frac{2}{\sqrt{6}} & 0 \end{pmatrix}
U=
61616221−210
5. 奇异值分解结果
最终,矩阵
A
A
A 的奇异值分解为:
A
=
U
Σ
V
T
A = U \Sigma V^T
A=UΣVT
其中:
U
=
(
1
6
1
2
1
6
−
1
2
2
6
0
)
,
Σ
=
(
3
0
0
1
0
0
)
,
V
T
=
(
1
2
1
2
1
2
−
1
2
)
U = \begin{pmatrix} \frac{1}{\sqrt{6}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{6}} & -\frac{1}{\sqrt{2}} \\ \frac{2}{\sqrt{6}} & 0 \end{pmatrix}, \quad \Sigma = \begin{pmatrix} \sqrt{3} & 0 \\ 0 & 1 \\ 0 & 0 \end{pmatrix}, \quad V^T = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix}
U=
61616221−210
,Σ=
300010
,VT=(212121−21)
3. 奇异值分解的应用
3.1 数据降维与压缩
奇异值分解可用于数据降维,特别是在图像处理或主成分分析(PCA)中,通过保留最大的奇异值,能够有效减少数据量,同时保留数据的主要信息。
3.2 最小二乘问题
在解超定方程或病态方程时,奇异值分解能够提供稳定的最小二乘解。通过分解矩阵 A A A 为奇异值分解形式 A = U Σ V T A = U \Sigma V^T A=UΣVT,我们可以稳定地求解方程组。
例子:奇异值分解在数据压缩中的应用
1. 问题描述
假设我们有一张大小为 100 × 100 100 \times 100 100×100 的灰度图像,用一个矩阵 A A A 表示,每个元素表示像素的亮度值。我们希望通过奇异值分解对这张图像进行压缩。
2. 奇异值分解
对矩阵
A
A
A 进行奇异值分解,得到:
A
=
U
Σ
V
T
A = U \Sigma V^T
A=UΣVT
其中:
- U U U 是 100 × 100 100 \times 100 100×100 的矩阵;
- Σ \Sigma Σ 是 100 × 100 100 \times 100 100×100 的对角矩阵,包含奇异值;
- V T V^T VT 是 100 × 100 100 \times 100 100×100 的矩阵。
3. 压缩过程
我们只保留最大的
k
=
20
k = 20
k=20 个奇异值,构造近似矩阵
A
k
A_k
Ak:
A
k
=
U
k
Σ
k
V
k
T
A_k = U_k \Sigma_k V_k^T
Ak=UkΣkVkT
其中:
- U k U_k Uk 是 100 × 20 100 \times 20 100×20 的矩阵;
- Σ k \Sigma_k Σk 是 20 × 20 20 \times 20 20×20 的对角矩阵;
- V k T V_k^T VkT 是 20 × 100 20 \times 100 20×100 的矩阵。
经过压缩后,总数据量从原来的 10,000 个数据点减少到 6400 个数据点。
例子:奇异值分解在最小二乘问题中的应用
1. 问题描述
我们要解一个线性方程组:
A
x
=
b
A x = b
Ax=b
其中
A
A
A 是一个
3
×
2
3 \times 2
3×2 的矩阵,
b
b
b 是一个
3
×
1
3 \times 1
3×1 的已知向量。
矩阵
A
A
A 和向量
b
b
b 如下:
A
=
(
1
0
0
1
1
1
)
,
b
=
(
2
2
4
)
A = \begin{pmatrix} 1 & 0 \\ 0 & 1 \\ 1 & 1 \end{pmatrix}, \quad b = \begin{pmatrix} 2 \\ 2 \\ 4 \end{pmatrix}
A=
101011
,b=
224
2. 奇异值分解求解最小二乘问题
我们首先对
A
A
A 进行奇异值分解:
A
=
U
Σ
V
T
A = U \Sigma V^T
A=UΣVT
通过计算得到:
U
=
(
−
0.577
0.707
−
0.577
−
0.707
−
0.577
0.000
)
,
Σ
=
(
1.732
0
0
1
)
,
V
T
=
(
−
0.707
−
0.707
0.707
−
0.707
)
U = \begin{pmatrix} -0.577 & 0.707 \\ -0.577 & -0.707 \\ -0.577 & 0.000 \end{pmatrix}, \quad \Sigma = \begin{pmatrix} 1.732 & 0 \\ 0 & 1 \end{pmatrix}, \quad V^T = \begin{pmatrix} -0.707 & -0.707 \\ 0.707 & -0.707 \end{pmatrix}
U=
−0.577−0.577−0.5770.707−0.7070.000
,Σ=(1.732001),VT=(−0.7070.707−0.707−0.707)
2.1 计算 U T b U^T b UTb
U T b = ( − 0.577 − 0.577 − 0.577 0.707 − 0.707 0 ) ( 2 2 4 ) = ( − 4.618 1.414 ) U^T b = \begin{pmatrix} -0.577 & -0.577 & -0.577 \\ 0.707 & -0.707 & 0 \end{pmatrix} \begin{pmatrix} 2 \\ 2 \\ 4 \end{pmatrix} = \begin{pmatrix} -4.618 \\ 1.414 \end{pmatrix} UTb=(−0.5770.707−0.577−0.707−0.5770) 224 =(−4.6181.414)
2.2 解 Σ y = U T b \Sigma y = U^T b Σy=UTb
Σ
y
=
(
1.732
0
0
1
)
(
y
1
y
2
)
=
(
−
4.618
1.414
)
\Sigma y = \begin{pmatrix} 1.732 & 0 \\ 0 & 1 \end{pmatrix} \begin{pmatrix} y_1 \\ y_2 \end{pmatrix} = \begin{pmatrix} -4.618 \\ 1.414 \end{pmatrix}
Σy=(1.732001)(y1y2)=(−4.6181.414)
解得:
y
1
=
−
2.666
,
y
2
=
1.414
y_1 = -2.666, \quad y_2 = 1.414
y1=−2.666,y2=1.414
2.3 计算 x = V y x = V y x=Vy
x = V y = ( − 0.707 − 0.707 0.707 − 0.707 ) ( − 2.666 1.414 ) = ( 2 1 ) x = V y = \begin{pmatrix} -0.707 & -0.707 \\ 0.707 & -0.707 \end{pmatrix} \begin{pmatrix} -2.666 \\ 1.414 \end{pmatrix} = \begin{pmatrix} 2 \\ 1 \end{pmatrix} x=Vy=(−0.7070.707−0.707−0.707)(−2.6661.414)=(21)
因此,最小二乘解为 x = ( 2 1 ) x = \begin{pmatrix} 2 \\ 1 \end{pmatrix} x=(21)。
总结
奇异值分解在数据压缩和最小二乘问题中有广泛的应用。在数据压缩中,通过保留最大的奇异值,我们可以有效减少数据量,压缩图片或信号;在最小二乘问题中,SVD 提供了数值稳定的解法,特别适用于病态或超定方程组。