矩阵导数/矩阵梯度的数学推导 – 高铭骏 您所在的位置:网站首页 三维矩阵求解公式是什么 矩阵导数/矩阵梯度的数学推导 – 高铭骏

矩阵导数/矩阵梯度的数学推导 – 高铭骏

2024-05-19 15:23| 来源: 网络整理| 查看: 265

计算矩阵的梯度的问题在统计学、机器学习里面有重要意义。常见的例子如,考虑y=f(W\boldsymbol h+\boldsymbol b),这时要使用梯度方法进行优化,就计算对W的梯度。

本文已修改为更适合读者学习查阅的文章。对读者的知识基础要求为多元函数的微积分以及线性代数。

其它文章推荐:机器学习,深度学习中的SGD,Adam

符号说明

本人采用的符号里(见 此页面),从\mathbb R^n映到\mathbb R^m的映射的导数(Jacobi矩阵)维度是m\times n的;梯度则遵守不同的维度约定,即梯度和自变量有相同的维度,例如函数对矩阵的梯度的维度等于矩阵的维度,对于映射对向量的梯度,它应是n\times m的。就是说,它们互为转置。

(记号问题当然并非关键,所以很多人有时候为了方便也会混用两种维度,一个记号表示n\times m还是m\times n会按需选择,其实也无伤大雅)

(这种记法有人称为Jacobian formulation或者分子布局(numerator layout),而反之则称为Hessian formulation或者分母布局(dominator layout))

Contents

1 矩阵求导的基础1.1 推导工具1.2 加法的求导1.3 复合法则1.4 乘法的求导1.5 线性变换的求导1.6 二次型函数的求导2 矩阵求导2.1 $y$对$X$求导2.2 $Y$对$x$求导2.3 重要的复合求导3 简单应用实例4 探索历程4.1 乘向量时的情形4.2 矩阵相乘时的情形

矩阵求导的基础

考虑到这部分内容在一般的微积分和线性代数材料中不常涉及,为照顾没有这部分预备知识的读者先简要回顾一下相关内容。

(公式显示提示:如果某处公式发现有重复渲染,刷新一下页面即可:P)

m维向量\boldsymbol y对n维向量\boldsymbol x的导数定义为m\times n维的Jacobi矩阵: \frac{\partial\boldsymbol y}{\partial\boldsymbol x}=\begin{bmatrix} \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 _ m}{\partial x _ 1}&\frac{\partial y _ m}{\partial x _ 2}&\cdots&\frac{\partial y _ m}{\partial x _ n}\end{bmatrix}.

涉及矩阵(设维度为m\times n)的求导时,按如下记法: \frac{\partial y}{\partial X}=\begin{bmatrix} \frac{\partial y}{\partial x _ {11}}&\frac{\partial y}{\partial x _ {21}}&\cdots&\frac{\partial y}{\partial x _ {m1}}\\ \frac{\partial y}{\partial x _ {12}}&\frac{\partial y}{\partial x _ {22}}&\cdots&\frac{\partial y}{\partial x _ {m2}} \\ \vdots&\vdots&\ddots&\vdots\\ \frac{\partial y}{\partial x _ {1n}}&\frac{\partial y}{\partial x _ {2n}}&\cdots&\frac{\partial y}{\partial x _ {mn}}\end{bmatrix},\quad \frac{\partial Y}{\partial x}=\begin{bmatrix} \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 _ {m1}}{\partial x}&\frac{\partial y _ {m2}}{\partial x}&\cdots&\frac{\partial y _ {mn}}{\partial x}\end{bmatrix}.

推导工具

为了能方便地进行推导,磨刀不误砍柴工,引入一些工具是利大于弊的。

首先是矩阵的拉直。我们在微积分的学习中接触更多的对向量的处理,所以把矩阵拉直为向量就能够有更多的机会利用已有知识解决问题。矩阵X的拉直向量记为X^\mathsf V,也有记为\operatorname{Vec}(X)的。它表示mn维向量,把X的第二列、第三列一直到第n列依次拼接在第一列的下方即可得到。例如, X=\begin{bmatrix}1&2\\3&4\end{bmatrix},\quad X^\mathsf V=\begin{bmatrix}1\\3\\2\\4\end{bmatrix}. 然后是矩阵的Kronecker乘积。对于A\in\mathbb R^{m\times n},B\in\mathbb R^{p\times q},A,B的Kronecker乘积A\otimes B\in\mathbb R^{mp\times nq},定义为一个分块矩阵: {A} \otimes {B}=\begin{bmatrix} a _ {11} {B}&\cdots&a _ {1 n} {B} \\ \vdots&\ddots&\vdots \\ a _ {m 1} {B}&\cdots&\boldsymbol{a} _ {m n} {B} \end{bmatrix}.

