前言

在前面深度学习理论推导时,我们也经常看到矩阵表达式,它可以让事情变得更加清晰,下面我们用矩阵的思维来看待问题。


级数

给你一个级数表达式:

∑ i = 1 n a i b i \sum \limits_{i=1}^{n}{a_i b_i} i=1naibi

首先你会想到什么?

想到 头疼,头大,头爆炸

不要害怕,遇到这种不熟悉的,先转成我们熟悉,能理解的,级数,不就是 连加 嘛:

∑ i = 1 n a i b i = a 1 b 1 + a 2 b 2 + a 3 b 3 + ⋯ + a n b n \sum \limits_{i=1}^{n}{a_i b_i}=a_1b_1+a_2b_2+a_3b_3+\dots+a_nb_n i=1naibi=a1b1+a2b2+a3b3++anbn

是不是很清楚明白?

很多事情就是这样,万事开头难,但只要迈出一步,就能看到胜利的希望。


矩阵

但我想说的不是这个,当接触多了这些数学表达式,我首先想到的是 向量的点积矩阵的乘法

∑ i = 1 n a i b i = a ⃗ ⋅ b ⃗ = ( a 1 , a 2 , … , a n ) ⋅ ( b 1 , b 2 , … , b n ) \sum \limits_{i=1}^{n}{a_i b_i}=\vec{a}\cdot \vec{b}=(a_1,a_2,\dots,a_n)\cdot(b_1,b_2,\dots,b_n) i=1naibi=a b =(a1,a2,,an)(b1,b2,,bn)

在矩阵的世界中,向量通常用列向量表示:

A = [ a 1 a 2 … a n ] , B = [ b 1 b 2 … b n ] A=\begin{bmatrix} a_1\\ a_2\\ \dots\\ a_n \end{bmatrix}, B=\begin{bmatrix} b_1\\ b_2\\ \dots\\ b_n \end{bmatrix} A= a1a2an ,B= b1b2bn

那么

∑ i = 1 n a i b i = a 1 b 1 + a 2 b 2 + ⋯ + a n b n = A ⊤ B = [ a 1 a 2 … a n ] [ b 1 b 2 … b n ] \sum \limits_{i=1}^{n}{a_i b_i}=a_1b_1+a_2b_2+\dots+a_nb_n\\[10pt] =A^\top B %% A^T =\begin{bmatrix} a_1&a_2&\dots&a_n \end{bmatrix} %% B \begin{bmatrix} b_1\\ b_2\\ \dots\\ b_n \end{bmatrix} i=1naibi=a1b1+a2b2++anbn=AB=[a1a2an] b1b2bn

对于这种向量相乘,还有这样的特性:

A ⊤ B = B ⊤ A A^\top B=B^\top A\\[10pt] AB=BA

这也很好理解,不就是用到了小学学过的乘法交换律吗?即:

a 1 b 1 + a 2 b 2 + ⋯ + a n b n = b 1 a 1 + b 2 a 2 + ⋯ + b n a n a_1b_1+a_2b_2+\dots+a_nb_n=b_1a_1+b_2a_2+\dots+b_na_n a1b1+a2b2++anbn=b1a1+b2a2++bnan

但是这个变形大有用处, 之前我们曾在多元线性回归中用它提取过矩阵的公共项

一起来回顾一下:

d i = ∂ E ∂ w j = ( X W − Y ) ⊤ [ x 1 j x 2 j . . . x m j ] d_i=\frac{\partial{E}}{\partial{w_j}}=(XW-Y)^\top\begin{bmatrix} x_{1j}\\[10pt] x_{2j}\\[10pt] ...\\[10pt] x_{mj}\\[10pt] \end{bmatrix}\\ di=wjE=(XWY) x1jx2j...xmj

其中 d i d_i di 是一个数值, 那么有:

∂ E ∂ W = [ d 1 d 2 . . . d n ] = [ d 1 d 2 . . . d n ] ⊤ = [ ( X W − Y ) ⊤ [ x 11 x 21 . . . x m 1 ] ( X W − Y ) ⊤ [ x 12 x 22 . . . x m 2 ] . . . ( X W − Y ) ⊤ [ x 1 n x 2 n . . . x m n ] ] ⊤ \frac{\partial{E}}{\partial{W}} =\begin{bmatrix} d_1\\[10pt] d_2\\[10pt] ...\\[10pt] d_n\\[10pt] \end{bmatrix} =\begin{bmatrix} d_1 & d_2 & ... & d_n \end{bmatrix}^\top \\[10pt] =\begin{bmatrix} (XW-Y)^\top\begin{bmatrix} x_{11}\\[10pt] x_{21}\\[10pt] ...\\[10pt] x_{m1}\\[10pt] \end{bmatrix}& (XW-Y)^\top\begin{bmatrix} x_{12}\\[10pt] x_{22}\\[10pt] ...\\[10pt] x_{m2}\\[10pt] \end{bmatrix}& ...& (XW-Y)^\top\begin{bmatrix} x_{1n}\\[10pt] x_{2n}\\[10pt] ...\\[10pt] x_{mn}\\[10pt] \end{bmatrix}\\[10pt] \end{bmatrix}^\top\\ WE= d1d2...dn =[d1d2...dn]= (XWY) x11x21...xm1 (XWY) x12x22...xm2 ...(XWY) x1nx2n...xmn


提取公共项

下面 A,B,C,W 全是矩阵表示

  1. 右乘提取公共项, A , B , C ∈ R a × b , W ∈ R b × c A,B,C \in R^{a\times b},W\in R^{b\times c} A,B,CRa×b,WRb×c:

    [ A ⋅ W B ⋅ W C ⋅ W ] = [ A B C ] W \begin{bmatrix} A\cdot W\\[10pt] B\cdot W\\[10pt] C\cdot W \end{bmatrix} =\begin{bmatrix} A\\[10pt] B\\[10pt] C \end{bmatrix}W AWBWCW = ABC W

  2. 左乘提取公共项, W ∈ R c × b , A , B , C ∈ R a × b W\in R^{c\times b}, A,B,C \in R^{a\times b} WRc×b,A,B,CRa×b:

    [ W ⋅ A W ⋅ B W ⋅ C ] = W [ A B C ] \begin{bmatrix} W\cdot A& W\cdot B& W\cdot C \end{bmatrix} =W\begin{bmatrix} A& B& C& \end{bmatrix} [WAWBWC]=W[ABC]

  3. 如果是其他形式,可以先适当变换,变成上面两种形式后再提取公共项,例如上面的例子

    当然,还有些其他形式的,看上去很像,但不一定能直接提,例如:

    [ W ⋅ A W ⋅ B W ⋅ C ] = [ W 0 0 0 W 0 0 0 W ] [ A B C ] = ( I 3 ⊗ W ) [ A B C ] \begin{bmatrix} W\cdot A\\[10pt] W\cdot B\\[10pt] W\cdot C \end{bmatrix} =\begin{bmatrix} W & 0 & 0 \\[10pt] 0 & W & 0 \\[10pt] 0 & 0 & W \end{bmatrix} \begin{bmatrix} A \\[10pt] B \\[10pt] C \end{bmatrix} =(I_3 \otimes W) \begin{bmatrix} A\\[10pt] B\\[10pt] C \end{bmatrix} WAWBWC = W000W000W ABC =(I3W) ABC

    但是, 当 W ⋅ A ∈ R 1 × 1 W\cdot A \in R^{1\times 1} WAR1×1 时,也就是一个数值, 我们就有可以操作变化的空间了,令:

    a = W ⋅ A  ,  b = W ⋅ B  ,  c = W ⋅ C a=W\cdot A\text{ , } b=W\cdot B\text{ , } c=W\cdot C a=WA , b=WB , c=WC

    代入变换,并用左乘提取公共项:

    U = [ W ⋅ A W ⋅ B W ⋅ C ] = [ a b c ] = [ a b c ] ⊤ = [ W ⋅ A W ⋅ B W ⋅ C ] ⊤ = W [ A B C ] U=\begin{bmatrix} W\cdot A\\[10pt] W\cdot B\\[10pt] W\cdot C \end{bmatrix} =\begin{bmatrix} a\\[10pt] b\\[10pt] c \end{bmatrix} =\begin{bmatrix} a& b& c \end{bmatrix}^\top\\[10pt] =\begin{bmatrix} W\cdot A& W\cdot B& W\cdot C \end{bmatrix}^\top =W\begin{bmatrix} A& B& C \end{bmatrix} U= WAWBWC = abc =[abc]=[WAWBWC]=W[ABC]


