In machine learning and image processing, calculating gradient of a funcion is one of the most frequent operations. Here are some common rules.
首先,介绍下标量函数(scalar function)和向量函数(vector function)。
标量函数是将一个实数(即标量)赋值给一个实变量集合的函数,它的通用形式是
$$ f(\mathbf{x}) = f(x_1, x_2, ..., x_n) $$
其中 $x_1, x_2, ..., x_n$ 是实数。
向量函数是将一个向量赋值给一个实变量集合的函数,它的通用形式是
$$ \mathbf{f}(\mathbf{x}) = \left[ \begin{array}{c} f_1(x_1, x_2, ..., x_n) \ f_2(x_1, x_2, ..., x_n) \ \vdots \ f_m(x_1, x_2, ..., x_n) \end{array} \right] $$
其中 $x_1, x_2, ..., x_n$ 是实数。此处我们用粗体$\mathbf{f}$表示向量。
下面的内容主要引用 [2].
以$n \times 1$列向量$\mathbf{x}$为变元的标量函数$f(\mathbf{x})$相对于$\mathbf{x}$的梯度为$n\times 1$列向量,定义为
$$ \nabla_{x} f(\mathbf{x})\stackrel{def}{=} \left[\frac{\partial f(\mathbf{x})}{\partial x_1}, \frac{\partial f(\mathbf{x})}{\partial x_2}, \ldots, \frac{\partial f(\mathbf{x})}{\partial x_n}\right]^T= \frac{f(\mathbf{x})}{\mathbf{x}} $$
从上式是可以得出标量函数的梯度是向量,它反应了变量增大时函数$f$最大的增大率。 据此可以设计计算函数极小值的迭代算法。
$m$维行向量函数$\mathbf{f}(\mathbf{x})=\left[f_1(\mathbf{x}), f_2(\mathbf{x}), \ldots, f_m(\mathbf{x})\right]$ 相对于$n$维列向量列向量$\mathbf{x}$的梯度为$n \times m$矩阵,定义为
$$ \frac{\partial{\mathbf{f}(\mathbf{x})}}{\partial{\mathbf{x}}} \stackrel{def}{=} \left[ \begin{array}{cccc} \frac{\partial f_1(\mathbf{x})}{\partial x_1} & \frac{\partial f_2(\mathbf{x})}{\partial x_1} & \ldots & \frac{\partial f_m(\mathbf{x})}{\partial x_1} \ \frac{\partial f_1(\mathbf{x})}{\partial x_2} & \frac{\partial f_2(\mathbf{x})}{\partial x_2} & \ldots & \frac{\partial f_m(\mathbf{x})}{\partial x_2} \ \vdots & \vdots & \ddots &\vdots \ \frac{\partial f_1(\mathbf{x})}{\partial x_n} & \frac{\partial f_2(\mathbf{x})}{\partial x_n} & \ldots & \frac{\partial f_m(\mathbf{x})}{\partial x_n} \ \end{array} \right] $$
向量函数梯度的一个特例
$$ \frac{\partial \mathbf{x}^T}{\partial \mathbf{x}}=\mathbf{I} $$
式中$\mathbf{I}$为单位阵。
下面列出一些常用的函数相对于列向量的求导法则
(1) 若$f(\mathbf{x})=c$为常数, $$\frac{\partial c}{\partial \mathbf{x}}=\mathbf{0}$$
(2) 线性法则
(3) 链式法则
(6) 若$n\times1$向量$\mathbf{a}$是与$\mathbf{x}$无关的常数向量,则
$$ \frac{\partial \mathbf{a}^T\mathbf{x}}{\partial \mathbf{x}}=\mathbf{a},\quad\frac{\partial \mathbf{x}^T\mathbf{a}}{\partial \mathbf{x}}=\mathbf{a} $$
(8) 若$\mathbf{A}$和$\mathbf{y}$都与$\mathbf{x}$无关,则
$$ \frac{\partial \mathbf{x}^T\mathbf{Ay}}{\partial \mathbf{x}}=\mathbf{Ay},\quad\frac{\partial \mathbf{y}^T\mathbf{Ax}}{\partial \mathbf{x}}=\mathbf{A}^T\mathbf{y} $$
其中$\mathbf{y}^T\mathbf{Ax}= \langle{\mathbf{A}^T\mathbf{y}}\,{\mathbf{x}}\rangle = \langle{\mathbf{x}}\,{\mathbf{A}^T\mathbf{y}}\rangle = \mathbf{x}^T\mathbf{A}^T\mathbf{y}$
(9) 若$\mathbf{A}$是一个与向量$\mathbf{x}$无关的矩阵,则
$$ \frac{\partial \mathbf{x}^T\mathbf{A}}{\partial \mathbf{x}}=\mathbf{A}, \quad \frac{\partial \mathbf{x}^T\mathbf{Ax}}{\partial \mathbf{x}}=\mathbf{Ax}+\mathbf{A}^T\mathbf{x} $$
当$\mathbf{A}$为对称阵时,$\mathbf{A}$与$\mathbf{A}^T$可合并。
参考文献
- http://www.solitaryroad.com/c251.html
- 张贤达. 矩阵分析与应用. 清华大学出版社. 2004.9年. ISBN 9787302092711