例子: \begin{bmatrix} 1&2 \\ 3&4 \end{bmatrix} \otimes\begin{bmatrix} 0&5 \\ 6&7 \end{bmatrix}=\begin{bmatrix} 1\begin{bmatrix} 0&5 \\ 6&7 \end{bmatrix}&2\begin{bmatrix} 0&5 \\ 6&7 \end{bmatrix} \\ 3\begin{bmatrix} 0&5 \\ 6&7 \end{bmatrix}&4\begin{bmatrix} 0&5 \\ 6&7 \end{bmatrix} \end{bmatrix}=\begin{bmatrix} 0&5&0&10 \\ 6&7&12&14 \\ 0&15&0&20 \\ 18&21&24&28 \end{bmatrix} .

这种运算可以验证有很多简洁的性质,我们要用的为以下两个: 引理:(AXB)^\mathsf V=(B^\mathsf T\otimes A)\,X^\mathsf V. 引理:(A\otimes B)^\mathsf T=A^\mathsf T\otimes B^\mathsf T. 可以直截了当地验证。

下面开始总结求导相关的一些简单的性质。

加法的求导

对于加法的求导,显然有 \frac{\partial (\boldsymbol u+\boldsymbol v)}{\partial\boldsymbol x}=\frac{\partial\boldsymbol u}{\partial \boldsymbol x}+\frac{\partial\boldsymbol v}{\partial\boldsymbol x}.

复合法则

熟知\frac{\mathrm d}{\mathrm dx}f(u(x))=f^{\prime}(u)u^{\prime}(x),类似地,微分的复合法则可以表示成 \frac{\partial\boldsymbol f(\boldsymbol u)}{\partial\boldsymbol x}=\frac{\partial\boldsymbol f}{\partial \boldsymbol u}\frac{\partial \boldsymbol u}{\partial \boldsymbol x}.

乘法的求导

熟知(fg)^{\prime}=f^{\prime}g+fg^{\prime},类似地, \frac{\partial\, \boldsymbol u^\mathsf T\boldsymbol v}{\partial\boldsymbol x}=\boldsymbol u^\mathsf T\frac{\partial\boldsymbol v}{\partial\boldsymbol x}+\boldsymbol v^\mathsf T\frac{\partial\boldsymbol u}{\partial\boldsymbol x}.

如果是对向量求导,则是 \frac{\partial\, v\boldsymbol u}{\partial\boldsymbol x}=v\frac{\partial\boldsymbol u}{\partial\boldsymbol x}+\boldsymbol u\frac{\partial v}{\partial\boldsymbol x}. 证明:先来对前者进行推导,采用导数的定义,\boldsymbol{u}(\boldsymbol x+\boldsymbol h)= \boldsymbol{u}(\boldsymbol x)+\frac{\partial \boldsymbol{u}}{\partial\boldsymbol x}\boldsymbol h+\boldsymbol r _ 1(\boldsymbol h),\boldsymbol{v}(\boldsymbol x+\boldsymbol h)= \boldsymbol{v}(\boldsymbol x)+\frac{\partial \boldsymbol{v}}{\partial\boldsymbol x}\boldsymbol h+\boldsymbol r _ 2(\boldsymbol h),那么\boldsymbol r _ 1,\boldsymbol r _ 2就满足\boldsymbol r _ 1,\boldsymbol r _ 2\to\boldsymbol 0\, (\boldsymbol h\to\boldsymbol 0),于是 \begin{aligned}\boldsymbol{u}(\boldsymbol x+\boldsymbol h)^\mathsf T \boldsymbol{v}(\boldsymbol x+\boldsymbol h)&=\Big( \boldsymbol{u}(\boldsymbol x)+\frac{\partial \boldsymbol{u}}{\partial\boldsymbol x}\boldsymbol h+\boldsymbol r _ 1(\boldsymbol h)\Big)^\mathsf T\Big( \boldsymbol{v}(\boldsymbol x)+\frac{\partial \boldsymbol{v}}{\partial\boldsymbol x}\boldsymbol h+\boldsymbol r _ 2(\boldsymbol h)\Big)\\&= \boldsymbol{u}(\boldsymbol x) \boldsymbol{v}(\boldsymbol x)+\Big(\boldsymbol{u}(\boldsymbol x)^\mathsf T\frac{\partial \boldsymbol{v}}{\partial\boldsymbol x}+\boldsymbol{v}(\boldsymbol x)^\mathsf T\frac{\partial \boldsymbol{u}}{\partial\boldsymbol x}\Big)\boldsymbol h+\boldsymbol r(\boldsymbol h).\end{aligned}

r(\boldsymbol h)满足r(\boldsymbol h)\to\boldsymbol 0\, (\boldsymbol h\to\boldsymbol 0),因而由导数定义即证。

后者可以用同样的手段证明。 \begin{aligned} v(\boldsymbol x+\boldsymbol h)\boldsymbol u(\boldsymbol x+\boldsymbol h)&=\Big( v(\boldsymbol x)+\frac{\partial v}{\partial\boldsymbol x}\boldsymbol h+ r _ 2(\boldsymbol h)\Big)\Big(\boldsymbol u(\boldsymbol x)+\frac{\partial\boldsymbol u}{\partial\boldsymbol x}\boldsymbol h+\boldsymbol r _ 1(\boldsymbol h)\Big)\\ &=v(\boldsymbol x)\boldsymbol u(\boldsymbol x)+\Big(v(x)\frac{\partial\boldsymbol u}{\partial\boldsymbol x}+\boldsymbol u(\boldsymbol x)\frac{\partial v}{\partial\boldsymbol x}\Big)\boldsymbol h+\boldsymbol r(\boldsymbol h). \end{aligned}

线性变换的求导

由乘法求导立即得到:(显然\boldsymbol x对\boldsymbol x求导得到单位矩阵) \frac{\partial\, \boldsymbol a^\mathsf T\boldsymbol x}{\partial\boldsymbol x}=\boldsymbol a^\mathsf T,\quad\frac{\partial\, \boldsymbol x^\mathsf T\boldsymbol a}{\partial\boldsymbol x}=\boldsymbol a^\mathsf T.

其实这么推导还是略显迂回。直接的做法是看成下面的特例。

将向量\boldsymbol a换成矩阵A,可以证明: \frac{\partial\, A\boldsymbol x}{\partial\boldsymbol x}=A,\quad \frac{\partial\, \boldsymbol x^\mathsf TA}{\partial\boldsymbol x}:=\frac{\partial\, A^\mathsf T\boldsymbol x}{\partial\boldsymbol x}=A^\mathsf T.

注意到A(\boldsymbol x+\boldsymbol h)=A\boldsymbol x+A\boldsymbol h再由导数定义即证。A只有一行时即为上述特殊情况。

二次型函数的求导

由乘法求导, \frac{\partial}{\partial\boldsymbol x}\,\boldsymbol x^\mathsf TA\boldsymbol x=\boldsymbol x^\mathsf T(A+A^\mathsf T).

这是因为左边等于\frac{\partial}{\partial\boldsymbol x}\boldsymbol x^\mathsf T(A\boldsymbol x)=\boldsymbol x^\mathsf TA+(A\boldsymbol x)^\mathsf T=\boldsymbol x^\mathsf T(A+A^\mathsf T);特别地,对对称矩阵A, \frac{\partial}{\partial\boldsymbol x}\,\boldsymbol x^\mathsf TA\boldsymbol x=2\boldsymbol x^\mathsf TA. 如果再求一次导,那么 \frac{\partial^2}{\partial\boldsymbol x\partial\boldsymbol x^\mathsf T}\, \boldsymbol x^\mathsf TA\boldsymbol x=A+A^\mathsf T,\quad(A^\mathsf T=A)\implies\frac{\partial^2}{\partial\boldsymbol x\partial\boldsymbol x^\mathsf T}\, \boldsymbol x^\mathsf TA\boldsymbol x=2A. 由乘法求导还不难得知 \frac{\partial}{\partial\boldsymbol x}\, \boldsymbol u^\mathsf TA\boldsymbol v=\boldsymbol u^\mathsf TA\frac{\partial\boldsymbol v}{\partial\boldsymbol x}+\boldsymbol v^\mathsf TA^\mathsf T\frac{\partial\boldsymbol u}{\partial\boldsymbol x}.

矩阵求导 $y$对$X$求导

这里我们先考虑\frac{\partial y}{\partial X}型的求导。

首先一些简单性质是可以直接迁移过来的。

矩阵求导1: \begin{gathered}\frac{\partial(au+v)}{\partial X}=a\frac{\partial u}{\partial X}+\frac{\partial v}{\partial X},\\\frac{\partial uv}{\partial X}=u\frac{\partial v}{\partial X}+v\frac{\partial u}{\partial X},\\\frac{\partial f(u)}{\partial X}=\frac{\partial f}{\partial u}\frac{\partial u}{\partial X},\\\end{gathered} 下面对一些常见情形进行计算。

矩阵求导2: \frac{\partial\, \boldsymbol a^\mathsf TX\boldsymbol b}{\partial X}=\boldsymbol{ba}^\mathsf T,\quad \frac{\partial\, \boldsymbol a^\mathsf TX^\mathsf T\boldsymbol b}{\partial X}=\boldsymbol{ab}^\mathsf T.

证明:注意到I _ 1=(1)为一阶单位矩阵, \frac{\partial\, \boldsymbol a^\mathsf TX\boldsymbol b}{\partial X^\mathsf V}=\frac{\partial}{\partial X^\mathsf V}(\boldsymbol b^\mathsf T\otimes \boldsymbol a^\mathsf T)\, X^\mathsf V=\boldsymbol b^\mathsf T\otimes\boldsymbol a^\mathsf T=((\boldsymbol b\otimes\boldsymbol a)I _ {1}^\mathsf V)^\mathsf T=((\boldsymbol a\boldsymbol b^\mathsf T)^\mathsf V)^\mathsf T.

这表明\nabla _ {X}\boldsymbol a^\mathsf TX\boldsymbol b=\boldsymbol {ab}^\mathsf T,取转置就得到了\frac{\partial\, \boldsymbol a^\mathsf TX\boldsymbol b}{\partial X}=\boldsymbol{ba}^\mathsf T;对于另一式,只需注意到\boldsymbol a^\mathsf TX^\mathsf T\boldsymbol b=\boldsymbol b^\mathsf TX\boldsymbol a再利用前面一式即可。

另证:上面的证明是自己给出的,但后来本人也查阅到了利用矩阵的迹和微分形式来证明的方法,认为有必要收录于此。迹在线性代数里已经有所介绍,具有性质\mathsf {tr}(AB)=\mathsf {tr}(BA),这个性质是使得我们对矩阵导数的推导能够有效简化的关键。矩阵X的微分形式定义为矩阵\mathrm dX=(\mathrm dx _ {ij}) _ {m\times n}。设y是X的函数,其微分形式定义为 \mathrm dy=\sum _ {i=1}^m\sum _ {j=1}^n\frac{\partial y}{\partial x _ {ij}}\mathrm dx _ {ij}.

观察此式发现恰有 \mathrm dy=\mathsf{tr}\Big(\frac{\partial y}{\partial X}\mathrm dX\Big). 当y=\boldsymbol a^\mathsf TX\boldsymbol b,代入定义式可以得到\mathrm dy=\boldsymbol a^\mathsf T(\mathrm dX)\boldsymbol b,对右边利用迹的性质,得到 \mathrm dy=\mathsf{tr}(\boldsymbol {ba}^\mathsf T\mathrm dX).

观察得到的已有结果,必须\frac{\partial y}{\partial X}=\boldsymbol{ba}^\mathsf T,这就完成了证明。

