深度学习中矩阵求导公式整理

1.两种布局约定方式

布局(Layout):在矩阵求导中有两种布局,分别为分母布局(denominator layout)和分子布局(numerator layout)。这两种不同布局的求导规则是不一样的。

向量 y = [ y 1 y 2 ⋮ y n ] \mathbf{y}=\left[\begin{matrix} y_1\\ y_2\\ \vdots \\y_n\end{matrix} \right] y=y1y2yn,关于标量 x x x的求导,
分子布局下,为:
∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋮ ∂ y n ∂ x ] \frac{\partial \mathbf{y}}{\partial x}=\left[\begin{matrix} \frac{\partial y_1}{\partial x}\\\frac{\partial y_2}{\partial x}\\ \vdots \\\frac{\partial y_n}{\partial x}\end{matrix} \right] xy=xy1xy2xyn
而在分母布局下,为:
∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋯ ∂ y n ∂ x ] \frac{\partial \mathbf{y}}{\partial x}=\left[\begin{matrix}\frac{\partial y_1}{\partial x}&\frac{\partial y_2}{\partial x} & \cdots &\frac{\partial y_n}{\partial x}\end{matrix} \right] xy=[xy1xy2xyn]
通过观察和推导我们可以知道,分子布局和分母布局之间刚好差一个转置,即在分子布局下与原来 y \mathbf{y} y相同,而在分母布局下差一个转置。

2.矩阵求导的类型

类型标量向量矩阵
标量 ∂ y ∂ x \frac{\partial y}{\partial x} xy ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial x} xy ∂ Y ∂ x \frac{\partial \mathbf{Y}}{\partial x} xY
向量 ∂ y ∂ x \frac{\partial y}{\partial \mathbf{x}} xy ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial \mathbf{x}} xy
矩阵 ∂ y ∂ X \frac{\partial y}{\partial \mathbf{X}} Xy

3.标量对标量求导

这种情况就是平常的代数求导,直接为 ∂ y ∂ x \frac{\partial y}{\partial x} xy

4.向量对标量求导

向量 y = [ y 1 y 2 ⋮ y n ] \mathbf{y}=\left[\begin{matrix} y_1\\ y_2\\ \vdots \\y_n\end{matrix} \right] y=y1y2yn,关于标量 x x x的求导(以分子布局约定)就是 y \mathbf{y} y的每一个元素分别对 x x x求导,可以表示为:
∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋮ ∂ y n ∂ x ] \frac{\partial \mathbf{y}}{\partial x}=\left[\begin{matrix} \frac{\partial y_1}{\partial x}\\\frac{\partial y_2}{\partial x}\\ \vdots \\\frac{\partial y_n}{\partial x} \end{matrix} \right] xy=xy1xy2xyn
此时为正切向量, ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial x} xy y \mathbf{y} y的正切向量,有映射 y \mathbf{y} y R n    ⟹    R n \R^n\implies\R^n RnRn??

5.矩阵对标量求导

矩阵对标量的求导类似于向量关于标量的求导,也就是矩阵的每个元素分别对标量 x x x求导,矩阵 Y = [ y 11 y 12 ⋯ y 1 n y 21 y 22 ⋯ y 2 n ⋮ ⋮ ⋱ ⋮ y n 1 y n 2 ⋯ y n n ] \mathbf{Y} =\left[\begin{matrix} y_{11}&y_{12}& \cdots&y_{1n} \\ y_{21}&y_{22}& \cdots&y_{2n} \\ \vdots&\vdots&\ddots&\vdots\\ y_{n1}&y_{n2}& \cdots&y_{nn} \end{matrix} \right] Y=y11y21yn1y12y22yn2y1ny2nynn对标量 x x x的导数(以分子布局约定)为:
∂ Y ∂ x = [ ∂ y 11 ∂ x ∂ y 12 ∂ x ⋯ ∂ y 1 n ∂ x ∂ y 21 ∂ x ∂ y 22 ∂ x ⋯ ∂ y 2 n ∂ x ⋮ ⋮ ⋱ ⋮ ∂ y n 1 ∂ x ∂ y n 2 ∂ x ⋯ ∂ y n n ∂ x ] \frac{\partial \mathbf{Y} }{\partial x}=\left[\begin{matrix} \frac{\partial y_{11}}{\partial x}&\frac{\partial y_{12}}{\partial x}&\cdots&\frac{\partial y_{1n}}{\partial x}\\ \frac{\partial y_{21}}{\partial x}&\frac{\partial y_{22}}{\partial x}&\cdots&\frac{\partial y_{2n}}{\partial x} \\ \vdots&\vdots&\ddots&\vdots\\ \frac{\partial y_{n1}}{\partial x}&\frac{\partial y_{n2}}{\partial x}& \cdots&\frac{\partial y_{nn}}{\partial x} \end{matrix} \right] xY=xy11xy21xyn1xy12xy22xyn2xy1nxy2nxynn