求平方和

用矩阵来求平方和形如:

A ⊤ A A^\top A AA

拿向量来理解,还记得向量怎么相乘吗?假如 A 是一个 n 维列向量,那么:

A = [ a 1 a 2 … a n ] A ⊤ = [ a 1 a 2 … a n ] A=\begin{bmatrix} a_1\\ a_2\\ \dots\\ a_n \end{bmatrix}\\[10pt] A^\top = \begin{bmatrix} a_1&a_2&\dots&a_n \end{bmatrix} A= a1a2an A=[a1a2an]

向量相乘:

A ⊤ A = ∑ i = 1 n a i 2 = a 1 2 + a 2 2 + ⋯ + a n 2 A^\top A = \sum \limits_{i=1}^{n}{a_i^2}=a_1^2+a_2^2+\dots+a_n^2 AA=i=1nai2=a12+a22++an2

所以,当你看到 ∑ i = 1 n a i 2 \sum \limits_{i=1}^{n}{a_i^2} i=1nai2 时, 马上联想到 矩阵 A ⊤ A A^\top A AA

我们在多元线性回归中其实见过:

E = 1 2 R S S = 1 2 ∑ i = 1 m ( x i T W − y i ) 2 = 1 2 ( X W − Y ) T ( X W − Y ) E=\frac{1}{2}RSS=\frac{1}{2}\sum\limits_{i=1}^{m}{({x_i}^T W-y_i)^2}\\[10pt] =\frac{1}{2}(XW-Y)^T(XW-Y)\\[10pt] E=21RSS21i=1m(xiTWyi)2=21(XWY)T(XWY)

其中

u i = x i T W − y i = x i 1 w 1 + x i 2 w 2 + . . . + x i n w n − y i E = 1 2 ∑ i = 1 m u i 2 = 1 2 ( u 1 2 + u 2 2 + . . . + u m 2 ) u_i={x_i}^T W-y_i=x_{i1}w_1+x_{i2}w_2+...+x_{in}w_n-y_i\\[10pt] E=\frac{1}{2}\sum\limits_{i=1}^{m}{u_i}^2=\frac{1}{2}(u_1^2+u_2^2+...+u_m^2) ui=xiTWyi=xi1w1+xi2w2+...+xinwnyiE=21i=1mui2=21(u12+u22+...+um2)

这再次揭示出矩阵级数求和之间的联系是非常密切的, 当你看到级数求和时, 马上就应该联想到 矩阵


矩阵的意义

线性方程组

我们刚开始学习矩阵时, 是从解线性方程组开始的:

1 x + 2 y + 3 z = 6 2 x + 3 y + 4 z = 9 3 x + 4 y + 5 z = 12 1x+2y+3z=6\\ 2x+3y+4z=9\\ 3x+4y+5z=12\\ 1x+2y+3z=62x+3y+4z=93x+4y+5z=12

那它用矩阵来表示为:

[ 1 2 3 2 3 4 3 4 5 ] [ x y z ] = [ 6 9 12 ] \begin{bmatrix} 1&2&3\\ 2&3&4\\ 3&4&5\\ \end{bmatrix} \begin{bmatrix} x\\ y\\ z\\ \end{bmatrix} =\begin{bmatrix} 6\\ 9\\ 12\\ \end{bmatrix} 123234345 xyz = 6912

那时候是说数学家偷懒, 不愿意写那么多的线性方程组, 所以才用矩阵来表示。

后来, 我们再从向量的角度上去看待矩阵, 发现矩阵是用来进行向量变换的(拉伸与旋转), 简直大学时期的恶梦!


向量变换

在上例中, 我们将向量 b ⃗ = ( x , y , z ) \vec{b}=(x,y,z) b =(x,y,z) 变换为 ( 6 , 9 , 12 ) (6,9,12) (6,9,12), 一切向量皆矩阵, 令:

A = [ 1 2 3 2 3 4 3 4 5 ] , X = [ x y z ] , Y = [ 6 9 12 ] A ⋅ X = Y A=\begin{bmatrix} 1&2&3\\ 2&3&4\\ 3&4&5\\ \end{bmatrix}, X=\begin{bmatrix} x\\ y\\ z\\ \end{bmatrix}, Y=\begin{bmatrix} 6\\ 9\\ 12\\ \end{bmatrix}\\[10pt] A\cdot X=Y A= 123234345 ,X= xyz ,Y= 6912 AX=Y

如果我们再多来一些向量, 令:

A = [ a 11 a 12 … a 1 n a 21 a 22 … a 2 n … … … … a m 1 a m 2 … a m n ] x 1 ⃗ = [ x 11 x 21 … x n 1 ] , x 2 ⃗ = [ x 12 x 22 … x n 2 ] , y 1 ⃗ = [ y 11 y 21 … y n 1 ] , y 2 ⃗ = [ y 12 y 22 … y n 2 ] A ⋅ x 1 ⃗ = y 1 ⃗ A ⋅ x 2 ⃗ = y 2 ⃗ % 矩阵 A=\begin{bmatrix} a_{11}&a_{12}&\dots&a_{1n}\\[10pt] a_{21}&a_{22}&\dots&a_{2n}\\[10pt] \dots&\dots&\dots&\dots\\[10pt] a_{m1}&a_{m2}&\dots&a_{mn}\\[10pt] \end{bmatrix}\\[10pt] % 向量 \vec{x_1}=\begin{bmatrix} x_{11}\\ x_{21}\\ \dots\\ x_{n1}\\ \end{bmatrix}, \vec{x_2}=\begin{bmatrix} x_{12}\\ x_{22}\\ \dots\\ x_{n2}\\ \end{bmatrix}, \vec{y_1}=\begin{bmatrix} y_{11}\\ y_{21}\\ \dots\\ y_{n1}\\ \end{bmatrix}, \vec{y_2}=\begin{bmatrix} y_{12}\\ y_{22}\\ \dots\\ y_{n2}\\ \end{bmatrix}\\[10pt] % 关系 A\cdot \vec{x_1}= \vec{y_1}\\[10pt] A\cdot \vec{x_2}= \vec{y_2}\\[10pt] A= a11a21am1a12a22am2a1na2namn x1 = x11x21xn1 ,x2 = x12x22xn2 ,y1 = y11y21yn1 ,y2 = y12y22yn2 Ax1 =y1 Ax2 =y2

是不是可以看作:

[ A ⋅ x 1 ⃗ A ⋅ x 2 ⃗ ] = [ y 1 ⃗ y 2 ⃗ ] = [ y 11 y 12 y 21 y 22 … … y n 1 y n 2 ] \begin{bmatrix} A\cdot \vec{x_1}& A\cdot \vec{x_2} \end{bmatrix} =\begin{bmatrix} \vec{y_1}& \vec{y_2} \end{bmatrix} =\begin{bmatrix} y_{11}&y_{12}\\ y_{21}&y_{22}\\ \dots&\dots\\ y_{n1}&y_{n2}\\ \end{bmatrix} [Ax1 Ax2 ]=[y1 y2 ]= y11y21yn1y12y22yn2

如果我把 x 1 ⃗ \vec{x_1} x1 x 2 ⃗ \vec{x_2} x2 看作是一个矩阵的两列, 再次用矩阵来表示:

[ A ⋅ x 1 ⃗ A ⋅ x 2 ⃗ ] = [ A ⋅ [ x 11 x 21 … x n 1 ] A ⋅ [ x 12 x 22 … x n 2 ] ] = [ a 11 a 12 … a 1 n a 21 a 22 … a 2 n … … … … a m 1 a m 2 … a m n ] [ x 11 x 12 x 12 x 22 … … x n 1 x n 2 ] = [ y 11 y 12 y 21 y 22 … … y n 1 y n 2 ] \begin{bmatrix} A\cdot \vec{x_1}& A\cdot \vec{x_2} \end{bmatrix} =\begin{bmatrix} A\cdot \begin{bmatrix} x_{11}\\ x_{21}\\ \dots\\ x_{n1}\\ \end{bmatrix}& A\cdot \begin{bmatrix} x_{12}\\ x_{22}\\ \dots\\ x_{n2}\\ \end{bmatrix} \end{bmatrix}\\[10pt] =\begin{bmatrix} a_{11}&a_{12}&\dots&a_{1n}\\[10pt] a_{21}&a_{22}&\dots&a_{2n}\\[10pt] \dots&\dots&\dots&\dots\\[10pt] a_{m1}&a_{m2}&\dots&a_{mn}\\[10pt] \end{bmatrix} \begin{bmatrix} x_{11}&x_{12}\\[10pt] x_{12}&x_{22}\\[10pt] \dots&\dots\\[10pt] x_{n1}&x_{n2}\\[10pt] \end{bmatrix} =\begin{bmatrix} y_{11}&y_{12}\\[10pt] y_{21}&y_{22}\\[10pt] \dots&\dots\\[10pt] y_{n1}&y_{n2}\\[10pt] \end{bmatrix} [Ax1 Ax2 ]= A x11x21xn1 A x12x22xn2 = a11a21am1a12a22am2a1na2namn x11x12xn1x12x22xn2 = y11y21yn1y12y22yn2

是不是有点熟悉了? 在多元线性回归中其实见过:

X W = U [ x 11 x 12 … x 1 n x 21 x 22 … x 2 n … x m 1 x m 2 … x m n ] [ w 11 w 21 … w c 1 w 12 w 22 … w c 2 … w 1 n w 2 n … w c n ] = [ u 11 u 12 … u 1 c u 21 u 22 … u 2 c … u m 1 u m 2 … u m c ] XW=U \\[10pt] \begin{bmatrix} x_{11}&x_{12}&\dots&x_{1n}\\ x_{21}&x_{22}&\dots&x_{2n}\\ \dots\\ x_{m1}&x_{m2}&\dots&x_{mn}\\ \end{bmatrix} \begin{bmatrix} w_{11}&w_{21}&\dots&w_{c1}\\ w_{12}&w_{22}&\dots&w_{c2}\\ \dots\\ w_{1n}&w_{2n}&\dots&w_{cn}\\ \end{bmatrix} =\begin{bmatrix} u_{11}&u_{12}&\dots&u_{1c}\\ u_{21}&u_{22}&\dots&u_{2c}\\ \dots\\ u_{m1}&u_{m2}&\dots&u_{mc}\\ \end{bmatrix} XW=U x11x21xm1x12x22xm2x1nx2nxmn w11w12w1nw21w22w2nwc1wc2wcn = u11u21um1u12u22um2u1cu2cumc

也就是将 W,U 矩阵每一列作为一个向量, 由X矩阵进行向量的变换, 得到 U 矩阵每一列向量


分块矩阵

上面我们还看到了一个老朋友:

[ A ⋅ [ x 11 x 21 … x n 1 ] A ⋅ [ x 12 x 22 … x n 2 ] ] = [ a 11 a 12 … a 1 n a 21 a 22 … a 2 n … … … … a m 1 a m 2 … a m n ] [ x 11 x 12 x 12 x 22 … … x n 1 x n 2 ] \begin{bmatrix} A\cdot \begin{bmatrix} x_{11}\\ x_{21}\\ \dots\\ x_{n1}\\ \end{bmatrix}& A\cdot \begin{bmatrix} x_{12}\\ x_{22}\\ \dots\\ x_{n2}\\ \end{bmatrix} \end{bmatrix}\\[10pt] =\begin{bmatrix} a_{11}&a_{12}&\dots&a_{1n}\\[10pt] a_{21}&a_{22}&\dots&a_{2n}\\[10pt] \dots&\dots&\dots&\dots\\[10pt] a_{m1}&a_{m2}&\dots&a_{mn}\\[10pt] \end{bmatrix} \begin{bmatrix} x_{11}&x_{12}\\[10pt] x_{12}&x_{22}\\[10pt] \dots&\dots\\[10pt] x_{n1}&x_{n2}\\[10pt] \end{bmatrix} A x11x21xn1 A x12x22xn2 = a11a21am1a12a22am2a1na2namn x11x12xn1x12x22xn2

这不就是左乘提取公共项的形式吗?

[ W ⋅ A W ⋅ B W ⋅ C ] = W [ A B C ] \begin{bmatrix} W\cdot A& W\cdot B& W\cdot C& \end{bmatrix} =W\begin{bmatrix} A& B& C& \end{bmatrix} [WAWBWC]=W[ABC]

