1 引言

常见的求导有,标量对标量求导,向量对标量,矩阵对标量,标量对向量,向量对向量,标量对矩阵。求导的几种形式:
在这里插入图片描述
字符标示:
A 大写粗体表示矩阵
a 小写粗体表示向量
a 小写粗体表示标量
tr(X) 表示迹,主对角线之和
det(X) or |X| 表示
字母表前面部分表示常量(如 a,b,c…),字母表后面部分表示变量(如 t,x,y,…)

2 向量的导数

2.1 向量对标量求导 Vector-by-scalar

y 向量为 y = [ y 1 y 2 ⋯ y m ] T {\displaystyle \mathbf {y} ={\begin{bmatrix}y_{1}&y_{2}&\cdots &y_{m}\end{bmatrix}}^{\mathsf {T}}} y=[y1y2ym]T, 对 x 求导,结果为列

∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋮ ∂ y m ∂ x ] {\displaystyle {\frac {\partial \mathbf {y} }{\partial x}}={\begin{bmatrix}{\frac {\partial y_{1}}{\partial x}}\\{\frac {\partial y_{2}}{\partial x}}\\\vdots \\{\frac {\partial y_{m}}{\partial x}}\\\end{bmatrix}}} xy=xy1xy2xym

2.2 标量对向量求导 Scalar-by-vector

y 为标量,对向量 x = [ x 1 x 2 ⋯ x n ] T {\displaystyle \mathbf {x} ={\begin{bmatrix}x_{1}&x_{2}&\cdots &x_{n}\end{bmatrix}}^{\mathsf {T}}} x=[x1x2xn]T 求导,结果为行
在这里插入图片描述

2.3 向量对向量求导 Vector-by-vector

输出向量为 y = [ y 1 y 2 ⋯ y m ] T {\displaystyle \mathbf {y} ={\begin{bmatrix}y_{1}&y_{2}&\cdots &y_{m}\end{bmatrix}}^{\mathsf {T}}} y=[y1y2ym]T
输入向量为 x = [ x 1 x 2 ⋯ x n ] T {\displaystyle \mathbf {x} ={\begin{bmatrix}x_{1}&x_{2}&\cdots &x_{n}\end{bmatrix}}^{\mathsf {T}}} x=[x1x2xn]T
神经网络中全连接层的形式就是如此
在这里插入图片描述
这种矩阵也称为雅各布矩阵

3 矩阵的导数

3.1 矩阵对标量求导 Matrix-by-scalar

在这里插入图片描述

3.2 标量对矩阵求导 Scalar-by-matrix

在这里插入图片描述

4 常用求导公式

字符标示:
a, b, c, d, and e 为常量, 标量 u, and v 由 x, x, or X中的一个计算而来;
a, b, c, d, and e 为常量向量, 向量 u, and v 由 x, x, or X中的一个计算而来;
A, B, B, D, and E 为常量矩阵, 向量 U, and V 由 x, x, or X中的一个计算而来;

4.1 向量对向量求导

在这里插入图片描述

4.2 标量对向量求导

在这里插入图片描述
在这里插入图片描述

4.3 向量对标量求导

在这里插入图片描述

4.4 标量对矩阵求导

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5 矩阵对标量求导

在这里插入图片描述

4.6 标量对标量求导

在这里插入图片描述

参考

Matrix calculus

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