标量对向量求导,严格来说是实值函数对向量的求导。即定义实值函数 $f: R^n \rightarrow R$, 自变量 $\mathrm{x}$ 是 $\mathrm{n}$ 维向量,而输出 $y$ 是标量。对于一个给定的实值函数, 如何求解 $\frac{\partial y}{\partial \mathbf{x}}$ 呢? 首先我们想到的是基于矩阵求导的定义来做,由于所谓标量对向量的求导,其实就是标量对向量里的每个分量分别求导,最后把求导的结果排列在一 起,按一个向量表示而已。那么我们可以将实值函数对向量的每一个分量来求导,最后找到规律,得到求导的结果向量。 首先我们来看一个简单的例子: $y=\mathbf{a}^T \mathbf{x}$,求解 $\frac{\partial \mathbf{a}^T \mathbf{x}}{\partial \mathbf{x}}$ 根据定义,我们先对 $\mathbf{x}$ 的第 1 个分量进行求导,这是一个标量对标量的求导,如下: $$ \frac{\partial \mathbf{a}^T \mathbf{x}}{\partial x_i}=\frac{\partial \sum_{j=1}^n a_j x_j}{\partial x_i}=\frac{\partial a_i x_i}{\partial x_i}=a_i $$ 可见,对向量的第 $\mathrm{i}$ 个分量的求导结果就等于向量 $\mathbf{a}$ 的第 $\mathrm{i}$ 个分量。由于我们是分母布局,最后所有求导结果的分量组成的是一个 $\mathrm{n}$ 维向量。那么其实就是 向量 $\mathbf{a}_{\text {。也就是说: }}$ $$ \frac{\partial \mathbf{a}^T \mathbf{x}}{\partial \mathbf{x}}=\mathbf{a} $$ 同样的思路,我们也可以直接得到: $$ \frac{\partial \mathbf{x}^T \mathbf{a}}{\partial \mathbf{x}}=\mathbf{a} $$ 给一个简单的测试,大家看看自己能不能按定义法推导出: $$ \frac{\partial \mathbf{x}^T \mathbf{x}}{\partial \mathbf{x}}=2 \mathbf{x} $$ 再来看一个复杂一点点的例子: $y=\mathbf{x}^T \mathbf{A} \mathbf{x}$ ,求解 $\frac{\partial \mathbf{x}^T \mathbf{A x}}{\partial \mathrm{x}}$
我们对 $\mathbf{x}$ 的第 $k$ 个分量进行求导如下: $$ \frac{\partial \mathbf{x}^T \mathbf{A} \mathbf{x}}{\partial x_k}=\frac{\partial \sum_{i=1}^n \sum_{j=1}^n x_i A_{i j} x_j}{\partial x_k}=\sum_{i=1}^n A_{i k} x_i+\sum_{j=1}^n A_{k j} x_j $$ 这个第 $\mathrm{k}$ 个分量的求导结果稍微复杂些了,仔细观察一下,第一部分是矩阵 $\mathbf{A}$ 的第 $\mathrm{x}$ 列转置后和 $x$ 相乘得到,第二部分是矩阵 $\mathbf{A}$ 的第 $\mathrm{k}$ 行和 $x$ 相乘得到,排 列好就是: $$ \frac{\partial \mathbf{x}^T \mathbf{A} \mathbf{x}}{\partial \mathbf{x}}=\mathbf{A}^T \mathbf{x}+\mathbf{A} \mathbf{x} $$ 从上面可以看出,定义法求导对于简单的实值函数是很容易的,但是复杂的实值函数就算求出了任意一个分量的导数,要排列出最终的求导结果还挺麻 烦的,因此我们需要找到其他的简便一些的方法来整体求导,而不是每次都先去针对任意一个分量,再进行排列。
在我们寻找一些简单的方法前,我们简单看下标量对向量求导的一些基本法则,这些法则和标量对标量求导的过程类似。 1) 常量对向量的求导结果为 0 。 2) 线性法则:如果 $f, g$ 都是实值函数, $c_1, c_2$ 为常数,则: $$ \frac{\partial\left(c_1 f(\mathbf{x})+c_2 g(\mathbf{x})\right.}{\partial \mathbf{x}}=c_1 \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}}+c_2 \frac{\partial g(\mathbf{x})}{\partial \mathbf{x}} $$ 3) 乘法法则:如果 $f, g$ 都是实值函数,则: $$ \frac{\partial f(\mathbf{x}) g(\mathbf{x})}{\partial \mathbf{x}}=f(\mathbf{x}) \frac{\partial g(\mathbf{x})}{\partial \mathbf{x}}+\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} g(\mathbf{x}) $$ 要注意的是如果不是实值函数,则不能这么使用乘法法则。 4) 除法法则:如果 $f, g$ 都是实值函数,且 $g(\mathbf{x}) \neq 0$ ,则: $$ \frac{\partial f(\mathbf{x}) / g(\mathbf{x})}{\partial \mathbf{x}}=\frac{1}{g^2(\mathbf{x})}\left(g(\mathbf{x}) \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}}-f(\mathbf{x}) \frac{\partial g(\mathbf{x})}{\partial \mathbf{x}}\right) $$
这里我们也同样给出向量对向量求导的定义法的具体例子。 先来一个简单的例子: $\mathbf{y}=\mathbf{A} \mathbf{x}$, 其中 $\mathbf{A}$ 为 $n \times m$ 的矩阵。 $\mathbf{x}, \mathbf{y}$ 分别为 $m, n$ 维向量。需要求导 $\frac{\partial \mathbf{A} \mathbf{x}}{\partial \mathbf{x}}$,根据定义,结果应该是一个 $n \times m$ 的矩阵 先求矩阵的第i行和向量的内积对向量的第j分量求导,用定义法求解过程如下: $$ \frac{\partial \mathbf{A}_{\mathbf{i}} \mathbf{x}}{\partial \mathbf{x}_{\mathbf{j}}}=\frac{\partial A_{i j} x_j}{\partial \mathbf{x}_{\mathbf{j}}}=A_{i j} $$ 可见矩阵 $\mathbf{A}$ 的第i行和向量的内积对向量的第j分量求导的结果就是矩阵 $\mathbf{A}$ 的 $(i, j)$ 位置的值。排列起来就是一个矩阵了,由于我们分子布局,所以排列 出的结果是 $\mathbf{A}$, 而不是 $\mathbf{A}^T$
使用定义法虽然已经求出一些简单的向量矩阵求导的结果,但是对于复杂的求导式子,则中间运算会很复杂,同时求导出的结果排列也是很头痛的。下 一篇我们讨论使使用矩阵微分和迹函数的方法来求解矩阵向量求导。
转载自: