深度学习阶段总结(2)--矩阵

文章目录

前言

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


级数

给你一个级数表达式:

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

首先你会想到什么?

想到 头疼,头大,头爆炸

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

∑ 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=1∑naibi=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=1∑naibi=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= a1a2...an ,B= b1b2...bn

那么

∑ 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=1∑naibi=a1b1+a2b2+⋯+anbn=A⊤B=a1a2...an b1b2...bn

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

A ⊤ B = B ⊤ A A^\top B=B^\top A\\10pt A⊤B=B⊤A

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

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=∂wj∂E=(XW−Y)⊤ 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\\ ∂W∂E= d1d2...dn =d1d2...dn⊤= (XW−Y)⊤ x11x21...xm1 (XW−Y)⊤ x12x22...xm2 ...(XW−Y)⊤ 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,C∈Ra×b,W∈Rb×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 A⋅WB⋅WC⋅W = 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} W∈Rc×b,A,B,C∈Ra×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} \[W⋅AW⋅BW⋅C\]=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} W⋅AW⋅BW⋅C = W000W000W ABC =(I3⊗W) ABC

    但是, 当 W ⋅ A ∈ R 1 × 1 W\cdot A \in R^{1\times 1} W⋅A∈R1×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=W⋅A , b=W⋅B , c=W⋅C

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

    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= W⋅AW⋅BW⋅C = abc =abc⊤=W⋅AW⋅BW⋅C⊤=WABC


求平方和

用矩阵来求平方和形如:

A ⊤ A A^\top A A⊤A

拿向量来理解,还记得向量怎么相乘吗?假如 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= a1a2...an A⊤=a1a2...an

向量相乘:

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 A⊤A=i=1∑nai2=a12+a22+⋯+an2

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

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

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=21RSS=21i=1∑m(xiTW−yi)2=21(XW−Y)T(XW−Y)

其中

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=xiTW−yi=xi1w1+xi2w2+...+xinwn−yiE=21i=1∑mui2=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 A⋅X=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= a11a21...am1a12a22...am2............a1na2n...amn x1 = x11x21...xn1 ,x2 = x12x22...xn2 ,y1 = y11y21...yn1 ,y2 = y12y22...yn2 A⋅x1 =y1 A⋅x2 =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} A⋅x1 A⋅x2 =y1 y2 = y11y21...yn1y12y22...yn2

如果我把 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} A⋅x1 A⋅x2 = A⋅ x11x21...xn1 A⋅ x12x22...xn2 = a11a21...am1a12a22...am2............a1na2n...amn x11x12...xn1x12x22...xn2 = y11y21...yn1y12y22...yn2

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

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 x11x21...xm1x12x22xm2.........x1nx2nxmn w11w12...w1nw21w22w2n.........wc1wc2wcn = u11u21...um1u12u22um2.........u1cu2cumc

也就是将 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⋅ x11x21...xn1 A⋅ x12x22...xn2 = a11a21...am1a12a22...am2............a1na2n...amn x11x12...xn1x12x22...xn2

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

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} \[W⋅AW⋅BW⋅C\]=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} WABC=W⋅AW⋅BW⋅C


分块矩阵的加法

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

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= A110⋮00A22⋮0⋯⋯⋱⋯00⋮Akk

性质:

  • 行列式: 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} A−1= A11−10⋮00A22−1⋮0⋯⋯⋱⋯00⋮Akk−1
  • 特征值:所有子块特征值的并集

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

分块上三角矩阵

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} M−1=A−1+A−1BS−1CA−1−S−1CA−1−A−1BS−1S−1

其中 S = D − C A − 1 B S = D - C A^{-1} B S=D−CA−1B 称为 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} M−1=T−1−D−1CT−1−T−1BD−1D−1+D−1CT−1BD−1

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


分块矩阵的秩

对于分块矩阵:

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) rankACBD≥rank(A)+rank(D−CA+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) rankA00D=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} ∂x∂f(x)= ∂x1∂f∂x2∂f


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

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

总结

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

相关推荐
史上最甜的躯2 小时前
医疗影像分析与深度学习-导论
深度学习·医疗检测
手写码匠6 小时前
华为云Flexus+DeepSeek征文|Dify 多 Agent 灰度发布实战:让每一次变更都“小步快跑、随时可回滚“
人工智能·深度学习·算法·aigc
TonyLee0177 小时前
神经网络门控机制探讨
人工智能·深度学习·神经网络
JAI科研7 小时前
Deepseek Agent Harness教程(二) | DeepSeek Harness 设计思路
人工智能·深度学习·算法·机器学习·自然语言处理·transformer·vllm
还不秃顶的计科生7 小时前
具身智能论文学习10:π0: A Vision-Language-Action Flow Model for General Robot Control
人工智能·深度学习·算法·机器学习·语言模型·vla·vlm
Nil20820 小时前
leetcode 54螺旋矩阵
算法·leetcode·矩阵
段一凡-华北理工大学20 小时前
AI推动工业智能化转型~系列文章24:钢铁工业 AI 全景图:从原料场到轧机的场景地图
人工智能·深度学习·模型生命周期·钢铁工业·ai全景
chen_zn951 天前
《VLA 系列》Human-to-Robot Transfer | 人类视频共训练 | 跨本体涌现迁移 | 论文解析
人工智能·深度学习·transformer·具身智能·vla
CCC:CarCrazeCurator1 天前
DeepSeek‑Harness Windows 本地快速上手
深度学习·数据挖掘