这篇文章主要介绍了矩阵的一些基本演算,导数,奇异值分解。这里只是作为粗略的复习,详细的推导还请参考线性代数有关的专业书籍。
一、矩阵演算
记是矩阵 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
这个就是最优解。
目前还有 一点小问题:有资料的兔兔评论区分享一波
- 矩阵求导的细则 ?
- 奇异值是怎么分解的 ?