这篇文章主要介绍了矩阵的一些基本演算,导数,奇异值分解。这里只是作为粗略的复习,详细的推导还请参考线性代数有关的专业书籍。
一、矩阵演算
记是矩阵 A ∈ R m × n \mathbb{R}^{m\times n} Rm×n 第 i 行第 j 列的元素( A i j A_{ij} Aij)= A i j A_{ij} Aij.矩阵 A A A 转置记作 A T A^T AT.
- 转置运算: ( A T ) i j = A j i (A^T)_{ij} = A_{ji} (AT)ij=Aji,那么有以下两个法则 ( A + B ) T = A T + B T , ( A B ) T = B T A T \begin {aligned}(A+B)^T&=A^T+B^T, \\\\ (AB)^T&=B^TA^T \end{aligned} (A+B)T(AB)T=AT+BT,=BTAT
- 如果 m = n,则称 A 是 n 阶方阵, I n I_n In 表示 n 阶单位阵,方阵 A 的逆矩阵记作 A − 1 A^{-1} A−1有运算: A − 1 A = A A − 1 = I , ( A T ) − 1 = ( A − 1 ) T \begin {aligned}A^{-1}A&=AA^{-1}=I, \\\\ (A^T)^{-1} &= (A^{-1})^T \end {aligned} A−1A(AT)−1=AA−1=I,=(A−1)T
- 对于 n 阶方阵 A ,它的迹是主对角线的元素之和,即 t r ( A ) = ∑ i = 1 n A i i tr(A)=\sum_{i=1}^nA_{ii} tr(A)=∑i=1nAii有性质: t r ( A T ) = t r ( A ) , t r ( A + B ) = t r ( A ) + t r ( B ) t r ( A B ) = t r ( B A ) , t r ( A B C ) = t r ( B C A ) = t r ( C A B ) \begin {aligned}tr(A^T)\ &=\ tr(A),\\\\ tr(A+B)\ &=\ tr(A)+tr(B)\\\\tr(AB)\ &=\ tr(BA),\\\\tr(ABC)\ &=tr(BCA)=tr(CAB)\end {aligned} tr(AT) tr(A+B) tr(AB) tr(ABC) = tr(A),= tr(A)+tr(B)= tr(BA),=tr(BCA)=tr(CAB)
- n 阶矩阵行列式定义:
d
e
t
(
A
)
=
∑
σ
∈
S
n
p
a
r
(
σ
)
A
1
σ
1
A
2
σ
2
.
.
.
A
n
σ
n
det(A)=\sum_{\sigma\in S_n}par(\sigma)A_1\sigma_1A_2\sigma_2...A_n\sigma_n
det(A)=σ∈Sn∑par(σ)A1σ1A2σ2...Anσn
其中 S n S_n Sn 为所有 n 阶排列的集合,par( σ \sigma σ) 的值为 -1 或者 +1,取决于 σ = σ 1 , σ 2 , . . . , σ n \sigma=\sigma_1,\sigma_2,...,\sigma_n σ=σ1,σ2,...,σn 为奇排列还是偶排列,有性质: d e t ( c A ) = c n d e t ( A ) , d e t ( A T ) = d e t ( A ) , d e t ( A B ) = d e t ( A ) d e t ( B ) , d e t ( A − 1 ) = d e t ( A ) − 1 , d e t ( A n ) = d e t ( A ) n \begin{aligned}det(cA)&=c^ndet(A),\\\\det(A^T)&=det(A),\\\\det(AB)&=det(A)det(B),\\\\det(A^{-1})&=det(A)^{-1},\\\\det(A^n)&=det(A)^n\end {aligned} det(cA)det(AT)det(AB)det(A−1)det(An)=cndet(A),=det(A),=det(A)det(B),=det(A)−1,=det(A)n - 矩阵 A 的二阶范数定义为: ∣ ∣ A ∣ ∣ F = ( t r ( A T A ) ) 1 2 = ( ∑ i = 1 m ∑ j = 1 n A i j 2 ) 1 2 ||A||_F=(tr(A^TA))^{\frac{1}{2}}=(\sum_{i=1}^m\sum_{j=1}^nA_{ij}^2)^{\frac{1}{2}} ∣∣A∣∣F=(tr(ATA))21=(i=1∑mj=1∑nAij2)21
二、导数
向量 a 相对于标量 x 的导数,以及 x 相对于 a 的导数 都是向量 ,其第 i 个分量分别为
(
∂
a
∂
x
)
i
=
∂
a
i
∂
x
,
(
∂
x
∂
a
)
i
=
∂
x
∂
a
i
\begin{aligned}(\frac{\partial a}{\partial x})_i&=\frac{\partial a_i}{\partial x},\\\\(\frac{\partial x}{\partial a})_i&=\frac{\partial x}{\partial a_i}\end{aligned}
(∂x∂a)i(∂a∂x)i=∂x∂ai,=∂ai∂x
类似的,矩阵 A 相对于标量 x 的导数,以及对于 A 的导数都是矩阵,其第 i 行,第 j 列上的元素分别为:
(
∂
A
∂
x
)
i
j
=
∂
A
i
j
∂
x
,
(
∂
x
∂
A
i
j
)
=
∂
x
∂
A
i
j
\begin{aligned}(\frac{\partial A}{\partial x})_{ij}=\frac{\partial A_{ij}}{\partial x},\\\\(\frac{\partial x}{\partial A_{ij}})=\frac{\partial x}{\partial A_{ij}}\end{aligned}
(∂x∂A)ij=∂x∂Aij,(∂Aij∂x)=∂Aij∂x
对于这种求导法则,我们始终从内部去求导,从分量上去求导,最后合成整体
对于函数
f
(
x
)
f(x)
f(x) 这个就非常熟悉了,假定其对向量的元素可导,则
f
(
x
)
f(x)
f(x) 关于
x
x
x 的一阶导数是一个向量,其第 i 个分量为:
(
▽
f
(
x
)
)
=
∂
f
(
x
)
∂
x
i
(\triangledown f(x)\ )=\frac{\partial f(x)}{\partial x_i}
(▽f(x) )=∂xi∂f(x)
f
(
x
)
f(x)
f(x)关于
x
x
x 的二阶导数称为海森矩阵的一个方正,其第 i 行第 j 列上的元素为:
(
▽
2
f
(
x
)
)
i
j
=
∂
2
f
(
x
)
∂
x
i
∂
x
j
(\triangledown^2 f(x)\ )_{ij}=\frac{\partial^2f(x)}{\partial x_i \partial x_j}
(▽2f(x) )ij=∂xi∂xj∂2f(x)
向量和矩阵的导数满足乘法法则
∂
x
T
a
∂
x
=
∂
a
T
x
∂
x
=
a
,
∂
A
B
∂
x
=
∂
A
∂
x
B
+
A
∂
B
∂
x
\begin{aligned}\frac{\partial x^Ta}{\partial x}&=\frac{\partial a^Tx}{\partial x}=a,\\\\\frac{\partial AB}{\partial x}&=\frac{\partial A}{\partial x}B+A\frac{\partial B}{\partial x}\end{aligned}
∂x∂xTa∂x∂AB=∂x∂aTx=a,=∂x∂AB+A∂x∂B
注意这里拆开的时候,矩阵 A,B 的顺序不能改变,左乘依旧左乘,右乘依旧右乘。我们拆开的目的只有一个那就是方便计算。 在数学中,越往高处学习,概念表达式越抽象,这样做是为了方便我们表达,当我们要运用或者计算推导时,我们又会把这个抽象的概念详细化。利用其性质往低维展开(复杂到简单的过程),数据量就会加大,希望大家可以明白这个道理。
由
A
−
1
A
=
I
A^{-1}A=I
A−1A=I 和含AB的式子,逆矩阵的导数可表示为:
∂
A
−
1
∂
x
=
−
A
−
1
∂
A
∂
x
A
−
1
\frac{\partial A^{-1}}{\partial x} = -A^{-1}\frac{\partial A}{\partial x}A^{-1}
∂x∂A−1=−A−1∂x∂AA−1
提示
∂
A
−
1
A
∂
x
\frac{\partial A^{-1}A}{\partial x}
∂x∂A−1A 进行变换,过程中
∂
I
∂
x
=
0
\frac{\partial I}{\partial x} =0
∂x∂I=0 .
若求导的标量是矩阵 A 的元素,则有
∂
t
r
(
A
B
)
∂
A
i
j
=
B
i
j
,
∂
t
r
(
A
B
)
∂
A
=
B
T
.
\begin {aligned} \frac{\partial\ tr(AB)}{\partial A_{ij}}&=B_{ij},\\\\ \frac{\partial \ tr(AB)}{\partial A}&=B^T. \end {aligned}
∂Aij∂ tr(AB)∂A∂ tr(AB)=Bij,=BT.
进而
∂
t
r
(
A
T
B
)
∂
A
=
B
,
∂
t
r
(
A
)
∂
A
=
I
,
∂
t
r
(
A
B
A
T
)
∂
A
=
A
(
B
+
B
T
)
.
\begin{aligned}\frac{\partial\ tr(A^TB)}{\partial A}&=B,\\\\\frac{\partial\ tr(A)}{\partial A}&=I,\\\\\frac{\partial\ tr(ABA^T)}{\partial A}&=A(B+B^T).\end{aligned}
∂A∂ tr(ATB)∂A∂ tr(A)∂A∂ tr(ABAT)=B,=I,=A(B+BT).
根据前面的范式有:
∂
∣
∣
A
∣
∣
F
2
∂
A
=
∂
t
r
(
A
A
T
)
∂
A
=
2
A
\frac{\partial\ ||A||^2_F}{\partial A}=\frac{\partial\ tr(AA^T)}{\partial A}=2A
∂A∂ ∣∣A∣∣F2=∂A∂ tr(AAT)=2A
链式法则,假设
f
f
f 是
g
g
g 和
h
h
h 的复合,
f
(
x
)
=
g
(
h
(
x
)
)
f(x)=g(h(x))
f(x)=g(h(x)),有:
∂
f
(
x
)
∂
x
=
∂
g
(
h
(
x
)
)
∂
x
⋅
∂
h
(
x
)
∂
x
\frac{\partial f(x)}{\partial x}=\frac{\partial \ g(h(x))}{\partial x}\cdot\frac{\partial h(x)}{\partial x}
∂x∂f(x)=∂x∂ g(h(x))⋅∂x∂h(x)
如果,我们把
A
x
−
b
Ax-b
Ax−b 看做一个整体可以化简计算, W 通常是一个对称矩阵:
∂
(
A
x
−
b
)
T
W
(
A
x
−
b
)
∂
x
=
∂
(
A
x
−
b
)
⋅
2
W
(
A
x
−
b
)
∂
x
=
2
A
T
W
(
A
x
−
b
)
\begin{aligned}\frac{\partial\ (Ax-b)^TW(Ax-b)}{\partial x}&=\frac{\partial(Ax-b)\cdot2W(Ax-b)}{\partial x}\\\\&=2A^TW(Ax-b)\end{aligned}
∂x∂ (Ax−b)TW(Ax−b)=∂x∂(Ax−b)⋅2W(Ax−b)=2ATW(Ax−b)
奇异值分解
任意实矩阵都可以分解为
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT
其中
U
U
U 满足
U
T
U
=
I
U^TU=I
UTU=I 的 m 阶酉矩阵,
V
V
V 和
U
U
U 同样性质;
Σ
\Sigma
Σ 是 m × n 的矩阵,
(
Σ
)
i
i
=
σ
i
(\Sigma)_{ii}=\sigma_i
(Σ)ii=σi 并且其他位置的元素都为 0 ,
σ
i
\sigma_i
σi为非负实数且满足
σ
1
⩾
σ
2
⩾
.
.
.
⩾
0
\sigma_1\geqslant\sigma_2\geqslant...\geqslant0
σ1⩾σ2⩾...⩾0.通常我们将奇异值降序排列,以确保
Σ
\Sigma
Σ 的唯一性。
上式的分解叫做奇异值分解,其中
U
U
U 的列向量
u
i
u_i
ui 称为 A 的左奇异向量,V 的列向量
v
i
v_i
vi 叫做 A 的右奇异向量,
σ
i
\sigma_i
σi叫做奇异值,矩阵 A 的秩等于非零奇异值的个数。
奇异值分解用途很多,例如低秩矩阵近似问题,给定一个秩为 r 的矩阵 A,欲求其最优 k 秩近似矩阵
A
~
\widetilde{A}
A
, k ≤ r, 该问题可以形式化为:
m
i
n
A
~
∈
R
m
×
n
∣
∣
A
−
A
~
∣
∣
F
\underset{\widetilde A \in \mathbb{R}^{m\times n}}{min}\ ||A-\widetilde A||_F
A
∈Rm×nmin ∣∣A−A
∣∣F
r
a
n
k
(
A
~
)
=
k
rank(\widetilde A)=k
rank(A
)=k
奇异值分解提供了上述问题的解析解:对于矩阵 A 进行奇异值分解后,将矩阵
Σ
k
\Sigma_k
Σk,即仅保留最大的 k 个奇异值,保留越多,越接近真实值
A
k
=
U
k
Σ
k
V
k
T
A_{k}=U_k\Sigma_kV^T_k
Ak=UkΣkVkT
这个就是最优解。
目前还有 一点小问题:有资料的兔兔评论区分享一波
- 矩阵求导的细则 ?
- 奇异值是怎么分解的 ?