矩阵求导3:下面的公式只是后面的特例,可以忽略。 \begin{gathered}\frac{\partial }{\partial X}(X\boldsymbol a+\boldsymbol b)^\mathsf TC(X\boldsymbol a+\boldsymbol b)=\boldsymbol a(X\boldsymbol a+\boldsymbol b)^\mathsf T(C+C^\mathsf T),\\\frac{\partial}{\partial X}(X\boldsymbol a)^\mathsf TC(X\boldsymbol b)=(\boldsymbol {ba}^\mathsf T)^\mathsf TX^\mathsf TC^\mathsf T+\boldsymbol {ba}^\mathsf TX^\mathsf TC.\end{gathered}

证明:用微分形式来证明。这里需要微分形式的新的性质:\mathrm d(XY)=(\mathrm dX)Y+X(\mathrm dY),其正确性可自行验证;另外我们需要(\mathrm dX)^\mathsf TC(\mathrm dX)=0,这不能只通过前面的微分形式定义得到,但更多细节这里就不再给出了。现在有\mathrm d[(X\boldsymbol a+\boldsymbol b)^\mathsf TC(X\boldsymbol a+\boldsymbol b)]=((\mathrm dX)\boldsymbol a)^\mathsf TC(X\boldsymbol a+\boldsymbol b)+(X\boldsymbol a+\boldsymbol b)^\mathsf TC(\mathrm dX)\boldsymbol a,右边取迹并利用矩阵转置后迹不变这一性质,得\mathsf{tr}[(X\boldsymbol a+\boldsymbol b)^\mathsf T(C+C^\mathsf T)(\mathrm dX)\boldsymbol a]=\mathsf{tr}[\boldsymbol a(X\boldsymbol a+\boldsymbol b)^\mathsf T(C+C^\mathsf T)\mathrm dX],这就证明了第一条式子。

然后是第二条。\mathrm d[(X\boldsymbol a)^\mathsf TC(X\boldsymbol b)]=((\mathrm dX)\boldsymbol a)^\mathsf TC(X\boldsymbol b)+(X\boldsymbol a)^\mathsf TC((\mathrm dX)\boldsymbol b),取迹:\mathsf{tr}[\boldsymbol a(CX\boldsymbol b)^\mathsf T\mathrm dX+\boldsymbol {ba}^\mathsf TX^\mathsf TC\mathrm dX],这就完成了证明。

矩阵求导4:引入了迹的考虑后,可以有一系列迹的矩阵导数。摘抄一部分如下(证明非常简单,和上面两式完全类似,所以省略)。 \begin{gathered}\frac{\partial}{\partial X}\mathsf{tr}(aU+V)=a\frac{\partial\, \mathsf{tr}(U)}{\partial X}+\frac{\partial\, \mathsf{tr} (V)}{\partial X},\\\frac{\partial\, \mathsf {tr}(X^\mathsf TAX)}{\partial X}=X^\mathsf T(A+A^\mathsf T),\\\frac{\partial\, \mathsf{tr}(AXB)}{\partial X}=BA,\\\frac{\partial\, \mathsf {tr}(AXBX^\mathsf TC)}{\partial X}=BX^\mathsf TCA+(CAXB)^\mathsf T.\end{gathered}

$Y$对$x$求导

现在考虑\frac{\partial Y}{\partial x}型的求导。这种不太常用,性质也较为简单。

矩阵求导5: \begin{gathered} \frac{\partial(aU+V)}{\partial x}=a\frac{\partial U}{\partial x}+\frac{\partial V}{\partial x},\\ \frac{\partial (AUB)}{\partial x}=A\frac{\partial U}{\partial x}B,\\ \frac{\partial (UV)}{\partial x}=U\frac{\partial V}{\partial x}+\frac{\partial U}{\partial x}V. \end{gathered}

第三式中的矩阵乘积可换为Kronecker积U\otimes V或者U\odot V。

重要的复合求导

前面给出了一个简单的复合求导情形,就是\frac{\partial f(u)}{\partial X}=\frac{\partial f}{\partial u}\frac{\partial u}{\partial X},但更为重要的是u为向量或者矩阵的情形。但是这时候我们并没有合适的u对X的导数的表示。

我们熟悉的是对向量的微积分,还是考虑把U,X拉直,那么 \frac{\partial f(U)}{\partial X^\mathsf V}=\frac{\partial f(U)}{\partial U^\mathsf V}\frac{\partial U^\mathsf V}{\partial X^\mathsf V}.

对于梯度和拉直,有一定的互换便利: \nabla _ {U^\mathsf V}f(U)=[\nabla _ Uf(U)]^\mathsf V,