6.标量对向量求导

标量 y y y关于向量 x = [ x 1 x 2 ⋮ x n ] \mathbf{x}=\left[\begin{matrix} x_1\\x_2\\\vdots\\x_n \end{matrix} \right] x=x1x2xn的求导可以表示为:
∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋯ ∂ y ∂ x n ] \frac{\partial y}{\partial \mathbf{x}}=\left[\begin{matrix} \frac{\partial y}{\partial x_1}&\frac{\partial y}{\partial x_2}&\cdots&\frac{\partial y}{\partial x_n} \end{matrix} \right] xy=[x1yx2yxny]
此时的向量叫做梯度向量。 ∂ y ∂ x \frac{\partial y}{\partial \mathbf{x}} xy为标量 y y y在空间 R n \R^n Rn的梯度,该空间以 x x x为基。

7.向量对向量求导

向量函数(即函数组成的向量) y = [ y 1 y 2 ⋮ y n ] \mathbf{y}=\left[\begin{matrix} y_1\\y_2\\\vdots\\y_n \end{matrix} \right] y=y1y2yn关于向量 x = [ x 1 x 2 ⋮ x n ] \mathbf{x}=\left[\begin{matrix} x_1\\x_2\\\vdots\\x_n \end{matrix} \right] x=x1x2xn的导数记作:
∂ y ∂ x = [ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ⋯ ∂ y 1 ∂ x n ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ⋯ ∂ y 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ y n ∂ x 1 ∂ y n ∂ x 2 ⋯ ∂ y n ∂ x n ] \frac{\partial \mathbf{y} }{\partial \mathbf{x}}=\left[\begin{matrix} \frac{\partial y_1}{\partial x_1}&\frac{\partial y_1}{\partial x_2}&\cdots&\frac{\partial y_1}{\partial x_n}\\ \frac{\partial y_2}{\partial x_1}&\frac{\partial y_2}{\partial x_2}&\cdots&\frac{\partial y_2}{\partial x_n}\\ \vdots&\vdots&\ddots&\vdots\\ \frac{\partial y_n}{\partial x_1}&\frac{\partial y_n}{\partial x_2}&\cdots&\frac{\partial y_n}{\partial x_n} \end{matrix} \right] xy=x1y1x1y2x1ynx2y1x2y2x2ynxny1xny2xnyn
此时获得的矩阵 ∂ y ∂ x \frac{\partial \mathbf{y} }{\partial \mathbf{x}} xy叫做Jacobian矩阵。

8.标量对矩阵求导

自变量为矩阵X 的标量函数 y 关于矩阵X的导数为:(分子布局约定)
∂ y ∂ X = [ ∂ y ∂ x 11 ∂ y ∂ x 21 ⋯ ∂ y ∂ x p 1 ∂ y ∂ x 12 ∂ y ∂ x 22 ⋯ ∂ y ∂ x p 2 ⋮ ⋮ ⋱ ⋮ ∂ y ∂ x 1 q ∂ y ∂ x 2 q ⋯ ∂ y ∂ x p q ] \frac{\partial y }{\partial \mathbf{X}}=\left[\begin{matrix} \frac{\partial y}{\partial x_{11}}&\frac{\partial y}{\partial x_{21}}&\cdots&\frac{\partial y}{\partial x_{p1}}\\ \frac{\partial y}{\partial x_{12}}&\frac{\partial y}{\partial x_{22}}&\cdots&\frac{\partial y}{\partial x_{p2}}\\ \vdots&\vdots&\ddots&\vdots\\ \frac{\partial y}{\partial x_{1q}}&\frac{\partial y}{\partial x_{2q}}&\cdots&\frac{\partial y}{\partial x_{pq}}\\ \end{matrix} \right] Xy=x11yx12yx1qyx21yx22yx2qyxp1yxp2yxpqy
注意到这里关于X的梯度的索引就是矩阵X索引的转置。(矩阵的标量函数会涉及到矩阵的迹和行列式)。

参考文献:

[1] Matrix calculus
[2] 矩阵求导(一)
[3] 数学-矩阵计算(4)两种布局
码字不易,如果您觉得有帮助,麻烦帮我点个赞~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值