机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法

    在机器学习中的矩阵向量求导(一) 求导定义与求导布局中,TT快三TT快三我 们 讨论了向量矩阵求导的9种定义与求导布局的概念。今天TT快三TT快三我 们 就讨论下其中的标量对向量求导,标量对矩阵求导, 以及向量对向量求导这三种场景的基本求解思路。

    对于本文中的标量对向量或矩阵求导这两种情况,如前文所说,以分母布局为默认布局。向量对向量求导,以分子布局为默认布局。如遇到其他文章中的求导结果和本文不同,请先确认使用的求导布局是否一样。另外,由于机器学习中向量或矩阵对标量求导的场景很少见,本系列不会单独讨论这两种求导过程。

1. 用定义法求解标量对向量求导

    标量对向量求导,严格来说是实值函数对向量的求导。即定义实值函数$f: R^{n} \to R$,自变量$\mathbf{x}$是n维向量,而输出$y$是标量。对于一个给定的实值函数,如何求解$\frac{\partial y}{\partial \mathbf{x}}$呢?

    首先TT快三TT快三我 们 想到的是基于矩阵求导的定义来做,由于所谓标量对向量的求导,其实就是标量对向量里的每个分量分别求导,最后把求导的结果排列在一起,按一个向量表示而已。那么TT快三TT快三我 们 可以将实值函数对向量的每一个分量来求导,最后找到规律,得到求导的结果向量。

    首先TT快三TT快三我 们 来看一个简单的例子:$y=\mathbf{a}^T\mathbf{x}$,求解$\frac{\partial \mathbf{a}^T\mathbf{x}}{\partial \mathbf{x}}$

    根据定义,TT快三TT快三我 们 先对$\mathbf{x}$的第i个分量进行求导,这是一个标量对标量的求导,如下:

$$\frac{\partial \mathbf{a}^T\mathbf{x}}{\partial x_i} = \frac{\partial \sum\limits_{j=1}^n a_jx_j}{\partial x_i} = \frac{\partial a_ix_i}{\partial x_i} =a_i$$

    可见,对向量的第i个分量的求导结果就等于向量$\mathbf{a}$的第i个分量。由于TT快三TT快三我 们 是分母布局,最后所有求导结果的分量组成的是一个n维向量。那么其实就是向量$\mathbf{a}$。也就是说:$$\frac{\partial \mathbf{a}^T\mathbf{x}}{\partial \mathbf{x}} = \mathbf{a}$$

    同样的思路,TT快三TT快三我 们 也可以直接得到:$$\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}\mathbf{x}}{\partial \mathbf{x}}$

    TT快三TT快三我 们 对$\mathbf{x}$的第k个分量进行求导如下:

$$\frac{\partial \mathbf{x}^T\mathbf{A}\mathbf{x}}{\partial x_k} = \frac{\partial \sum\limits_{i=1}^n\sum\limits_{j=1}^n x_iA_{ij}x_j}{\partial x_k} = \sum\limits_{i=1}^n A_{ik}x_i + \sum\limits_{j=1}^n A_{kj}x_j $$

    这个第k个分量的求导结果稍微复杂些了,仔细观察一下,第一部分是矩阵$\mathbf{A}$的第k列转置后和$x$相乘得到,第二部分是矩阵$\mathbf{A}$的第k行和$x$相乘得到,排列好就是: $$\frac{\partial \mathbf{x}^T\mathbf{A}\mathbf{x}}{\partial \mathbf{x}} = \mathbf{A}^T\mathbf{x} + \mathbf{A}\mathbf{x}$$

    从上面可以看出,定义法求导对于简单的实值函数是很容易的,但是复杂的实值函数就算求出了任意一个分量的导数,要排列出最终的求导结果还挺麻烦的,因此TT快三TT快三我 们 需要找到其他的简便一些的TT快三方法 来整体求导,而不是每次都先去针对任意一个分量,再进行排列。