所以这次写为梯度的形式,注意到梯度和导数互为转置,我们得到 \nabla _ {X^\mathsf V} f(U)=\Big(\frac{\partial U^\mathsf V}{\partial X^\mathsf V}\Big)^\mathsf T\nabla _ {U^\mathsf V}f(U).

如果U是X的较简单的函数,我们就有希望得到有用的结果。

先考察线性函数U=AXB的情形。此时U^\mathsf V=(B^\mathsf T\otimes A)\, X^\mathsf V,求导得到\frac{\partial U^\mathsf V}{\partial X^\mathsf V}=B^\mathsf T\otimes A,现在 \begin{aligned}\nabla _ {X^\mathsf V} f(U)&=(B^\mathsf T\otimes A)^\mathsf T\nabla _ {U^\mathsf V}f(U)=(B\otimes A^\mathsf T)\, [\nabla _ {U}f(U)]^\mathsf V\\ {}[\nabla _ Xf(U)]^\mathsf V&=[A^\mathsf T\nabla _ {U}f(U)B^\mathsf T]^\mathsf V\\\nabla _ Xf(U)&=A^\mathsf T\nabla _ {U}f(U)B^\mathsf T.\end{aligned}

最后一步的成立用到了两矩阵的维数与X相同的条件。于是我们得到了X的线性函数相关的复合法则:

矩阵求导6:设U=AXB,则 \frac{\partial f(U)}{\partial X}=B\frac{\partial f(U)}{\partial U}A. 这里再提供用微分形式证明的方法。令y=f(U),我们要用到下面的等式: \mathrm dy=\mathsf{tr}\Big(\frac{\partial y}{\partial U}\mathrm dU\Big). 必须指出,现在U是中间变量,我们前面只指出了自变量时的情形。这个等式成立依赖的是一阶微分形式的不变性。当然,欢迎自行验证其正确性。 \mathrm dy=\mathsf{tr}\Big(\frac{\partial y}{\partial U}A(\mathrm d X)B\Big)=\mathsf{tr}\Big(B\frac{\partial y}{\partial U}A\, \mathrm d X\Big).

这就完成了证明。可见,有成熟的工具能使我们事半功倍。这个简短的证明背后,用到的有:迹对矩阵乘积的轮换性质、一阶微分形式的不变性、微分形式的运算、微分形式的矩阵导数表示。而在前面的方法中,用到的是拉直向量和Kronecker积的性质。

还有一种情形是U是X的二次型函数。

矩阵求导7:设y=f(U),

当U=X^\mathsf TAX时, \frac{\partial y}{\partial X}=\frac{\partial y}{\partial U}\vphantom{\big)}^\mathsf TX^\mathsf TA^\mathsf T+\frac{\partial y}{\partial U}X^\mathsf TA.

当U=XAX^\mathsf T时, \frac{\partial y}{\partial X}=AX^\mathsf T\frac{\partial y}{\partial U}+A^\mathsf TX^\mathsf T\frac{\partial f}{\partial U}\vphantom{\big)}^\mathsf T.

证明:仍用微分形式。对第一种, \mathrm dy=\mathsf{tr}\Big(\frac{\partial y}{\partial U}[(\mathrm dX)^\mathsf TAX+X^\mathsf TA\, (\mathrm dX)]\Big)=\mathsf{tr}\Big(\frac{\partial y}{\partial U}X^\mathsf TA^\mathsf T\, \mathrm dX+\frac{\partial y}{\partial U}X^\mathsf TA\, \mathrm dX\Big).

第二种通过第一种变换得到。令T=X^\mathsf T,则\frac{\partial y}{\partial T}=\frac{\partial y}{\partial X}\vphantom{)}^\mathsf T=\frac{\partial y}{\partial U}\vphantom{\big)}^\mathsf TT^\mathsf TA^\mathsf T+\frac{\partial y}{\partial U}T^\mathsf TA,于是转置后得到\frac{\partial y}{\partial X}=AX^\mathsf T\frac{\partial y}{\partial U}+A^\mathsf TX^\mathsf T\frac{\partial f}{\partial U}\vphantom{\big)}^\mathsf T.

下面用得到的复合求导的结果推导一些例子。

例(矩阵求导2):前面得到\frac{\partial\, \boldsymbol a^\mathsf TX\boldsymbol b}{\partial X}=\boldsymbol{ba}^\mathsf T以及\frac{\partial\, \boldsymbol a^\mathsf TX^\mathsf T\boldsymbol b}{\partial X}=\boldsymbol{ab}^\mathsf T;这其实是这里的特例,在U=AXB中令A=\boldsymbol a^\mathsf T及B=\boldsymbol b,函数为f(U)=U即可得到。

例(矩阵求导3):我们用复合求导推导 \begin{gathered}\frac{\partial }{\partial X}(X\boldsymbol a+\boldsymbol b)^\mathsf TC(X\boldsymbol a+\boldsymbol b)=\boldsymbol a(X\boldsymbol a+\boldsymbol b)^\mathsf T(C+C^\mathsf T),\\\frac{\partial}{\partial X}(X\boldsymbol a)^\mathsf TC(X\boldsymbol b)=(\boldsymbol {ba}^\mathsf T)^\mathsf TX^\mathsf TC^\mathsf T+\boldsymbol {ba}^\mathsf TX^\mathsf TC.\end{gathered}

令U=X\boldsymbol a+\boldsymbol b,函数为y=U^\mathsf TCU,则\frac{\partial y}{\partial X}=\boldsymbol a\frac{\partial y}{\partial U}=\boldsymbol aU^\mathsf T(C+C^\mathsf T);另一方面,令U=X^\mathsf TCX,函数为y=\boldsymbol a^\mathsf TU\boldsymbol b,则\frac{\partial y}{\partial X}=(\boldsymbol {ba}^\mathsf T)^\mathsf TX^\mathsf TC^\mathsf T+\boldsymbol {ba}^\mathsf TX^\mathsf TC,这就完成了推导。

简单应用实例

假设我们有模型y=f(W\boldsymbol x+\boldsymbol b),我们可以直接考虑y=f(W\boldsymbol x)的情况。因为截距项我们总可以看作是多了一维输入总是1的x的模型的对应系数。即系数矩阵是多了一列的(W,\boldsymbol b),输入是(\boldsymbol x^\mathsf T,1),这时把新的系数阵和输入重新记作W,\boldsymbol x即可。

例:在f(W\boldsymbol x)中对W求导,令\boldsymbol y=W\boldsymbol x,由复合求导6,结果为 \frac{\partial f}{\partial W}=\boldsymbol x\frac{\partial f}{\partial\boldsymbol y}.

例:在f(WX)中分别对W,X求导,令Y=WX,由复合求导6,结果为 \frac{\partial f}{\partial W}=X\frac{\partial f}{\partial Y},\quad\frac{\partial f}{\partial X}=\frac{\partial f}{\partial Y}W.

例:多元线性回归。模型是\hat{\boldsymbol y}=W\boldsymbol x,则预测数据表示为\hat Y=WX;我们要最小化L=\|Y-\hat Y\| _ F^2=\|Y-WX\| _ F^2,这里的范数表示矩阵拉直向量的范数。令U=WX-Y, \frac{\partial L}{\partial W}=\frac{\partial\, \mathsf {tr}{(U^\mathsf TU)}}{\partial W}=X\cdot 2U^\mathsf T=2X(WX-Y)^\mathsf T.

当XX^\mathsf T可逆,令导数为零得到\hat W=YX^\mathsf T(XX^\mathsf T)^{-1},此即我们需要的回归系数。

例:多元岭回归。和上例一样,只不过这次损失函数变为了L _ \lambda=L+\lambda\|W\| _ F^2,此时 \frac{\partial L _ \lambda}{\partial W}=2X(WX-Y)^\mathsf T+\lambda\cdot2W^\mathsf T,

令导数为零得到\hat W=YX^\mathsf T(XX^\mathsf T+\lambda I)^{-1},此即岭回归系数。

探索历程 乘向量时的情形