也就是我们也可以反其道而行之, 将大矩阵分块计算:

W [ A B C ] = [ W ⋅ A W ⋅ B W ⋅ C ] W\begin{bmatrix} A& B& C& \end{bmatrix} =\begin{bmatrix} W\cdot A& W\cdot B& W\cdot C& \end{bmatrix} W[ABC]=[WAWBWC]


分块矩阵的加法

如果两个分块矩阵采用相同的分块方式,则加法就是对应子块相加:

[ A 11 A 12 A 21 A 22 ] + [ B 11 B 12 B 21 B 22 ] = [ A 11 + B 11 A 12 + B 12 A 21 + B 21 A 22 + B 22 ] \begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix} + \begin{bmatrix} B_{11} & B_{12} \\ B_{21} & B_{22} \end{bmatrix} = \begin{bmatrix} A_{11}+B_{11} & A_{12}+B_{12} \\ A_{21}+B_{21} & A_{22}+B_{22} \end{bmatrix} [A11A21A12A22]+[B11B21B12B22]=[A11+B11A21+B21A12+B12A22+B22]

前提条件:对应子块的维度必须相同。


分块矩阵的乘法

分块矩阵乘法与普通矩阵乘法规则一致,但要求分块方式相容。

对于矩阵 A m × n A_{m \times n} Am×n B n × p B_{n \times p} Bn×p,将它们按如下方式分块:

A = [ A 11 A 12 A 21 A 22 ] , B = [ B 11 B 12 B 21 B 22 ] A = \begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix}, \quad B = \begin{bmatrix} B_{11} & B_{12} \\ B_{21} & B_{22} \end{bmatrix} A=[A11A21A12A22],B=[B11B21B12B22]

其中:

  • A 11 A_{11} A11 的列数 = B 11 B_{11} B11 的行数
  • A 12 A_{12} A12 的列数 = B 21 B_{21} B21 的行数
  • 等等

则乘积为:

A B = [ A 11 B 11 + A 12 B 21 A 11 B 12 + A 12 B 22 A 21 B 11 + A 22 B 21 A 21 B 12 + A 22 B 22 ] AB = \begin{bmatrix} A_{11}B_{11} + A_{12}B_{21} & A_{11}B_{12} + A_{12}B_{22} \\ A_{21}B_{11} + A_{22}B_{21} & A_{21}B_{12} + A_{22}B_{22} \end{bmatrix} AB=[A11B11+A12B21A21B11+A22B21A11B12+A12B22A21B12+A22B22]

注意:子块之间的乘法是矩阵乘法,不是数乘。


分块矩阵的转置

分块矩阵的转置需要先转置子块,再转置整体分块结构:

[ A 11 A 12 A 13 A 21 A 22 A 23 A 31 A 32 A 33 ] T = [ A 11 T A 21 T A 31 T A 12 T A 22 T A 32 T A 13 T A 23 T A 33 T ] \begin{bmatrix} A_{11} & A_{12} & A_{13} \\ A_{21} & A_{22} & A_{23} \\ A_{31} & A_{32} & A_{33} \end{bmatrix}^T =\begin{bmatrix} A_{11}^T & A_{21}^T & A_{31}^T \\ A_{12}^T & A_{22}^T & A_{32}^T \\ A_{13}^T & A_{23}^T & A_{33}^T \end{bmatrix} A11A21A31A12A22A32A13A23A33 T= A11TA12TA13TA21TA22TA23TA31TA32TA33T

简而言之:整体分块结构转置 + 每个子块分别转置。


分块对角矩阵的性质

分块对角矩阵形如:

A = [ A 11 0 ⋯ 0 0 A 22 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ A k k ] A = \begin{bmatrix} A_{11} & 0 & \cdots & 0 \\ 0 & A_{22} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & A_{kk} \end{bmatrix} A= A11000A22000Akk