2. 标量对向量求导的一些基本法则

    在TT快三TT快三我 们 寻找一些简单的TT快三方法 前,TT快三TT快三我 们 简单看下标量对向量求导的一些基本法则,这些法则和标量对标量求导的过程类似。

    1) 常量对向量的求导结果为0。

    2)线性法则:如果$f,g$都是实值函数,$c_1,c_2$为常数,则:$$\frac{\partial (c_1f(\mathbf{x})+c_2g(\mathbf{x})}{\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})}(g(\mathbf{x})\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} - f(\mathbf{x})\frac{\partial g(\mathbf{x})}{\partial \mathbf{x}})$$

3. 用定义法求解标量对矩阵求导

     现在TT快三TT快三我 们 来看看定义法如何解决标量对矩阵的求导问题。其实思路和第一节的标量对向量的求导是类似的,只是最后的结果是一个和自变量同型的矩阵。

    TT快三TT快三我 们 还是以一个例子来说明。$y=\mathbf{a}^T\mathbf{X}\mathbf{b}$,求解$\frac{\partial \mathbf{a}^T\mathbf{X}\mathbf{b}}{\partial \mathbf{X}}$

    其中, $\mathbf{a}$是m维向量,$\mathbf{b}$是n维向量,  $\mathbf{X}$是$m \times n$的矩阵。

    TT快三TT快三我 们 对矩阵$\mathbf{X}$的任意一个位置的$X_{ij}$求导,如下:$$\frac{\partial \mathbf{a}^T\mathbf{X}\mathbf{b}}{\partial X_{ij}} =  \frac{\partial \sum\limits_{p=1}^m\sum\limits_{q=1}^n a_pA_{pq}b_q}{\partial X_{ij}} =  \frac{\partial  a_iA_{ij}b_j}{\partial X_{ij}} = a_ib_j$$

    即求导结果在$(i.j)$位置的求导结果是$\mathbf{a}$向量第i个分量和$\mathbf{b}$第j个分量的乘积,将所有的位置的求导结果排列成一个$m \times n$的矩阵,即为$ab^T$,这样最后的求导结果为:$$\frac{\partial \mathbf{a}^T\mathbf{X}\mathbf{b}}{\partial \mathbf{X}} = ab^T$$

    简单的求导的确不难,但是如果是比较复杂的标量对矩阵求导,比如$y=\mathbf{a}^Texp(\mathbf{X}\mathbf{b})$,对任意标量求导容易,排列起来还是蛮麻烦的,也就是TT快三TT快三我 们 遇到了和标量对向量求导一样的问题,定义法比较适合解决简单的问题,复杂的求导需要更简便的TT快三方法 。这个TT快三方法 TT快三TT快三我 们 在下一篇来讲。

    同时,标量对矩阵求导也有和第二节对向量求导类似的基本法则,这里就不累述了。

4.用定义法求解向量对向量求导

    这里TT快三TT快三我 们 也同样给出向量对向量求导的定义法的具体例子。

    先来一个简单的例子: $\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_i}\mathbf{x}}{\partial \mathbf{x_j}} = \frac{\partial A_{ij}x_j}{\partial \mathbf{x_j}}= A_{ij}$$

    可见矩阵 $\mathbf{A}$的第i行和向量的内积对向量的第j分量求导的结果就是矩阵 $\mathbf{A}$的$(i,j)$位置的值。排列起来就是一个矩阵了,由于TT快三TT快三我 们 分子布局,所以排列出的结果是$ \mathbf{A}$,而不是 $\mathbf{A}^T$

5. 定义法矩阵向量求导的局限

    使用定义法虽然已经求出一些简单的向量矩阵求导的结果,但是对于复杂的求导式子,则中间运算会很复杂,同时求导出的结果排列也是很头痛的。下一篇TT快三TT快三我 们 讨论使使用矩阵微分和迹函数的TT快三方法 来求解矩阵向量求导。    

 

(欢迎转载,转载请注明出处。欢迎沟通交流: liujianping-ok@163.com) 

posted @ 2019-04-26 18:42 刘建平Pinard 阅读(...) 评论(...) 编辑 收藏