NO.002 · 技术笔记 · Math
关于矩阵求导(其一)
概念准备
在进行矩阵求导之前,我们首先需要做一些关于概念上的铺垫。主要分为以下两个部分:
- 函数与变元的种类
- 分子布局与分母布局
函数与变元的种类
这里的种类指的就是标量、向量和矩阵这三种。在本文后续内容中对于这三种形式的符号表达都遵循如下定义:
- 标量,用正文字体小写字母表示,例如:
- 向量,用粗体小写字母表示,例如:
- 矩阵,用粗体大写字母表示,例如:
接下来是具体分类:
-
函数为标量,称之为实值标量函数,根据变元种类分为以下三种:
- 变元为标量,例:
- 变元为向量, 例:
- 变元为矩阵, 例:
-
函数为向量,称之为实向量函数,根据变元种类分为以下三种:
- 变元为标量, 例:
- 变元为向量, 例:
- 变元为矩阵, 例:
-
函数为矩阵, 称之为实矩阵函数,根据变元种类分为以下三种:
- 变元为标量, 例:
- 变元为向量, 例:
- 变元为矩阵, 例:
最后关于函数和变元的种类,可以总结如下:
| 函数 \ 变元 | 标量变元 | 向量变元 | 矩阵变元 |
|---|---|---|---|
| 实值标量函数 | |||
| 实向量函数 | |||
| 实矩阵函数 |
分子布局与分母布局
进行矩阵求导的时候实际上是将函数中的每一个分量依次对变元中的每一个分量求偏导,并将所有求偏导的结果排列起来,根据不同的排列规则分为分子布局 (Numerator Layout) 和 分母布局 (Denominator Layout)。举一个例子:
这里的 是一个实值标量函数,而变元 是一个 的列向量,求完导后的结果也是一个 的列向量。如果把这里求导的式子 视作分式的话可以发现,求导结果的维度与分母 一致,所以这里采用的是分母布局。再举一个例子:
这里的 是一个 的实向量函数,而变元 是一个 的列向量,求导的结果是一个 的矩阵。我们可以看到这个结果符合变元 的排列方式(橙色部分),而函数 则转变为行向量的排列方式(蓝色部分),也就是转置了。这里采用的还是分母布局。如果采用分子布局的话:
结果就是一个 的矩阵,变元 发生了转置。
| 函数 \ 变元 | 标量变元 | 向量变元 | 矩阵变元 |
|---|---|---|---|
| 实值标量函数 | |||
| 实向量函数 | |||
| 实矩阵函数 |
本文后续关于求导的部分只讨论上表中标注为红色的情况,那么关于求导的布局可以通俗地总结为:矩阵求导结果是什么布局由分子、分母中没有发生转置的那一个决定。
矩阵求导公式
以下表中所有的向量初始状态都默认为列向量。例如:
向量对向量 (Vector-by-vector)
| Codition | Expression | Numerator layout | Denominator layout | Proof |
|---|---|---|---|---|
| is not a function of | Proof 1-1 | |||
| is not a funtion of | Proof 1-2 | |||
| is not a funtion of | Proof 1-3 | |||
| is not a function of , | Proof 1-4 | |||
| Proof 1-5 | ||||
| is not a function of , | Proof 1-6 | |||
| Proof 1-7 | ||||
| Proof 1-8 |
标量对向量 (Scalar-by-vector)
| Codition | Expression | Numerator layout (row vector) | Denominator layout (column vector) | Proof |
|---|---|---|---|---|
| is not a function of | ||||
| is not a function of , | ||||
| Proof 2-1 | ||||
| , is not a function of | Proof 2-2 | |||
| Proof 2-3 | ||||
| is not a function of | Proof 2-4 | |||
| are not functions of | Proof 2-5 | |||
| is not a function of | Proof 2-6 | |||
| is not a function of | Proof 2-7 | |||
| Proof 2-8 | ||||
| are not functions of | Proof 2-9 | |||
| is not a function of | Proof 2-10 |
向量对标量 (Vector-by-scalar)
| Codition | Expression | Numerator layout | Denominator layout | Proof |
|---|---|---|---|---|
| is not a function of | ||||
| is not a function of , | ||||
| is not a function of . | Proof 3-1 | |||
| Proof 3-2 | ||||
| Proof 3-3 | ||||
| Proof 3-4 | ||||
| Proof 3-5 |
推导过程
向量对向量 (Vector-by-vector)
- Proof 1-1
-
, is not a function of
Numerator layout:
Denominator layout:
-
- Proof 1-2
-
, is not a funtion of
Denominator layout:
-
- Proof 1-3
-
, is not a funtion of
Denominator layout:
-
- Proof 1-4
-
, is not a function of
Denominator layout:
-
- Proof 1-5
-
,
Numerator layout:
Denominator layout:
-
- Proof 1-6
-
, is not a function of
Numerator layout:
Denominator layout:
-
- Proof 1-7
-
,
Numerator layout:
Denominator layout:
-
- Proof 1-8
-
,
Numerator layout:
Denominator layout:
-
标量对向量 (Scalar-by-vector)
- Proof 2-1
-
,
Numerator layout:
Denominator layout:
-
- Proof 2-2
-
, is not a function of
Numerator layout:
Denominator layout:
-
- Proof 2-3
-
Numerator layout:
Denominator layout:
-
- Proof 2-4
-
is not a function of
Numerator layout:
Denominator layout:
-
- Proof 2-5
-
, are not functions of
Numerator layout:
Denominator layout:
-
- Proof 2-6
-
, is not a function of
Numerator layout:
Denominator layout:
-
- Proof 2-7
-
, is not a function of
Numerator layout:
Denominator layout:
-
- Proof 2-8
-
Numerator layout:
Denominator layout:
-
- Proof 2-9
-
, are not functions of
Numerator layout:
Denominator layout:
-
- Proof 2-10
-
, is not a function of
Numerator layout:
优化:
Denominator layout:
-
向量对标量 (Vector-by-scalar)
- Proof 3-1
-
, is not a function of
Numerator layout:
Denominator layout:
-
- Proof 3-2
-
,
Numerator layout:
Denominator layout:
-
- Proof 3-3
-
,
Numerator layout:
Denominator layout:
-
- Proof 3-4
-
,
Numerator:
Denominator layout:
-
- Proof 3-5
-
,
Numerator layout:
Denominator layout:
-
评论COMMENTS