性质:

  • 行列式: det ⁡ ( A ) = det ⁡ ( A 11 ) ⋅ det ⁡ ( A 22 ) ⋯ det ⁡ ( A k k ) \det(A) = \det(A_{11}) \cdot \det(A_{22}) \cdots \det(A_{kk}) det(A)=det(A11)det(A22)det(Akk)
  • 逆矩阵:若各子块可逆,则
    A − 1 = [ A 11 − 1 0 ⋯ 0 0 A 22 − 1 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ A k k − 1 ] A^{-1} = \begin{bmatrix} A_{11}^{-1} & 0 & \cdots & 0 \\ 0 & A_{22}^{-1} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & A_{kk}^{-1} \end{bmatrix} A1= A111000A221000Akk1
  • 特征值:所有子块特征值的并集

分块上/下三角矩阵的性质

分块上三角矩阵

U = [ A 11 A 12 0 A 22 ] U = \begin{bmatrix} A_{11} & A_{12} \\ 0 & A_{22} \end{bmatrix} U=[A110A12A22]

性质:

  • 行列式: det ⁡ ( U ) = det ⁡ ( A 11 ) ⋅ det ⁡ ( A 22 ) \det(U) = \det(A_{11}) \cdot \det(A_{22}) det(U)=det(A11)det(A22)
  • 特征值: A 11 A_{11} A11 A 22 A_{22} A22 的特征值的并集
分块下三角矩阵类似

分块矩阵的逆(Schur补公式)

对于可逆矩阵:

M = [ A B C D ] M = \begin{bmatrix} A & B \\ C & D \end{bmatrix} M=[ACBD]

A A A 可逆,则:

M − 1 = [ A − 1 + A − 1 B S − 1 C A − 1 − A − 1 B S − 1 − S − 1 C A − 1 S − 1 ] M^{-1} = \begin{bmatrix} A^{-1} + A^{-1}B S^{-1} C A^{-1} & -A^{-1} B S^{-1} \\ -S^{-1} C A^{-1} & S^{-1} \end{bmatrix} M1=[A1+A1BS1CA1S1CA1A1BS1S1]

其中 S = D − C A − 1 B S = D - C A^{-1} B S=DCA1B 称为 Schur补。

D D D 可逆,也有对称形式:

M − 1 = [ T − 1 − T − 1 B D − 1 − D − 1 C T − 1 D − 1 + D − 1 C T − 1 B D − 1 ] M^{-1} = \begin{bmatrix} T^{-1} & -T^{-1} B D^{-1} \\ -D^{-1} C T^{-1} & D^{-1} + D^{-1} C T^{-1} B D^{-1} \end{bmatrix} M1=[T1D1CT1T1BD1D1+D1CT1BD1]

其中 T = A − B D − 1 C T = A - B D^{-1} C T=ABD1C


分块矩阵的秩

对于分块矩阵:

rank ⁡ [ A B C D ] ≥ rank ⁡ ( A ) + rank ⁡ ( D − C A + B ) \operatorname{rank} \begin{bmatrix} A & B \\ C & D \end{bmatrix} \ge \operatorname{rank}(A) + \operatorname{rank}(D - C A^+ B) rank[ACBD]rank(A)+rank(DCA+B)

其中 A + A^+ A+ 是广义逆。特别地,对于分块对角矩阵:

rank ⁡ [ A 0 0 D ] = rank ⁡ ( A ) + rank ⁡ ( D ) \operatorname{rank} \begin{bmatrix} A & 0 \\ 0 & D \end{bmatrix} = \operatorname{rank}(A) + \operatorname{rank}(D) rank[A00D]=rank(A)+rank(D)


分块矩阵的求导

在矩阵微积分中,分块结构可用于处理复杂函数的梯度,在优化/机器学习中常用:

例如,若 x = [ x 1 x 2 ] x = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} x=[x1x2],则:

∂ ∂ x f ( x ) = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ] \frac{\partial}{\partial x} f(x) = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\[10pt] \frac{\partial f}{\partial x_2} \end{bmatrix} xf(x)= x1fx2f


分块矩阵的核心优势在于:

  • 简化大型矩阵的计算(如用Schur补求逆)
  • 揭示矩阵的内在结构(如分块对角表示)
  • 便于理论推导(如线性系统、卡尔曼滤波、机器学习中的矩阵求导)

总结

本文我们一起探讨矩阵的性质意义,从级数求和,向量变换,分块矩阵等,在深度学习理论中至关重要。

更多推荐