前面针对机器学习中基础的线性代数知识,我们做了一个常用知识的梳理。接下来针对机器学习公式推导过程中经常用到的矩阵求导,我们做一个详细介绍。
矩阵求导(Matrix Derivative)也称作矩阵微分(Matrix Differential),在机器学习、图像处理、最优化等领域的公式推导中经常用到。
矩阵的微积分本质上是多元变量的微积分问题,只是应用在矩阵空间上而已
根据 Y \bf Y Y 与 X \bf X X 的不同类型(实值、向量、矩阵)给出如下表中的表示:
类型 | 标量(Scalar) y y y | 向量(Vector) y \bf y y | 矩阵(Matrix) Y \bf Y Y |
---|---|---|---|
Scalar x x x | ∂ y ∂ x \frac {\partial y}{\partial x} ∂x∂y | ∂ y ∂ x \frac {\partial \bf y}{\partial x} ∂x∂y | ∂ Y ∂ x \frac {\partial \bf Y}{\partial x} ∂x∂Y |
Vector x \bf x x | ∂ y ∂ x \frac {\partial y}{\partial \bf x} ∂x∂y | ∂ y ∂ x \frac {\partial \bf y}{\partial \bf x} ∂x∂y | |
Matrix X \bf X X | ∂ y ∂ X \frac {\partial y}{\partial \bf X} ∂X∂y |
下面我们根据分子的布局(即X的类型)来介绍矩阵的导数求解
0 布局约定(Layout conventions)
事实上,所有求导的法则都可以从最基本的求导规则推导出来。不知你有没发现,不同的文献中,同样的式子求导的结果有时候会不一样,仔细观察会发现刚好相差一个转置,于是我们得先说说求导的两个派别(布局)。
由向量关于向量的求导 ∂ y ∂ x \frac{\partial y}{\partial x} ∂x∂y可以得出两种矛盾的表示:结果表示为 n × m n×m n×m 矩阵或 m × n m×n m×n 矩阵。也就是把 y \bf y y 表示为列向量 x \bf x x 表示为行向量或者反过来表示的问题。
布局(Layout):在矩阵求导中有两种布局,分别为分母布局(denominator layout)和分子布局(numerator layout)。这两种不同布局的求导规则是不一样的。
向量 y = [ y 1 y 2 ⋮ y n ] {\bf y} = \begin {bmatrix} y_1 \\ y_2\\ \vdots \\ y_n\end{bmatrix} y=⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤,关于标量 x x x 的求导,
在分子布局下,为:
∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋮ ∂ y n ∂ x ] (1) \frac {\partial \bf y}{\partial x} = \begin {bmatrix} \frac{\partial y_1}{\partial x} \\ \frac{\partial y_2}{\partial x} \\ \vdots \\ \frac{\partial y_n}{\partial x} \end{bmatrix}\tag{1} ∂x∂y=⎣⎢⎢⎢⎡∂x∂y1∂x∂y2⋮∂x∂yn⎦⎥⎥⎥⎤(1)
而在分母布局下,为:
∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋯ ∂ y n ∂ x ] (2) \frac {\partial \bf y}{\partial x} = \begin {bmatrix} \frac{\partial y_1}{\partial x} & \frac{\partial y_2}{\partial x} & \cdots & \frac{\partial y_n}{\partial x} \end{bmatrix}\tag{2} ∂x∂y=[∂x∂y1∂x∂y2⋯∂x∂yn](2)
通过观察和推导我们可以知道,分子布局和分母布局之间刚好差一个转置,即在分子布局下与原来 Y \bf Y Y相同,而在分母布局下差一个转置。
对于正切矩阵 ∂ y ∂ x \frac{\partial y}{\partial x} ∂x∂y采用分母布局,即 Y ⊤ \bf Y^ \top Y⊤,很不符合表达的习惯,所以本文中我们采用的是分子布局。
1 关于标量的导数
对于 X \bf X X 是标量的情况,是我们最熟悉的一种情况。
1.1 标量关于标量X的求导
这中情况就是我们平时的代数求导,直接就是 ∂ y ∂ x \frac {\partial y}{\partial x} ∂x∂y
1.2 向量关于标量X的求导
向量 y = [ y 1 y 2 ⋮ y n ] {\bf y} = \begin {bmatrix} y_1 \\ y_2\\ \vdots \\ y_n\end{bmatrix} y=⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤,关于标量 x x x 的求导就是 y {\bf y} y 的每一个元素分别对 x x x求导,可以表示为
∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋮ ∂ y n ∂ x ] (3) \frac {\partial \bf y}{\partial x} = \begin {bmatrix} \frac{\partial y_1}{\partial x} \\ \frac{\partial y_2}{\partial x} \\ \vdots \\ \frac{\partial y_n}{\partial x} \end{bmatrix}\tag{3} ∂x∂y=⎣⎢⎢