闲话
没点关系的闲话
经过了一段时间的自学,终于达到了“能听懂老师讲课”的层次,受到老师启发,想着记录一下自己对老师课程的感悟,所以写一下。
有点关系的闲话
很久以前,大概学线性代数的时候吧,有一个问题困扰着我——矩阵是啥?
现在留下的记忆就是表征信息的列表,所以说矩阵是什么都行。但是这不算回答了这个问题,因为对于我不背定理的学生而言,除非拿出图像或者工程应用来佐证某个定理描述的内容,基本上是学完就忘的(因为不知道学这东西有什么用处,也对其没有把握)。其实在课上,老师就工程方面讲了不少例子,但奈何自己才疏学浅,还是没能理解老师的意思,所以对于矩阵,还是迷迷糊糊的
正题
首先,还是说点题外话,对于矩阵分解而言,我自己说不出有什么工程用途,就算是结合数值分析的学习,我对于矩阵分解的认识也就是迭代解方程组的用途,老师上课的时候举了几个例子但是我也没有学过控制理论,所以,只是一听。
正交对角分解
假设一个矩阵A,这个矩阵比较特殊,是个实对称阵就是可以正交相似于对角阵公式表示为QTAQ= d i a g diag diag( λ 1 \lambda_1 λ1, λ 2 \lambda_2 λ2~,……, λ n \lambda_n λn)λ是A的特征值,而Q是个标准正交阵(列向量模长为1,且相互正交,数学表示为Q-1=QT
所以,两边左乘Q右乘QT 就有
A
=
Q
d
i
a
g
(
λ
i
)
Q
T
A =Qdiag(\lambda_i)Q^T
A=Qdiag(λi)QT
这样A就可以写成A =
∑
i
=
1
n
λ
i
q
i
q
i
T
\sum_{i=1}^n \lambda_iq_iq_i^T
∑i=1nλiqiqiT 注:其中
q
q
q为
λ
n
\lambda_n
λn的特征向量以三阶为例
A
=
∑
i
=
1
3
λ
i
[
a
1
a
2
a
3
]
×
[
a
1
a
2
a
3
]
=
λ
i
×
∑
i
=
1
3
[
b
1
b
2
b
3
b
4
b
5
b
6
b
7
b
8
b
9
]
A=\sum_{i=1}^3\lambda_i \left[ \begin{matrix} a_1 \\ a_2 \\ a_3 \end{matrix} \right] \times \left[ \begin{matrix} a_1 & a_2 & a_3 \end{matrix} \right] =\lambda_i \times \sum_{i=1}^3 \left[ \begin{matrix} b_1 &b_ 2 &b_ 3 \\ b_4 & b_5 & b_6 \\ b_7 & b_8 & b_9 \end{matrix} \right]
A=i=1∑3λi⎣⎡a1a2a3⎦⎤×[a1a2a3]=λi×i=1∑3⎣⎡b1b4b7b2b5b8b3b6b9⎦⎤
以上就是所谓的特征值分解,数学上已经讲完了,于是,出于一个感性的认识,这样做为什么?有什么用?
老师给出的解释是,
A
A
A被分解成了
n
n
n个分量而用
E
i
j
E_{ij}
Eij除了第i行第j列的元素为1外,其他均为0进行拆分表示的时候是有
n
×
n
n\times n
n×n个分量,表达效率成倍提升。
老师还提供了个例子——当双方都知道基的话,传递特征值就能完成情报的交换(所谓的无损压缩)
由特征值分解到奇异值分解
可以进行特征值分解的矩阵是极为特殊的,也就是 实对称(或者厄米矩阵共轭对称的方阵) 这在实际工程中基本上是不存在的,条件限制的太苛刻了,所以,进行条件的放宽,人们仿造特征值分解的样子,假设
A
m
×
n
=
U
D
V
T
A_{m\times n}=UDV^T
Am×n=UDVT
U
U
U
D
D
D
V
T
V^T
VT分别具有不同的形态
U
是
m
×
m
阶
V
是
n
×
n
阶
U 是m \times m阶 V是n \times n阶
U是m×m阶V是n×n阶而
D
D
D是分块对角的,下式中的
Σ
r
\Sigma_r
Σr就是一个对角矩阵
D
=
[
Σ
r
0
0
0
]
Σ
=
d
i
a
g
(
o
i
)
o
i
=
λ
i
其
中
λ
i
为
A
T
A
的
特
征
值
且
λ
1
≥
λ
2
≥
λ
3
≥
…
≥
λ
i
≥
0
D= \left[ \begin{matrix} \Sigma_r&0 \\ 0 &0 \end{matrix} \right] \\ \Sigma=diag(o_i)\\ o_i=\sqrt{\lambda_i}其中\lambda_i为A^TA的特征值\\ 且\lambda_1 \ge \lambda_2 \ge \lambda_3 \ge…\ge\lambda_i \ge 0
D=[Σr000]Σ=diag(oi)oi=λi其中λi为ATA的特征值且λ1≥λ2≥λ3≥…≥λi≥0
注当
A
∈
C
r
m
×
n
(
复
数
域
)
时
依
旧
成
立
A\in C_r^{m \times n}(复数域)时依旧成立
A∈Crm×n(复数域)时依旧成立可以推广
(
A
A
T
)
m
×
m
=
(
U
D
V
T
)
(
U
D
V
T
)
T
=
U
D
V
T
V
D
T
U
T
=
U
(
D
D
T
)
m
×
m
U
T
=
U
m
×
m
[
Σ
r
2
0
0
0
]
m
×
m
U
m
×
m
T
(AA^T)_{m \times m} =(UDV^T)(UDV^T)^T\\=UDV^TVD^TU^T\\=U(DD^T)_{m \times m}U^T \\=U_{m \times m}\left[ \begin{matrix} \Sigma^2_r &0 \\ 0 & 0 \end{matrix} \right] _{m \times m}U^T_{m \times m}
(AAT)m×m=(UDVT)(UDVT)T=UDVTVDTUT=U(DDT)m×mUT=Um×m[Σr2000]m×mUm×mT
由于
D
D
D是一个分块对角的矩阵,所以
D
D
T
DD^T
DDT可以写做上式,同时也佐证了
A
A
T
AA^T
AAT与
D
D
T
DD^T
DDT是正交相似(合同)的。
对于U而言
将
U
U
U拆分成
[
u
1
,
u
2
…
u
m
]
[u_1,u_2…u_m]
[u1,u2…um]左
×
A
A
T
A
A
T
U
=
(
U
D
D
T
U
T
)
U
=
[
Σ
r
2
0
0
0
]
[
u
1
,
u
2
…
u
m
]
=
[
λ
i
u
i
]
m
\times AA^T\\AA^TU=(UDD^TU^T)U=\left[ \begin{matrix} \Sigma^2_r &0 \\ 0 & 0 \end{matrix} \right][u_1,u_2…u_m]=[\lambda_iu_i]_m
×AATAATU=(UDDTUT)U=[Σr2000][u1,u2…um]=[λiui]m
所以
U
U
U的列向量是
A
A
T
AA^T
AAT的特征向量
对于V而言
仅需要改变成 A T A A^TA ATA即可得到 n × n n \times n n×n的矩阵,便可对 V 矩 阵 进 行 求 证 与 计 算 V矩阵进行求证与计算 V矩阵进行求证与计算
总结
于是问题来了,这个奇异值分解有什么用?先看一个比较有意思的现象
A
m
×
n
A_{m \times n}
Am×n
A
A
T
AA^T
AAT与
A
T
A
A^TA
ATA前者维度为
m
×
m
m \times m
m×m后者维度为
n
×
n
n\times n
n×n那么这两个矩阵有什么联系呢?答案是显而易见的,两者相似对角化(这里说的有点不准确,应该是化成上面的
Σ
2
\Sigma^2
Σ2块是一样的,区别在于两者0特征值的个数不同,带来的维度不同。)
至于说工程上有什么具体的应用,我觉得应该是信息的压缩吧,将
n
−
m
n-m
n−m维不必要的部分压缩掉。
题外话
希望有大佬能带带我,嘤嘤嘤。