目录
1. 基础概念和符号
线性代数为线性方程组提供了一种更加简单的表达方式和操作方式,比如考虑下面的方程组:
4
x
1
−
5
x
2
=
−
13
−
2
x
1
+
3
x
2
=
9
\begin{aligned} 4 x_{1}-5 x_{2} &=-13 \\-2 x_{1}+3 x_{2} &=9 \end{aligned}
4x1−5x2−2x1+3x2=−13=9
上面的线性方程组有两个变量,如果这两个线性方程组之间不存在线性关系,我们总能找到一个满足它的解,我们可以简单的将其写成:
A
x
=
b
A x=b
Ax=b
其中:
A
=
[
4
−
5
−
2
3
]
,
b
=
[
−
13
9
]
A=\left[ \begin{array}{cc}{4} & {-5} \\ {-2} & {3}\end{array}\right], \quad b=\left[ \begin{array}{c}{-13} \\ {9}\end{array}\right]
A=[4−2−53],b=[−139]
我们下面会讲到,这样表达线性方程组有很多好处。
1.1 基本符号
我们使用下面这些符号:
- A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n 表示一个行数为m,列数为n的矩阵,并且A中的元素都是实数;
- x ∈ R n x \in \mathbb{R}^{n} x∈Rn 表示一个有n个实体的向量,通常情况下,我们认为该表示代表着一个列向量,即行数为n列数为1,同时,我们将行向量表达为: x T x^{T} xT;
- 向量x的第i个元素表示为:
x
i
x_i
xi:
x = [ x 1 x 2 ⋮ x n ] x=\left[ \begin{array}{c}{x_{1}} \\ {x_{2}} \\ {\vdots} \\ {x_{n}}\end{array}\right] x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤ - 矩阵A的第i行、第j列的元素表示为:
A
i
j
A_{i j}
Aij:
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] A=\left[ \begin{array}{cccc}{a_{11}} & {a_{12}} & {\cdots} & {a_{1 n}} \\ {a_{21}} & {a_{22}} & {\cdots} & {a_{2 n}} \\ {\vdots} & {\vdots} & {\ddots} & {\vdots} \\ {a_{m 1}} & {a_{m 2}} & {\cdots} & {a_{m n}}\end{array}\right] A=⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2⋯⋯⋱⋯a1na2n⋮amn⎦⎥⎥⎥⎤ - 矩阵A的第j列表示为: a j a_{j} aj or A : , j A_{ :, j} A:,j:
- 矩阵A的第i行表示为: a i T a_{i}^{T} aiT or A i , : A_{i, :} Ai,:。
2. 矩阵乘法
两个矩阵
A
∈
R
m
×
n
A \in \mathbb{R}^{m \times n}
A∈Rm×n 、
B
∈
R
n
×
p
B \in \mathbb{R}^{n \times p}
B∈Rn×p的乘法表示为:
C
=
A
B
∈
R
m
×
p
C=A B \in \mathbb{R}^{m \times p}
C=AB∈Rm×p
其中:
C
i
j
=
∑
k
=
1
n
A
i
k
B
k
j
C_{i j}=\sum_{k=1}^{n} A_{i k} B_{k j}
Cij=k=1∑nAikBkj
矩阵的乘法可以分为多种,下面我们一一介绍。
2.1 向量-向量 乘积
给定两个向量:
x
,
y
∈
R
n
x, y \in \mathbb{R}^{n}
x,y∈Rn,我们定义
x
T
y
x^{T} y
xTy为两个向量的内积或者叫点积,如下所示:
x
T
y
∈
R
=
[
x
1
x
2
⋯
x
n
]
[
y
1
y
2
⋮
y
n
]
=
∑
i
=
1
n
x
i
y
i
x^{T} y \in \mathbb{R}=\left[ \begin{array}{llll}{x_{1}} & {x_{2}} & {\cdots} & {x_{n}}\end{array}\right] \left[ \begin{array}{c}{y_{1}} \\ {y_{2}} \\ {\vdots} \\ {y_{n}}\end{array}\right]=\sum_{i=1}^{n} x_{i} y_{i}
xTy∈R=[x1x2⋯xn]⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤=i=1∑nxiyi
内积实际上只是矩阵乘法的一个特例,我们可以简单的得到:
x
T
y
=
y
T
x
x^{T} y=y^{T} x
xTy=yTx。
同样的两个向量,我们把
x
y
T
∈
R
m
×
n
x y^{T} \in \mathbb{R}^{m \times n}
xyT∈Rm×n称为是外积,结果是一个矩阵:
x
y
T
∈
R
m
×
n
=
[
x
1
x
2
⋮
x
m
]
[
y
1
y
2
⋯
y
n
]
=
[
x
1
y
1
x
1
y
2
⋯
x
1
y
n
x
2
y
1
x
2
y
2
⋯
x
2
y
n
⋮
⋮
⋱
⋮
x
m
y
1
x
m
y
2
⋯
x
m
y
n
]
x y^{T} \in \mathbb{R}^{m \times n}=\left[ \begin{array}{c}{x_{1}} \\ {x_{2}} \\ {\vdots} \\ {x_{m}}\end{array}\right] \left[ \begin{array}{cccc}{y_{1}} & {y_{2}} & {\cdots} & {y_{n}}\end{array}\right]=\left[ \begin{array}{cccc}{x_{1} y_{1}} & {x_{1} y_{2}} & {\cdots} & {x_{1} y_{n}} \\ {x_{2} y_{1}} & {x_{2} y_{2}} & {\cdots} & {x_{2} y_{n}} \\ {\vdots} & {\vdots} & {\ddots} & {\vdots} \\ {x_{m} y_{1}} & {x_{m} y_{2}} & {\cdots} & {x_{m} y_{n}}\end{array}\right]
xyT∈Rm×n=⎣⎢⎢⎢⎡x1x2⋮xm⎦⎥⎥⎥⎤[y1y2⋯yn]=⎣⎢⎢⎢⎡x1y1x2y1⋮xmy1x1y2x2y2⋮xmy2⋯⋯⋱⋯x1ynx2yn⋮xmyn⎦⎥⎥⎥⎤
2.2 矩阵-向量 乘积
给定一个矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n和一个向量 x ∈ R n x \in \mathbb{R}^{n} x∈Rn,二者的乘积结果是一个向量: y = A x ∈ R m y=A x \in \mathbb{R}^{m} y=Ax∈Rm。我们可以从多个角度看待矩阵-向量乘积运算,下面一一介绍。
如果我们把矩阵A写成行向量的集合,我们可以把Ax表示成下面这种形式:
y
=
A
x
=
[
a
1
T
a
2
T
⋮
a
m
T
]
x
=
[
a
1
T
x
a
2
T
x
⋮
a
m
T
x
]
y = Ax = \left [ \begin{array}{c}{a_{1}^{T} } \\ {a_{2}^{T} } \\ {\vdots} \\ {a_{m}^{T} }\end{array}\right] x=\left[ \begin{array}{c}{a_{1}^{T} x} \\ {a_{2}^{T} x} \\ {\vdots} \\ {a_{m}^{T} x}\end{array}\right]
y=Ax=⎣⎢⎢⎢⎡a1Ta2T⋮amT⎦⎥⎥⎥⎤x=⎣⎢⎢⎢⎡a1Txa2Tx⋮amTx⎦⎥⎥⎥⎤
换句话说,结果向量y的第i个元素是矩阵A的第i行和向量x的内积。
同样的,我们还可以将矩阵A写成列向量的集合,那么结果就变成了:
y
=
A
x
=
[
a
1
a
2
…
a
m
]
[
x
1
x
2
⋮
x
n
]
=
[
a
1
]
x
1
+
[
a
2
]
x
2
+
⋯
+
[
a
n
]
x
n
y = Ax = \left [ \begin{array}{c}{a_{1} } {a_{2} } {\dots} {a_{m} }\end{array}\right] \left[ \begin{array}{c}{x_{1}} \\ {x_{2}} \\ {\vdots} \\ {x_{n}}\end{array}\right]= [a_1]x_1+[a_2]x_2+\dots+[a_n]x_n
y=Ax=[a1a2…am]⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤=[a1]x1+[a2]x2+⋯+[an]xn
换句话说,结果向量y是A的列向量的线性组合,系数就是向量x。
上面我们都是把向量x作为列项列写在矩阵的右边,我们还可以把向量X的转置写在矩阵的左边,同样满足矩阵乘法的要求:
y
T
=
x
T
A
=
x
T
[
a
1
a
2
…
a
n
]
=
[
x
T
a
1
x
T
a
2
⋯
x
T
a
n
]
y^{T}=x^{T} A=x^{T} [a_1\ a_2\ \dots \ a_n] =\left[ \begin{array}{llll}{x^{T} a_{1}} & {x^{T} a_{2}} & {\cdots} & {x^{T} a_{n}}\end{array}\right]
yT=xTA=xT[a1 a2 … an]=[xTa1xTa2⋯xTan]
上式表明,结果向量y的元素是向量x和矩阵A的列向量的内积。
最后,把A表示成行向量的集合,表示如下:
y
T
=
x
T
A
=
[
x
1
x
2
⋯
x
n
]
[
a
1
T
a
2
T
⋮
a
m
T
]
=
x
1
[
a
1
T
]
+
x
2
[
a
2
T
]
+
⋯
+
x
n
[
a
n
T
]
+
\begin{aligned} y^{T} &=x^{T} A \\ &=\left [ \begin{array}{cccc}{x_{1}} & {x_{2}} & {\cdots} & {x_{n}}\end{array}\right] \left [ \begin{array}{c}{a_{1}^{T} } \\ {a_{2}^{T} }\\ {\vdots} \\ {a_{m}^{T} }\end{array}\right] \\ &=x_{1}\left[a_{1}^{T}\right]+x_{2}\left[a_{2}^{T}\right]+ \dots + x_{n}\left[a_{n}^{T}\right]+\end{aligned}
yT=xTA=[x1x2⋯xn]⎣⎢⎢⎢⎡a1Ta2T⋮amT⎦⎥⎥⎥⎤=x1[a1T]+x2[a2T]+⋯+xn[anT]+
我们可以看到
y
T
y^T
yT是矩阵A的列向量的线性组合,系数是x。
2.3 矩阵-矩阵 乘积
首先,我们可以将矩阵-矩阵的乘积看成一组向量之间的乘积,像下面这样:
C
=
A
B
=
[
a
1
T
a
2
T
⋮
a
m
T
]
[
b
1
b
2
⋯
b
p
]
=
[
a
1
T
b
1
a
1
T
b
2
⋯
a
1
T
b
p
a
2
T
b
1
a
2
T
b
2
⋯
a
2
T
b
p
⋮
⋮
⋱
⋮
a
m
T
b
1
a
m
T
b
2
⋯
a
m
T
b
p
]
C=A B=\left[ \begin{array}{c}{a_{1}^{T}} \\ {a_{2}^{T}} \\ {\vdots} \\ {a_{m}^{T}}\end{array}\right] \left[ \begin{array}{cccc}{b_{1}} & {b_{2}} & {\cdots} & {b_{p}}\end{array}\right]=\left[ \begin{array}{cccc}{a_{1}^{T} b_{1}} & {a_{1}^{T} b_{2}} & {\cdots} & {a_{1}^{T} b_{p}} \\ {a_{2}^{T} b_{1}} & {a_{2}^{T} b_{2}} & {\cdots} & {a_{2}^{T} b_{p}} \\ {\vdots} & {\vdots} & {\ddots} & {\vdots} \\ {a_{m}^{T} b_{1}} & {a_{m}^{T} b_{2}} & {\cdots} & {a_{m}^{T} b_{p}}\end{array}\right]
C=AB=⎣⎢⎢⎢⎡a1Ta2T⋮amT⎦⎥⎥⎥⎤[b1b2⋯bp]=⎣⎢⎢⎢⎡a1Tb1a2Tb1⋮amTb1a1Tb2a2Tb2⋮amTb2⋯⋯⋱⋯a1Tbpa2Tbp⋮amTbp⎦⎥⎥⎥⎤
这是表达矩阵乘法最自然的一种方式,除此之外,我们还可以把A矩阵表示成列向量的组合,而B矩阵表示成行向量的组合:
C = A B = [ a 1 a 2 … a n ] [ b 1 T b 2 T ⋮ b m T ] = ∑ i = 1 n a i b i T C=A B=\left[ \begin{array}{cccc}{a_{1}} & {a_{2}} & {\dots} & {a_{n}}\end{array}\right] \left[ \begin{array}{c}{b_{1}^{T}} \\ {b_{2}^{T}} \\ {\vdots} \\ {b_{m}^{T}}\end{array}\right]=\sum_{i=1}^{n} a_{i} b_{i}^{T} C=AB=[a1a2…an]⎣⎢⎢⎢⎡b1Tb2T⋮bmT⎦⎥⎥⎥⎤=i=1∑naibiT
我们还可以将矩阵-矩阵乘法表示成一组矩阵-向量乘法:
C
=
A
B
=
A
[
b
1
T
b
2
T
⋮
b
p
T
]
=
[
A
b
1
T
A
b
2
T
⋮
A
b
p
T
]
C=A B=A \left[ \begin{array}{c}{b_{1}^{T}} \\ {b_{2}^{T}} \\ {\vdots} \\ {b_{p}^{T}}\end{array}\right]=\left[ \begin{array}{c}{A b_{1}^{T}} \\ {A b_{2}^{T}} \\ {\vdots} \\ {A b_{p}^{T}}\end{array}\right]
C=AB=A⎣⎢⎢⎢⎡b1Tb2T⋮bpT⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡Ab1TAb2T⋮AbpT⎦⎥⎥⎥⎤
为了简化矩阵的乘法,了解一些矩阵乘法的规则是有必要的:
- ( A B ) C = A ( B C ) (A B) C=A(B C) (AB)C=A(BC)
- A ( B + C ) = A B + A C A(B+C)=A B+A C A(B+C)=AB+AC
3 操作和性质
3.1 单位阵和对角阵
单位阵,表示为
I
∈
R
n
×
n
I \in \mathbb{R}^{n \times n}
I∈Rn×n,是一个对角线上全是1,其余位置全是0的方阵:
I
i
j
=
{
1
i
=
j
0
i
≠
j
I_{i j}=\left\{\begin{array}{ll}{1} & {i=j} \\ {0} & {i \neq j}\end{array}\right.
Iij={10i=ji̸=j
它有如下性质:
A
I
=
A
=
I
A
A I=A=I A
AI=A=IA
对角阵是指非对角线元素都是0的矩阵:
D
i
j
=
{
d
i
i
=
j
0
i
≠
j
D_{i j}=\left\{\begin{array}{ll}{d_{i}} & {i=j} \\ {0} & {i \neq j}\end{array}\right.
Dij={di0i=ji̸=j
3.2 转置
矩阵A的转置表示成:
A
T
A^T
AT,如下所示:
(
A
T
)
i
j
=
A
j
i
\left(A^{T}\right)_{i j}=A_{j i}
(AT)ij=Aji
转置有以下性质:
(
A
T
)
T
=
A
(
A
B
)
T
=
B
T
A
T
(
A
+
B
)
T
=
A
T
+
B
T
\begin{array}{l}{\left(A^{T}\right)^{T}=A} \\ {(A B)^{T}=B^{T} A^{T}} \\ {(A+B)^{T}=A^{T}+B^{T}}\end{array}
(AT)T=A(AB)T=BTAT(A+B)T=AT+BT
3.3 对称阵
一个矩阵 A ∈ R n × n A \in \mathbb{R}^{n \times n} A∈Rn×n是对称阵,当且仅当 A T = A A^T=A AT=A,当 A T = − A A^T=-A AT=−A时,称为反对称阵。对称阵满足如下性质:
A = 1 2 ( A + A T ) + 1 2 ( A − A T ) A=\frac{1}{2}\left(A+A^{T}\right)+\frac{1}{2}\left(A-A^{T}\right) A=21(A+AT)+21(A−AT)
3.4 矩阵的迹
矩阵的迹是指矩阵的对角线元素之和,表示如下:
tr
A
=
∑
i
=
1
n
A
i
i
\operatorname{tr} A=\sum_{i=1}^{n} A_{i i}
trA=i=1∑nAii
矩阵的迹有以下性质:
For
A
∈
R
n
×
n
,
tr
A
=
tr
A
T
For
A
,
B
∈
R
n
×
n
,
tr
(
A
+
B
)
=
tr
A
+
tr
B
For
A
∈
R
n
×
n
,
t
∈
R
,
tr
(
t
A
)
=
t
tr
A
For
A
,
B
such that
A
B
is square, trAB
=
tr
B
A
.
For
A
,
B
,
C
such that
A
B
C
is square,
tr
A
B
C
=
tr
B
C
A
=
tr
C
A
B
\begin{array}{l}{\text { For } A \in \mathbb{R}^{n \times n}, \operatorname{tr} A=\operatorname{tr} A^{T}} \\ {\text { For } A, B \in \mathbb{R}^{n \times n}, \operatorname{tr}(A+B)=\operatorname{tr} A+\operatorname{tr} B} \\ {\text { For } A \in \mathbb{R}^{n \times n}, t \in \mathbb{R}, \operatorname{tr}(t A)=t \operatorname{tr} A} \\ {\text { For } A, B \text { such that } A B \text { is square, trAB }=\operatorname{tr} B A \text { . }} \\ {\text { For } A, B, C \text { such that } A B C \text { is square, } \operatorname{tr} A B C=\operatorname{tr} B C A=\operatorname{tr} C A B}\end{array}
For A∈Rn×n,trA=trAT For A,B∈Rn×n,tr(A+B)=trA+trB For A∈Rn×n,t∈R,tr(tA)=ttrA For A,B such that AB is square, trAB =trBA . For A,B,C such that ABC is square, trABC=trBCA=trCAB
3.5 矩阵范式
矩阵的范式是一种对矩阵“长度”的度量,比如,我们可以用常用的
l
2
l_2
l2范式即欧几里得局里来度量矩阵长度:
∥
x
∥
2
=
∑
i
=
1
n
x
i
2
\|x\|_{2}=\sqrt{\sum_{i=1}^{n} x_{i}^{2}}
∥x∥2=i=1∑nxi2
更一般的,范式是任何满足以下条件的方程
f
:
R
n
→
R
f : \mathbb{R}^{n} \rightarrow \mathbb{R}
f:Rn→R:
1. For all
x
∈
R
n
,
f
(
x
)
≥
0
(non-negativity)
2.
f
(
x
)
=
0
if and only if
x
=
0
(definiteness).
3. For all
x
∈
R
n
,
t
∈
R
,
f
(
t
x
)
=
∣
t
∣
f
(
x
)
(homogeneity)
4. For all
x
,
y
∈
R
n
,
f
(
x
+
y
)
≤
f
(
x
)
+
f
(
y
)
(triangle inequality)
\begin{array}{l}{\text { 1. For all } x \in \mathbb{R}^{n}, f(x) \geq 0 \text { (non-negativity) }} \\ {\text { 2. } f(x)=0 \text { if and only if } x=0 \text { (definiteness). }} \\ {\text { 3. For all } x \in \mathbb{R}^{n}, t \in \mathbb{R}, f(t x)=|t| f(x) \text { (homogeneity) }} \\ {\text { 4. For all } x, y \in \mathbb{R}^{n}, f(x+y) \leq f(x)+f(y) \text { (triangle inequality) }}\end{array}
1. For all x∈Rn,f(x)≥0 (non-negativity) 2. f(x)=0 if and only if x=0 (definiteness). 3. For all x∈Rn,t∈R,f(tx)=∣t∣f(x) (homogeneity) 4. For all x,y∈Rn,f(x+y)≤f(x)+f(y) (triangle inequality)
一些常用范式如下:
∥
x
∥
1
=
∑
i
=
1
n
∣
x
i
∣
\|x\|_{1}=\sum_{i=1}^{n}\left|x_{i}\right|
∥x∥1=i=1∑n∣xi∣
∥
x
∥
∞
=
max
i
∣
x
i
∣
\|x\|_{\infty}=\max _{i}\left|x_{i}\right|
∥x∥∞=imax∣xi∣
3.6 线性无关和矩阵的秩
当一组向量中的任何一个向量都不可以被其他向量的线性组合所表示的时候,称这一组向量是线性无关的,相对的,如果有任何一个向量可以被其他向量的线性组合所表示,那么这一组向量是线性相关的。
矩阵的列秩是矩阵
A
∈
R
m
×
n
A \in \mathbb{R}^{m \times n}
A∈Rm×n的最大列向量线性无关组集合的大小,同样的,矩阵的行秩是矩阵A的最大行向量线性无关组的大小。对于任意矩阵
A
∈
R
m
×
n
A \in \mathbb{R}^{m \times n}
A∈Rm×n,结果表明A的行秩和列秩都是相等的,因此我们直接将其都成为矩阵的秩:rank(A),下面是矩阵的秩的基本性质:
∙
For
A
∈
R
m
×
n
,
rank
(
A
)
≤
min
(
m
,
n
)
.
If
rank
(
A
)
=
min
(
m
,
n
)
,
then
A
is said to be
full rank.
∙
For
A
∈
R
m
×
n
,
rank
(
A
)
=
rank
(
A
T
)
∙
For
A
∈
R
m
×
n
,
B
∈
R
n
×
p
,
rank
(
A
B
)
≤
min
(
rank
(
A
)
,
rank
(
B
)
)
∙
For
A
,
B
∈
R
m
×
n
,
rank
(
A
+
B
)
≤
rank
(
A
)
+
rank
(
B
)
\begin{array}{l}{\bullet \text { For } A \in \mathbb{R}^{m \times n}, \operatorname{rank}(A) \leq \min (m, n) . \text { If } \operatorname{rank}(A)=\min (m, n), \text { then } A \text { is said to be }} \\ {\text { full rank.}} \\ {\bullet \text { For } A \in \mathbb{R}^{m \times n}, \operatorname{rank}(A)=\operatorname{rank}\left(A^{T}\right)} \\ {\bullet \text { For } A \in \mathbb{R}^{m \times n}, B \in \mathbb{R}^{n \times p}, \operatorname{rank}(A B) \leq \min (\operatorname{rank}(A), \operatorname{rank}(B))} \\ {\bullet \text { For } A, B \in \mathbb{R}^{m \times n}, \operatorname{rank}(A+B) \leq \operatorname{rank}(A)+\operatorname{rank}(B)}\end{array}
∙ For A∈Rm×n,rank(A)≤min(m,n). If rank(A)=min(m,n), then A is said to be full rank.∙ For A∈Rm×n,rank(A)=rank(AT)∙ For A∈Rm×n,B∈Rn×p,rank(AB)≤min(rank(A),rank(B))∙ For A,B∈Rm×n,rank(A+B)≤rank(A)+rank(B)
3.7 矩阵的逆
矩阵
A
∈
R
n
×
n
A \in \mathbb{R}^{n \times n}
A∈Rn×n的逆表示成
A
−
1
A^{-1}
A−1,满足:
A
−
1
A
=
I
=
A
A
−
1
A^{-1} A=I=A A^{-1}
A−1A=I=AA−1
并不是所有矩阵都存在逆,非方阵不存在逆矩阵,对于一些方阵,也有可能不存在逆矩阵,如果一个矩阵存在逆矩阵,我们称其为可逆矩阵,或者非奇异矩阵,反之则为不可逆矩阵或者奇异矩阵。
为了使矩阵A可逆,首先其必须是满秩的,后面我们互介绍一些其他的使得矩阵A可逆的充分和必要条件。
可逆矩阵的一下性质如下:
∙
(
A
−
1
)
−
1
=
A
∙
(
A
B
)
−
1
=
B
−
1
A
−
1
∙
(
A
−
1
)
T
=
(
A
T
)
−
1
.
For this reason this matrix is often denoted
A
−
T
.
\begin{aligned} \bullet\left(A^{-1}\right)^{-1} &=A \\ \bullet(A B)^{-1} &=B^{-1} A^{-1} \\ \bullet &\left(A^{-1}\right)^{T}=\left(A^{T}\right)^{-1} . \text { For this reason this matrix is often denoted } A^{-T} \text { . } \end{aligned}
∙(A−1)−1∙(AB)−1∙=A=B−1A−1(A−1)T=(AT)−1. For this reason this matrix is often denoted A−T .
3.8 正交阵
如果两个向量的内积为0,我们称两个向量是正交的;如果一个向量的2范式为1,称其为标准向量。如果一个矩阵的所有列向量两两之间都是正交的,我们称这个矩阵是正交阵,满足:
U
T
U
=
I
=
U
U
T
U^{T} U=I=U U^{T}
UTU=I=UUT
换句话说,正交阵的逆矩阵是其转置矩阵,特别的,当矩阵U不是方阵的时候,其列向量两两之间也有可能是正交的,但是这里我们不认为其是正交阵。
3.9 矩阵的列空间和零空间
一组向量的列空间是指可以用这一组向量的线性组合所表示的所有向量的集合:
span
(
{
x
1
,
…
x
n
}
)
=
{
v
:
v
=
∑
i
=
1
n
α
i
x
i
,
α
i
∈
R
}
\operatorname{span}\left(\left\{x_{1}, \ldots x_{n}\right\}\right)=\left\{v : v=\sum_{i=1}^{n} \alpha_{i} x_{i}, \quad \alpha_{i} \in \mathbb{R}\right\}
span({x1,…xn})={v:v=i=1∑nαixi,αi∈R}
其中
x
i
∈
R
n
x_{i} \in \mathbb{R}^{n}
xi∈Rn。向量
y
∈
R
m
y \in \mathbb{R}^{m}
y∈Rm向空间
span
(
{
x
1
,
…
x
n
}
)
=
R
n
\operatorname{span}\left(\left\{x_{1}, \dots x_{n}\right\}\right)=\mathbb{R}^{n}
span({x1,…xn})=Rn的投影向量
v
∈
span
(
{
x
1
,
…
x
n
}
)
v \in \operatorname{span}\left(\left\{x_{1}, \ldots x_{n}\right\}\right)
v∈span({x1,…xn})满足:
Proj
(
y
;
{
x
1
,
…
x
n
}
)
=
argmin
v
∈
span
(
{
x
1
,
…
,
x
n
}
)
∥
y
−
v
∥
2
\operatorname{Proj}\left(y ;\left\{x_{1}, \ldots x_{n}\right\}\right)=\operatorname{argmin}_{v \in \operatorname{span}\left(\left\{x_{1}, \ldots, x_{n}\right\}\right)}\|y-v\|_{2}
Proj(y;{x1,…xn})=argminv∈span({x1,…,xn})∥y−v∥2
即y的投影向量就是列空间中与y距离最小的向量。
矩阵A所表示的列空间
R
(
A
)
\mathcal{R}(A)
R(A),是矩阵A的列向量所张成的空间:
R
(
A
)
=
{
v
∈
R
m
:
v
=
A
x
,
x
∈
R
n
}
\mathcal{R}(A)=\left\{v \in \mathbb{R}^{m} : v=A x, x \in \mathbb{R}^{n}\right\}
R(A)={v∈Rm:v=Ax,x∈Rn}
其中A的列向量必须是线性无关的,即A是满秩的,且
n
<
m
n< m
n<m,向量
y
∈
R
m
y \in \mathbb{R}^{m}
y∈Rm向A的列空间的投影可以写成下面的形式:
Proj
(
y
;
A
)
=
argmin
v
∈
R
(
A
)
∥
v
−
y
∥
2
=
A
(
A
T
A
)
−
1
A
T
y
\operatorname{Proj}(y ; A)=\operatorname{argmin}_{v \in \mathcal{R}(A)}\|v-y\|_{2}=A\left(A^{T} A\right)^{-1} A^{T} y
Proj(y;A)=argminv∈R(A)∥v−y∥2=A(ATA)−1ATy
上面的式子我们应该很熟悉,因为它就是最小二乘法的解析解,我们接下来会更详细的讲这个问题。
矩阵A的零空间是指所有与A相乘得0的向量,即线性方程组所有的解:
N
(
A
)
=
{
x
∈
R
n
:
A
x
=
0
}
\mathcal{N}(A)=\left\{x \in \mathbb{R}^{n} : A x=0\right\}
N(A)={x∈Rn:Ax=0}
我们可以看到
R
(
A
)
\mathcal{R}(A)
R(A)中的向量大小是m,
N
(
A
)
\mathcal{N}(A)
N(A)中的向量大小是n,所以
R
(
A
T
)
\mathcal{R}(A^T)
R(AT)中的向量大小是n,实际上我们可以得到:
{
w
:
w
=
u
+
v
,
u
∈
R
(
A
T
)
,
v
∈
N
(
A
)
}
=
R
n
and
R
(
A
T
)
∩
N
(
A
)
=
{
0
}
\left\{w : w=u+v, u \in \mathcal{R}\left(A^{T}\right), v \in \mathcal{N}(A)\right\}=\mathbb{R}^{n} \text { and } \mathcal{R}\left(A^{T}\right) \cap \mathcal{N}(A)=\{\mathbf{0}\}
{w:w=u+v,u∈R(AT),v∈N(A)}=Rn and R(AT)∩N(A)={0}
换句话说
R
(
A
T
)
\mathcal{R}\left(A^{T}\right)
R(AT) 和
N
(
A
)
\mathcal{N}(A)
N(A)是两个互不相交的向量集合,并且两者的并集组成了整个
R
n
\mathbb{R}^{n}
Rn。
3.10 行列式
矩阵 A ∈ R n × n A \in \mathbb{R}^{n \times n} A∈Rn×n的行列式是一个函数映射: R n × n → R \mathbb{R}^{n \times n} \rightarrow \mathbb{R} Rn×n→R,表示为 ∣ A ∣ |A| ∣A∣ 或者 det A A A,虽然我们可以直接写出计算行列式的公式,但是那并没有什么直观的含义,因此我们从行列的集合含义说起。
给定一个矩阵A:
[
a
1
T
a
2
T
⋮
a
n
T
]
\left[\begin{array}{c}{a_{1}^{T}} \\ {a_{2}^{T}} \\ {\vdots} \\ {a_{n}^{T}}\end{array}\right]
⎣⎢⎢⎢⎡a1Ta2T⋮anT⎦⎥⎥⎥⎤
a
1
,
…
,
a
n
∈
R
n
a_{1}, \dots, a_{n} \in \mathbb{R}^{n}
a1,…,an∈Rn,S是矩阵的行空间中一个子集,满足:
S = { v ∈ R n : v = ∑ i = 1 n α i a i w h e r e 0 ≤ α i ≤ 1 , i = 1 , … , n } S=\left\{v \in \mathbb{R}^{n} : v=\sum_{i=1}^{n} \alpha_{i} a_{i}\ where \ 0 \leq \alpha_{i} \leq 1, i=1, \ldots, n\right\} S={v∈Rn:v=i=1∑nαiai where 0≤αi≤1,i=1,…,n}
矩阵A的行列式的绝对值就是S所组成的平面的面积(2维),或者体积(3维)。举个例子,A是一个2*2的矩阵,如下:
A
=
[
1
3
3
2
]
A=\left[ \begin{array}{ll}{1} & {3} \\ {3} & {2}\end{array}\right]
A=[1332]
行向量分别是:
a
1
=
[
1
3
]
a
2
=
[
3
2
]
a_{1}=\left[ \begin{array}{l}{1} \\ {3}\end{array}\right] \quad a_{2}=\left[ \begin{array}{l}{3} \\ {2}\end{array}\right]
a1=[13]a2=[32]
那么S所表示的是一个平行四边形,如下图所示:

因此矩阵A的行列式的绝对值就是7,我们可以手动验证一下。
矩阵的行列式满足下面三个性质:
- 单位阵的行列式是1;
- 如果对A矩阵的一行乘以一个系数t,那么其行列式变成 t d e t ( A ) t det(A) tdet(A);
- 交换矩阵A的任意两行的位置,行列式取相反数。
其他的几个基于上面三个性质的性质如下:
- For A ∈ R n × n , ∣ A ∣ = ∣ A T ∣ A \in \mathbb{R}^{n \times n},|A|=\left|A^{T}\right| A∈Rn×n,∣A∣=∣∣AT∣∣
- For A , B ∈ R n × n , ∣ A B ∣ = ∣ A ∣ ∣ B ∣ A, B \in \mathbb{R}^{n \times n},|A B|=|A||B| A,B∈Rn×n,∣AB∣=∣A∣∣B∣
- For A ∈ R n × n , ∣ A ∣ = 0 A \in \mathbb{R}^{n \times n},|A|=0 A∈Rn×n,∣A∣=0,当且仅当A是奇异矩阵
- For A ∈ R n × n A \in \mathbb{R}^{n \times n} A∈Rn×n and A A A non-singular, ∣ A − 1 ∣ = 1 / ∣ A ∣ \left|A^{-1}\right|=1 /|A| ∣∣A−1∣∣=1/∣A∣
在给出行列式的一般定义之前,我们首先定义,对于
A
∈
R
n
×
n
,
A
\
i
,
\
j
∈
R
(
n
−
1
)
×
(
n
−
1
)
A \in \mathbb{R}^{n \times n}, A_{\backslash i, \backslash j} \in \mathbb{R}(n-1) \times(n-1)
A∈Rn×n,A\i,\j∈R(n−1)×(n−1)表示去掉矩阵A的第i行和第j列,矩阵A的行列式可以写成下面这样:
∣
A
∣
=
∑
i
=
1
n
(
−
1
)
i
+
j
a
i
j
∣
A
\
i
,
\
j
∣
(
for any
j
∈
1
,
…
,
n
)
=
∑
j
=
1
n
(
−
1
)
i
+
j
a
i
j
∣
A
\
i
,
\
j
∣
(for any
i
∈
1
,
…
,
n
)
\begin{aligned}|A| &=\sum_{i=1}^{n}(-1)^{i+j} a_{i j}\left|A_{\backslash i, \backslash j}\right| \quad(\text { for any } j \in 1, \ldots, n) \\ &=\sum_{j=1}^{n}(-1)^{i+j} a_{i j}\left|A_{\backslash i, \backslash j}\right| \quad \text { (for any } i \in 1, \ldots, n ) \end{aligned}
∣A∣=i=1∑n(−1)i+jaij∣∣A\i,\j∣∣( for any j∈1,…,n)=j=1∑n(−1)i+jaij∣∣A\i,\j∣∣ (for any i∈1,…,n)
从1维到3维矩阵按照上面的式子进行计算、拆分之后得到:
∣
[
a
11
]
∣
=
a
11
\left|\left[a_{11}\right]\right|=a_{11}
∣[a11]∣=a11
∣ [ a 11 a 12 a 21 a 22 ] ∣ = a 11 a 22 − a 12 a 21 | \left[ \begin{array}{cc}{a_{11}} & {a_{12}} \\ {a_{21}} & {a_{22}}\end{array}\right] |=a_{11} a_{22}-a_{12} a_{21} ∣[a11a21a12a22]∣=a11a22−a12a21
∣ [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] ∣ = a 11 a 22 a 33 + a 12 a 23 a 31 + a 13 a 21 a 32 − a 11 a 23 a 32 − a 12 a 21 a 33 − a 13 a 22 a 31 \left | \left[ \begin{array}{lll}{a_{11}} & {a_{12}} & {a_{13}} \\ {a_{21}} & {a_{22}} & {a_{23}} \\ {a_{31}} & {a_{32}} & {a_{33}}\end{array}\right] \right| = a_{11} a_{22} a_{33}+a_{12} a_{23} a_{31}+a_{13} a_{21} a_{32}-a_{11} a_{23} a_{32}-a_{12} a_{21} a_{33}-a_{13} a_{22} a_{31} ∣∣∣∣∣∣⎣⎡a11a21a31a12a22a32a13a23a33⎦⎤∣∣∣∣∣∣=a11a22a33+a12a23a31+a13a21a32−a11a23a32−a12a21a33−a13a22a31
矩阵A的伴随矩阵定义如下:
adj
(
A
)
∈
R
n
×
n
,
(
adj
(
A
)
)
i
j
=
(
−
1
)
i
+
j
∣
A
\
j
,
i
∣
\operatorname{adj}(A) \in \mathbb{R}^{n \times n}, \quad(\operatorname{adj}(A))_{i j}=(-1)^{i+j}\left|A_{\backslash j, i}\right|
adj(A)∈Rn×n,(adj(A))ij=(−1)i+j∣∣A\j,i∣∣
从上式我们可以得到:
A
−
1
=
1
∣
A
∣
adj
(
A
)
A^{-1}=\frac{1}{|A|} \operatorname{adj}(A)
A−1=∣A∣1adj(A)
3.11 二次型和半正定矩阵
给定一个矩阵
A
∈
R
n
×
n
A \in \mathbb{R}^{n \times n}
A∈Rn×n和一个向量
x
∈
R
n
x \in \mathbb{R}^{n}
x∈Rn,标量
x
T
A
x
x^{T} A x
xTAx被称为一个二次型,如下:
x
T
A
x
=
∑
i
=
1
n
x
i
(
A
x
)
i
=
∑
i
=
1
n
x
i
(
∑
j
=
1
n
A
i
j
x
j
)
=
∑
i
=
1
n
∑
j
=
1
n
A
i
j
x
i
x
j
x^{T} A x=\sum_{i=1}^{n} x_{i}(A x)_{i}=\sum_{i=1}^{n} x_{i}\left(\sum_{j=1}^{n} A_{i j} x_{j}\right)=\sum_{i=1}^{n} \sum_{j=1}^{n} A_{i j} x_{i} x_{j}
xTAx=i=1∑nxi(Ax)i=i=1∑nxi(j=1∑nAijxj)=i=1∑nj=1∑nAijxixj
并且满足:
x
T
A
x
=
(
x
T
A
x
)
T
=
x
T
A
T
x
=
x
T
(
1
2
A
+
1
2
A
T
)
x
x^{T} A x=\left(x^{T} A x\right)^{T}=x^{T} A^{T} x=x^{T}\left(\frac{1}{2} A+\frac{1}{2} A^{T}\right) x
xTAx=(xTAx)T=xTATx=xT(21A+21AT)x
我们有如下定义:
- 一个对称矩阵 A ∈ S n A \in \mathbb{S}^{n} A∈Sn是正定矩阵,如果对于所有非零向量 x ∈ R n , x T A x > 0 x \in \mathbb{R}^{n}, x^{T} A x>0 x∈Rn,xTAx>0。
- 一个对称矩阵 A ∈ S n A \in \mathbb{S}^{n} A∈Sn是半正定矩阵,如果对于所有非零向量 x ∈ R n , x T A x 0 ≥ 0 x \in \mathbb{R}^{n}, x^{T} A x0\geq 0 x∈Rn,xTAx0≥0。
- 同样的,一个对称矩阵 A ∈ S n A \in \mathbb{S}^{n} A∈Sn是负定矩阵,如果对于所有非零向量 x ∈ R n , x T A x < 0 x \in \mathbb{R}^{n}, x^{T} A x<0 x∈Rn,xTAx<0。
- 一个对称矩阵 A ∈ S n A \in \mathbb{S}^{n} A∈Sn是半负定矩阵,如果对于所有非零向量 x ∈ R n , x T A x 0 ≤ 0 x \in \mathbb{R}^{n}, x^{T} A x0\leq 0 x∈Rn,xTAx0≤0。
- 最后,一个矩阵是不确定,当既存在非零向量 x 1 x_1 x1满足: x 1 T A x 1 > 0 x_{1}^{T} A x_{1}>0 x1TAx1>0,又存在非零向量 x 2 x_2 x2,满足: x 2 T A x 2 < 0 x_{2}^{T} A x_{2}<0 x2TAx2<0。
和显然,如果A是正定矩阵,那么-A是负定矩阵,反之亦然。正定矩阵和负定矩阵的一个很重要的性质是它们都是满秩的,并且可逆。简单证明一下,如果A不是满秩矩阵,那么意味着有一个向量可以被其他向量线性表示,如下:
a
j
=
∑
i
≠
j
x
i
a
i
a_{j}=\sum_{i \neq j} x_{i} a_{i}
aj=i̸=j∑xiai
对于向量x,
x
1
,
…
,
x
j
−
1
,
x
j
+
1
,
…
,
x
n
∈
R
x_{1}, \dots, x_{j-1}, x_{j+1}, \dots, x_{n} \in \mathbb{R}
x1,…,xj−1,xj+1,…,xn∈R,分别对应上面的系数
x
i
x_i
xi, 我们设置
x
j
=
−
1
x_j=-1
xj=−1,那么就有:
A
x
=
∑
i
=
1
n
x
i
a
i
=
0
A x=\sum_{i=1}^{n} x_{i} a_{i}=0
Ax=i=1∑nxiai=0
但是这就以为这存在非0向量x满足$ x^{T} A x0=0$,所以A既不是正定矩阵也不是负定矩阵。
3.12 特征值和特征向量
给定矩阵 A ∈ R n × n A \in \mathbb{R}^{n \times n} A∈Rn×n,如果满足 A x = λ x , x ≠ 0 A x=\lambda x, \quad x \neq 0 Ax=λx,x̸=0,我们说 λ ∈ C \lambda \in \mathbb{C} λ∈C是矩阵A的一个特征值, x ∈ C n x \in \mathbb{C}^{n} x∈Cn是对应的一个特征向量。直观的看,就是一个向量左乘矩阵A,得到的向量和原向量方向一致,但是长度被 λ \lambda λ缩放了。如果x是特征向量,我们可以证明cx也是特征向量,因为在这里我们默认所有的特征向量的长度都是1。
我们可以将上面的式子重写成下面这样:
(
λ
I
−
A
)
x
=
0
,
x
≠
0
(\lambda I-A) x=0, \quad x \neq 0
(λI−A)x=0,x̸=0
(
λ
I
−
A
)
x
=
0
(\lambda I-A) x=0
(λI−A)x=0有解,当且仅当
(
λ
I
−
A
)
(\lambda I-A)
(λI−A)有一个非空的零空间时有解,即
(
λ
I
−
A
)
(\lambda I-A)
(λI−A)的行列式为0:
∣
(
λ
I
−
A
)
∣
=
0
|(\lambda I-A)|=0
∣(λI−A)∣=0
那么接下来我们就可以使用上面提到的计算行列式的方法对上式进行展开计算得到我们想要的特征值和特征向量。
下面是特征值和特征向量的一些性质:
-
矩阵的迹等于特征值的和:
tr A = ∑ i = 1 n λ i \operatorname{tr} A=\sum_{i=1}^{n} \lambda_{i} trA=i=1∑nλi -
矩阵的行列式等于特征值的乘积:
∣ A ∣ = ∏ i = 1 n λ i |A|=\prod_{i=1}^{n} \lambda_{i} ∣A∣=i=1∏nλi -
矩阵A的秩等于非0特征值的个数
-
如果A是非奇异矩阵,1 / λ i / \lambda_{i} /λi 是矩阵 A − 1 A^{-1} A−1的一个特征值
-
对角矩阵的特征值就是其对角线上的值
3.13 对称阵的特征值和特征向量
对称矩阵的特征值和特征向量有两个特性:首先,其所有的特征值都是实数;其次,其所有的特征向量都是正交的。因此我们可以把矩阵A写成: A = U Λ U T A=U \Lambda U^{T} A=UΛUT,其中U就是特征向量组成的矩阵,并且是一个正交阵,我们上面说过正交阵的转置和逆矩阵是相等的。
有了上面的式子,我们可以将二次型重写如下:
x
T
A
x
=
x
T
U
Λ
U
T
x
=
y
T
Λ
y
=
∑
i
=
1
n
λ
i
y
i
2
x^{T} A x=x^{T} U \Lambda U^{T} x=y^{T} \Lambda y=\sum_{i=1}^{n} \lambda_{i} y_{i}^{2}
xTAx=xTUΛUTx=yTΛy=i=1∑nλiyi2
可以看到,结果的正负只和特征值的正负有关,如果所有的特征值都大于0,那么结果就大于0,也就是说A是正定矩阵,同理我们可以得到负定矩阵、半正定矩阵、半负定矩阵的新的定义。
4 矩阵计算
4.1 梯度
假设有一个函数
f
:
R
m
×
n
→
R
f : \mathbb{R}^{m \times n} \rightarrow \mathbb{R}
f:Rm×n→R,输入是一个大小为m*m的矩阵,输出是一个实数,那么函数f对A求导的结果是:
∇
A
f
(
A
)
∈
R
m
×
n
=
[
∂
f
(
A
)
∂
A
11
∂
f
(
A
)
∂
A
12
⋯
∂
f
(
A
)
∂
A
1
∂
f
(
A
)
∂
A
21
∂
f
(
A
)
∂
A
22
⋯
∂
f
(
A
)
∂
A
2
n
⋮
⋮
⋱
⋮
∂
f
(
A
)
∂
A
m
1
∂
f
(
A
)
∂
A
m
2
⋯
∂
f
(
A
)
∂
A
m
n
]
\nabla_{A} f(A) \in \mathbb{R}^{m \times n}=\left[ \begin{array}{cccc}{\frac{\partial f(A)}{\partial A_{11}}} & {\frac{\partial f(A)}{\partial A_{12}}} & {\cdots} & {\frac{\partial f(A)}{\partial A_{1}}} \\ {\frac{\partial f(A)}{\partial A_{21}}} & {\frac{\partial f(A)}{\partial A_{22}}} & {\cdots} & {\frac{\partial f(A)}{\partial A_{2 n}}} \\ {\vdots} & {\vdots} & {\ddots} & {\vdots} \\ {\frac{\partial f(A)}{\partial A_{m 1}}} & {\frac{\partial f(A)}{\partial A_{m 2}}} & {\cdots} & {\frac{\partial f(A)}{\partial A_{m n}}}\end{array}\right]
∇Af(A)∈Rm×n=⎣⎢⎢⎢⎢⎡∂A11∂f(A)∂A21∂f(A)⋮∂Am1∂f(A)∂A12∂f(A)∂A22∂f(A)⋮∂Am2∂f(A)⋯⋯⋱⋯∂A1∂f(A)∂A2n∂f(A)⋮∂Amn∂f(A)⎦⎥⎥⎥⎥⎤
需要注意的是我们只能对实值函数求导,即函数返回的是一个标量,比如我们不能对Ax对于x求导,因为它是一个向量函数。
4.3 Hessian矩阵
Hessian矩阵是二阶导数矩阵,如下:
∇
x
2
f
(
x
)
∈
R
n
×
n
=
[
∂
2
f
(
x
)
∂
x
1
2
∂
2
f
(
x
)
∂
x
1
∂
x
2
…
∂
2
f
(
x
)
∂
x
1
∂
x
n
∂
2
f
(
x
)
∂
x
2
∂
x
1
∂
2
f
(
x
)
∂
x
2
2
⋯
∂
2
f
(
x
)
∂
x
2
∂
x
n
⋮
⋮
⋱
⋮
∂
2
f
(
x
)
∂
x
n
∂
x
1
∂
2
f
(
x
)
∂
x
n
∂
x
2
⋯
∂
2
f
(
x
)
∂
x
n
2
]
\nabla_{x}^{2} f(x) \in \mathbb{R}^{n \times n}=\left[ \begin{array}{cccc}{\frac{\partial^{2} f(x)}{\partial x_{1}^{2}}} & {\frac{\partial^{2} f(x)}{\partial x_{1} \partial x_{2}}} & {\dots} & {\frac{\partial^{2} f(x)}{\partial x_{1} \partial x_{n}}} \\ {\frac{\partial^{2} f(x)}{\partial x_{2} \partial x_{1}}} & {\frac{\partial^{2} f(x)}{\partial x_{2}^{2}}} & {\cdots} & {\frac{\partial^{2} f(x)}{\partial x_{2} \partial x_{n}}} \\ {\vdots} & {\vdots} & {\ddots} & {\vdots} \\ {\frac{\partial^{2} f(x)}{\partial x_{n} \partial x_{1}}} & {\frac{\partial^{2} f(x)}{\partial x_{n} \partial x_{2}}} & {\cdots} & {\frac{\partial^{2} f(x)}{\partial x_{n}^{2}}}\end{array}\right]
∇x2f(x)∈Rn×n=⎣⎢⎢⎢⎢⎢⎡∂x12∂2f(x)∂x2∂x1∂2f(x)⋮∂xn∂x1∂2f(x)∂x1∂x2∂2f(x)∂x22∂2f(x)⋮∂xn∂x2∂2f(x)…⋯⋱⋯∂x1∂xn∂2f(x)∂x2∂xn∂2f(x)⋮∂xn2∂2f(x)⎦⎥⎥⎥⎥⎥⎤
Hessian矩阵是对称阵,通梯度一样,Hessian矩阵也只定义在实值函数上。
4.4 二次型和线性方程组的梯度和Hessian矩阵
对于
x
∈
R
n
x \in \mathbb{R}^{n}
x∈Rn,使得
f
(
x
)
=
b
T
x
f(x)=b^{T} x
f(x)=bTx,对于已知的
b
∈
R
n
b \in \mathbb{R}^{n}
b∈Rn,我们有:
f
(
x
)
=
∑
i
=
1
n
b
i
x
i
∂
f
(
x
)
∂
x
k
=
∂
∂
x
k
∑
i
=
1
n
b
i
x
i
=
b
k
\begin{array}{c}{f(x)=\sum_{i=1}^{n} b_{i} x_{i}} \\ {\frac{\partial f(x)}{\partial x_{k}}=\frac{\partial}{\partial x_{k}} \sum_{i=1}^{n} b_{i} x_{i}=b_{k}}\end{array}
f(x)=∑i=1nbixi∂xk∂f(x)=∂xk∂∑i=1nbixi=bk
即:
∇
x
b
T
x
=
b
\nabla_{x} b^{T} x=b
∇xbTx=b
现在考虑二次型
f
(
x
)
=
x
T
A
x
f(x)=x^{T} A x
f(x)=xTAx for
A
∈
S
n
A \in \mathbb{S}^{n}
A∈Sn,即:
f
(
x
)
=
∑
i
=
1
n
∑
j
=
1
n
A
i
j
x
i
x
j
f(x)=\sum_{i=1}^{n} \sum_{j=1}^{n} A_{i j} x_{i} x_{j}
f(x)=i=1∑nj=1∑nAijxixj
对
x
k
x_k
xk求偏导,我们需要考虑每一个包含
x
k
x_k
xk的项:
∂
f
(
x
)
∂
x
k
=
∂
∂
x
k
∑
i
=
1
n
∑
j
=
1
n
A
i
j
x
i
x
j
=
∂
∂
x
k
[
∑
i
≠
k
∑
j
≠
k
A
i
j
x
i
x
j
+
∑
i
≠
k
A
i
k
x
i
x
k
+
∑
j
≠
k
A
k
j
x
k
x
j
+
A
k
k
x
k
2
]
=
∑
i
≠
k
A
i
k
x
i
+
∑
j
≠
k
A
k
j
x
j
+
∑
i
≠
k
A
k
k
x
k
=
∑
i
=
1
n
A
i
k
x
i
+
∑
j
=
1
n
A
k
j
x
j
=
2
∑
i
=
1
n
A
k
i
x
i
\begin{aligned} \frac{\partial f(x)}{\partial x_{k}} &=\frac{\partial}{\partial x_{k}} \sum_{i=1}^{n} \sum_{j=1}^{n} A_{i j} x_{i} x_{j} \\ &=\frac{\partial}{\partial x_{k}}\left[\sum_{i \neq k} \sum_{j \neq k} A_{i j} x_{i} x_{j}+\sum_{i \neq k} A_{i k} x_{i} x_{k}+\sum_{j \neq k} A_{k j} x_{k} x_{j}+A_{k k} x_{k}^{2}\right] \\ &=\sum_{i \neq k} A_{i k} x_{i}+\sum_{j \neq k} A_{k j} x_{j}+\sum_{i \neq k} A_{k k} x_{k} \\ &=\sum_{i=1}^{n} A_{i k} x_{i}+\sum_{j=1}^{n} A_{k j} x_{j}=2 \sum_{i=1}^{n} A_{k i} x_{i} \end{aligned}
∂xk∂f(x)=∂xk∂i=1∑nj=1∑nAijxixj=∂xk∂⎣⎡i̸=k∑j̸=k∑Aijxixj+i̸=k∑Aikxixk+j̸=k∑Akjxkxj+Akkxk2⎦⎤=i̸=k∑Aikxi+j̸=k∑Akjxj+i̸=k∑Akkxk=i=1∑nAikxi+j=1∑nAkjxj=2i=1∑nAkixi
因此我们得到:
∇
x
x
T
A
x
=
2
A
x
\nabla_{x} x^{T} A x=2 A x
∇xxTAx=2Ax
下面我们来看二次型方程
f
(
x
)
=
x
T
A
x
f(x)=x^{T} A x
f(x)=xTAx的Hessian矩阵:
∂
2
f
(
x
)
∂
x
k
∂
x
ℓ
=
∂
∂
x
k
[
∂
f
(
x
)
∂
x
ℓ
]
=
∂
∂
x
k
[
2
∑
i
=
1
n
A
ℓ
i
x
i
]
=
2
A
ℓ
k
=
2
A
k
ℓ
\frac{\partial^{2} f(x)}{\partial x_{k} \partial x_{\ell}}=\frac{\partial}{\partial x_{k}}\left[\frac{\partial f(x)}{\partial x_{\ell}}\right]=\frac{\partial}{\partial x_{k}}\left[2 \sum_{i=1}^{n} A_{\ell i} x_{i}\right]=2 A_{\ell k}=2 A_{k \ell}
∂xk∂xℓ∂2f(x)=∂xk∂[∂xℓ∂f(x)]=∂xk∂[2i=1∑nAℓixi]=2Aℓk=2Akℓ
因此我们可以得到:
∇
x
2
x
T
A
x
=
2
A
\nabla_{x}^{2} x^{T} A x=2 A
∇x2xTAx=2A。
总结一下:
∙
∇
x
b
T
x
=
b
∙
∇
x
x
T
A
x
=
2
A
x
(if
A
symmetric
)
∙
∇
x
2
x
T
A
x
=
2
A
(if
A
symmetric)
\begin{array}{l}{\bullet \nabla_{x} b^{T} x=b} \\ {\bullet \nabla_{x} x^{T} A x=2 A x \text { (if } A \text { symmetric } )} \\ {\bullet \nabla_{x}^{2} x^{T} A x=2 A \text { (if } A \text { symmetric) }}\end{array}
∙∇xbTx=b∙∇xxTAx=2Ax (if A symmetric )∙∇x2xTAx=2A (if A symmetric)
4.4 最小二乘法
现在我们用上一节得到的公式来推导最小二乘法,给定矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n,为了简单我们假设矩阵A是满秩的,给定列向量 b ∈ R m b \in \mathbb{R}^{m} b∈Rm满足 b ∉ R ( A ) b \notin \mathcal{R}(A) b∈/R(A),在这种情况下,我们不能用A的列向量线性表示向量b,即 A x = b A x=b Ax=b无解,所以我们想要在A的列空间中找一个距离向量b最近的向量,这里使用欧几里得距离度量距离。
A的列空间的一个向量可以用
A
x
A x
Ax表示,其中
x
i
x_i
xi是使用A的列向量进行线性组合时第i列的系数,因此我们有:
∥
A
x
−
b
∥
2
2
=
(
A
x
−
b
)
T
(
A
x
−
b
)
=
x
T
A
T
A
x
−
2
b
T
A
x
+
b
T
b
\begin{aligned}\|A x-b\|_{2}^{2} &=(A x-b)^{T}(A x-b) \\ &=x^{T} A^{T} A x-2 b^{T} A x+b^{T} b \end{aligned}
∥Ax−b∥22=(Ax−b)T(Ax−b)=xTATAx−2bTAx+bTb
对上式进行求导:
∇
x
(
x
T
A
T
A
x
−
2
b
T
A
x
+
b
T
b
)
=
∇
x
x
T
A
T
A
x
−
∇
x
2
b
T
A
x
+
∇
x
b
T
b
=
2
A
T
A
x
−
2
A
T
b
\begin{aligned} \nabla_{x}\left(x^{T} A^{T} A x-2 b^{T} A x+b^{T} b\right) &=\nabla_{x} x^{T} A^{T} A x-\nabla_{x} 2 b^{T} A x+\nabla_{x} b^{T} b \\ &=2 A^{T} A x-2 A^{T} b \end{aligned}
∇x(xTATAx−2bTAx+bTb)=∇xxTATAx−∇x2bTAx+∇xbTb=2ATAx−2ATb
令导数为0,我们得到:
x
=
(
A
T
A
)
−
1
A
T
b
x=\left(A^{T} A\right)^{-1} A^{T} b
x=(ATA)−1ATb
4.5 行列式的梯度
现在我们想要求矩阵
A
∈
R
n
×
n
A \in \mathbb{R}^{n \times n}
A∈Rn×n的行列式的梯度
∇
A
∣
A
∣
\nabla_{A}|A|
∇A∣A∣,根据上面我们的推导,矩阵的行列式等于:
∣
A
∣
=
∑
i
=
1
n
(
−
1
)
i
+
j
A
i
j
∣
A
i
,
j
∣
(for any
j
∈
1
,
…
,
n
)
|A|=\sum_{i=1}^{n}(-1)^{i+j} A_{i j}\left|A_{i, j}\right| \quad \text { (for any } j \in 1, \ldots, n )
∣A∣=i=1∑n(−1)i+jAij∣Ai,j∣ (for any j∈1,…,n)
所以,求导得到:
∂
∂
A
k
ℓ
∣
A
∣
=
∂
∂
A
k
ℓ
∑
i
=
1
n
(
−
1
)
i
+
j
A
i
j
∣
A
\
i
,
j
∣
=
(
−
1
)
k
+
ℓ
∣
A
\
k
,
\
ℓ
∣
=
(
adj
(
A
)
)
ℓ
k
\frac{\partial}{\partial A_{k \ell}}|A|=\frac{\partial}{\partial A_{k \ell}} \sum_{i=1}^{n}(-1)^{i+j} A_{i j}\left|A_{\backslash i, j}\right|=(-1)^{k+\ell}\left|A_{\backslash k, \backslash \ell}\right|=(\operatorname{adj}(A))_{\ell k}
∂Akℓ∂∣A∣=∂Akℓ∂i=1∑n(−1)i+jAij∣∣A\i,j∣∣=(−1)k+ℓ∣∣A\k,\ℓ∣∣=(adj(A))ℓk
所以我们得到:
∇
A
∣
A
∣
=
(
adj
(
A
)
)
T
=
∣
A
∣
A
−
T
\nabla_{A}|A|=(\operatorname{adj}(A))^{T}=|A| A^{-T}
∇A∣A∣=(adj(A))T=∣A∣A−T
下面我们推导一下
f
:
S
+
+
n
→
R
,
f
(
A
)
=
log
∣
A
∣
f : \mathbb{S}_{++}^{n} \rightarrow \mathbb{R}, f(A)=\log |A|
f:S++n→R,f(A)=log∣A∣的梯度,如下:
∂
log
∣
A
∣
∂
A
i
j
=
∂
log
∣
A
∣
∂
∣
A
∣
∂
∣
A
∣
∂
A
i
j
=
1
∣
A
∣
∂
∣
A
∣
∂
A
i
j
\frac{\partial \log |A|}{\partial A_{i j}}=\frac{\partial \log |A|}{\partial|A|} \frac{\partial|A|}{\partial A_{i j}}=\frac{1}{|A|} \frac{\partial|A|}{\partial A_{i j}}
∂Aij∂log∣A∣=∂∣A∣∂log∣A∣∂Aij∂∣A∣=∣A∣1∂Aij∂∣A∣
∇ A log ∣ A ∣ = 1 ∣ A ∣ ∇ A ∣ A ∣ = A − 1 \nabla_{A} \log |A|=\frac{1}{|A|} \nabla_{A}|A|=A^{-1} ∇Alog∣A∣=∣A∣1∇A∣A∣=A−1
4.6 奇异值和优化计算
下面我们用特征值和特征向量解决优化问题,考虑下面这个约束优化问题:
max
x
∈
R
n
x
T
A
x
subject to
∥
x
∥
2
2
=
1
\max _{x \in \mathbb{R}^{n}} x^{T} A x \quad \text { subject to }\|x\|_{2}^{2}=1
x∈RnmaxxTAx subject to ∥x∥22=1
对于对称矩阵
A
∈
S
n
A \in \mathbb{S}^{n}
A∈Sn来说,解决这种等式约束得优化问题的标准方法是构建拉格朗日函数,如下:
L
(
x
,
λ
)
=
x
T
A
x
−
λ
x
T
x
\mathcal{L}(x, \lambda)=x^{T} A x-\lambda x^{T} x
L(x,λ)=xTAx−λxTx
然后,对拉格朗日函数求导,并令其等于0:
∇
x
L
(
x
,
λ
)
=
∇
x
(
x
T
A
x
−
λ
x
T
x
)
=
2
A
T
x
−
2
λ
x
=
0
\nabla_{x} \mathcal{L}(x, \lambda)=\nabla_{x}\left(x^{T} A x-\lambda x^{T} x\right)=2 A^{T} x-2 \lambda x=0
∇xL(x,λ)=∇x(xTAx−λxTx)=2ATx−2λx=0
我们注意到,这其实是一个形式为
A
x
=
λ
x
A x=\lambda x
Ax=λx的线性方程组,而这个方程组的解就是矩阵A的特征值。