设\boldsymbol y=A\boldsymbol x,z=f(\boldsymbol y),其中A\in\mathbb R^{m\times n},\boldsymbol x\in\mathbb R^n(下面还将拓展为矩阵X)。熟知\frac{\partial\boldsymbol y}{\partial\boldsymbol x}=A,那么 \frac{\partial z}{\partial \boldsymbol x}=\frac{\partial z}{\partial\boldsymbol y}\frac{\partial\boldsymbol y}{\partial\boldsymbol x}=f^\prime(\boldsymbol y)A. 于是\nabla_\boldsymbol x z=A^\mathsf T \nabla _ \boldsymbol y z,那么\nabla_A z是什么呢?下面证明: \nabla_A z=(\nabla_\boldsymbol y z)\boldsymbol x^\mathsf T. 可以写成分量形式进行推导后再统一起来,但下面采用更直接的推导。由于对向量求导是方便的,我们需要知道下面的引理:

引理:(AXB)^\mathsf V=(B^\mathsf T\otimes A)\,X^\mathsf V.

引理:(A\otimes B)^\mathsf T=A^\mathsf T\otimes B^\mathsf T.

引理可直接了当地验证。利用该引理,可得 \boldsymbol y=(A\boldsymbol x)^\mathsf V=(\boldsymbol x^\mathsf T\otimes I_m)\,A^\mathsf V.

这样就可以看出\frac{\partial \boldsymbol y}{\partial\boldsymbol A^\mathsf V}=\boldsymbol x^\mathsf T\otimes I_m,从而 \frac{\partial z}{\partial A^\mathsf V}=\frac{\partial z}{\partial\boldsymbol y}\frac{\partial\boldsymbol y}{\partial A^\mathsf V}=f^\prime(\boldsymbol y)(\boldsymbol x^\mathsf T\otimes I_m),

所以 \nabla_{A^\mathsf V}z=(\boldsymbol x\otimes I_m)f^\prime(\boldsymbol y)^\mathsf T=(f^\prime(\boldsymbol y)^\mathsf T\boldsymbol x^\mathsf T)^\mathsf V\Longrightarrow\nabla_A z=(\nabla_\boldsymbol y z)\boldsymbol x^\mathsf T.

矩阵相乘时的情形

可以看到,上面的方式在\boldsymbol x换为矩阵X时应该适用(此时要写成分量形式推导就更繁琐了),猜测:\nabla_A z=(\nabla_\boldsymbol y z) X^\mathsf T.

设z=f(Y),Y=AX,其中A\in\mathbb R^{p\times m},X\in\mathbb R^{m\times n},可以证明: \nabla_A z=(\nabla_ Y z) X^\mathsf T,\quad \nabla_X z=A^\mathsf T(\nabla_ Y z). 证明:将Y拉直,有Y^\mathsf V=(X^\mathsf T\otimes I_p)\, A^\mathsf V,故\frac{\partial Y^\mathsf V}{\partial A^\mathsf V}=X^\mathsf T\otimes I_p.

注意到(\nabla_Y z)^\mathsf V=\smash{\frac{\partial z}{\partial Y^{\mathsf V}}}^\mathsf T,有 \frac{\partial z}{\partial A^\mathsf V}=\frac{\partial z}{\partial Y^\mathsf V}\frac{\partial Y^\mathsf V}{\partial A^\mathsf V}=((\nabla_Y z)^\mathsf V)^\mathsf T (X^\mathsf T\otimes I_p).

得到 (\nabla_A z)^\mathsf V=(X\otimes I_p)(\nabla_Y z)^\mathsf V=((\nabla_Y z)X^\mathsf T)^\mathsf V. 对比维度即知 \nabla_A z=(\nabla_Y z)X^\mathsf T. 另一方面,将Y的拉直以另一种方式表示,Y^\mathsf V=(I_n\otimes A)\,X^\mathsf V,得\frac{\partial Y^\mathsf V}{\partial X^\mathsf V}=I_n\otimes A. \frac{\partial z}{\partial X^\mathsf V}=\frac{\partial z}{\partial Y^\mathsf V}\frac{\partial Y^\mathsf V}{\partial X^\mathsf V}=((\nabla_Y z)^\mathsf V)^\mathsf T (I_n\otimes A).

就有 (\nabla_X z)^\mathsf V=(I_n\otimes A^\mathsf T)(\nabla_Y z)^\mathsf V=(A^\mathsf T(\nabla_Y z))^\mathsf V.

可推出 \nabla_X z=A^\mathsf T(\nabla_Y z). 证毕。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有