矩阵微分基础(一)

这篇文章将介绍向量和矩阵微分相关基础,他是它将是后面学习的基础。

一、梯度

假设函数\(f:R^{m \times n} \mapsto R\),它的函数变量为一个大小为\(m \times n\)的矩阵,函数值为实数,则​\(f(A)\)关于​\(A\)的梯度是一个由偏导数组成的矩阵

\[\nabla_Af(A) \in R^{m \times n} = \left [ \begin{matrix} \frac{\partial f}{\partial A_{11}} & \frac{\partial f}{\partial A_{12}} & ... &\frac{\partial f}{\partial A_{1n}} \\ \frac{\partial f}{\partial A_{21}} & \frac{\partial f}{\partial A_{22}} & ... & \frac{\partial f}{\partial A_{2n}}\\ \vdots & \vdots & \vdots &\vdots & \\ \frac{\partial f}{\partial A_{m1}} & \frac{\partial f}{\partial A_{m2} } &... & \frac{\partial f}{\partial A_{mn}} \end{matrix} \right ] \]

请注意,$\nabla_Af(A) \(和\)A\(的大小总是一样的。特别的,当\)A\(是一个向量\)x \in R^n$时,则

\[\nabla_xf(x) \in R^{n} = \left [ \begin{matrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{matrix} \right ] \]

特别需要注意的是:只有当函数\(f\)是实数值时,它的梯度才会被定义,也就是说\(f\)必须返回一个标量值。例如我们不能求\(Ax\)的梯度(\(A\)\(m\times n\)矩阵,\(x\)\(n\times 1\)向量),因为\(Ax\)结果是一个向量。由偏导数性质很容易得到下面事实

  • \(\nabla_x(f(x)+g(x))=\nabla_xf(x)+\nabla_xg(x)\)
  • 对任意的\(t \in R\)\(\nabla_xtf(x)=t\nabla_xf(x)\)

原则上,梯度是向量函数偏微分的扩展,但是在现实使用中,由于符号的原因可能会变得很棘手。下面来看这样一个例子,设\(f(z)=z^Tz,z\in R^n\),显然\(\nabla_zf(z)=2z\),现在我们考虑下面式子

\[\nabla f(Ax) \]

我们该如何解释这个表达式呢?在这里至少有2中解释。

  • 第一种解释。对比第一个式子\(\nabla_zf(z)=2z\)中,我们认为上面式子是求点\(Ax\)处的梯度,这样结果是\(\nabla f(Ax)=2Ax\).
  • 第二种解释。我们认为上面\(f(Ax)=g(x)\)是关于向量\(x\)的函数,所以是求点\(x\)处的梯度,\(\nabla f(Ax)=\nabla g(x)\)

上面两个解释的结果完全不同。根本原因是没有明确我们到底对谁进行微分,第一种解释其实对应为

\[\nabla_{Ax}f(Ax) \]

第二种解释对应为

\[\nabla_xf(Ax) \]

所以在梯度表达中,符号一定要清楚,避免产生歧义。

二、海森(Hessian)矩阵

设函数\(f:R^n \mapsto R\),它的函数变量是一个\(n\)维向量\(x\),则\(Hessian\)矩阵是\(f\)\(x\)二阶偏导数组成的矩阵

\[\nabla_x^2f(A) \in R^{n \times n} = \left [ \begin{matrix} \frac{\partial f}{\partial^2 x_1} & \frac{\partial f}{\partial x_1\partial x_2} & ... &\frac{\partial f}{\partial x_1\partial x_n} \\ \frac{\partial f}{\partial x_2\partial x_1} & \frac{\partial f}{\partial^2 x_2} & ... & \frac{\partial f}{\partial x_2\partial x_n}\\ \vdots & \vdots & \vdots &\vdots & \\ \frac{\partial f}{\partial x_n\partial x_1} & \frac{\partial f}{\partial x_n\partial x_2} & ... &\frac{\partial f}{\partial^2 x_n} \\ \end{matrix} \right ] \]

\(\nabla^2_xf(x) \in R^{n\times n}\),注意\(Hessian\)矩阵是一个对称矩阵

\[\nabla_x^2f(A) _{ij}=\nabla_x^2f(A)_{ji} \]

和梯度一样,\(Hessian\)矩阵只在函数\(f\)函数值是实数时才被定义。梯度可以看作向量函数的一阶导数,\(Hessian\)矩阵看作是向量函数的二阶导数。虽然这样的直觉没有错,但是还是需要注意下面的问题。

​ 如果\(f:R \mapsto R\),则\(f\)\(x\)的二阶导数可以认为是\(f\)\(x\)一阶导数的导数。但是在向量函数中,如果\(f:R^n \mapsto R\),则\(\nabla_xf(x)\)是一个\(n\)维向量,前面说过多值函数的梯度没有意义,所以说对\(f\)的梯度再求梯度得到\(f\)的Hessian矩阵是错误的。但是事实上我们可以对\(\nabla_xf(x)_i\)求梯度,它得到的是\(Hessian\)矩阵的第\(i\)列。因此不能表示为\(\nabla_x \nabla_xf(x)\),而应该表示为

\[\nabla^2_xf(x)=[\nabla_x(\nabla_xf(x))_1,\nabla_x(\nabla_xf(x))_2,…,\nabla_x(\nabla_xf(x))_n] \]

三、线性和二次向量函数的梯度和Hessian矩阵

令线性函数\(f(x)=b^Tx\),其中\(b\in R^n\)

\[f(x)=b^Tx=\sum_{i=1}^nb_ix_i \]

\(\frac{\partial f(x)}{\partial x_i}=b_i\),所以\(\nabla_x f(x)=b\).现在考虑二次向量函数

\[f(x)=x^TAx=\sum_{i=1}^n\sum_{j=1}^nA_{ij}x_ix_j \]

从而

\[\frac{\partial}{\partial x_k}f(x)=\frac{\partial}{\partial x_k}(\sum_{i=1, i \not = k}^nA_{ik}x_ix_k+\sum_{j=1, j \not = k}^nA_{kj}x_kx_j+A_{kk}x_k^2) \\ =\sum_{i=1, i \not = k}^nA_{ik}x_i+\sum_{j=1, j \not = k}^nA_{kj}x_j+2A_{kk}x_k \\ = \sum^{n}_{i=1}A_{ik}x_i+\sum^n_{j=1}A_{kj}x_j=2\sum^n_{j=1}A_{kj}x_j \]

我们假设\(A\)为对称矩阵,所以最后一步能化简。注意到\(\nabla_xf(x)_k\)\(A\)的第\(k\)行与\(x\)内积的两倍。因此\(\nabla_x x^TAx = 2Ax\).

接下来再看看\(f(x)=x^TAx\)\(Hessian\)矩阵

\[\nabla_x^2f(x)=\frac{\partial}{\partial x_k \partial x_l}f(x)=\frac{\partial}{\partial x_k}[\frac{\partial f(x)}{\partial x_l}]=\frac{\partial}{\partial x_k}[2\sum^n_{j=1}A_{lj}x_j]=2A_{kl} \]

总结一下:

  • \(\nabla_xb^Tx=b\)
  • \(\nabla_xx^TAx=2Ax\) 其中\(A^T=A\)
  • \(\nabla_x^2x^TAx=2A\) 其中\(A^T=A\)

四、最小二乘法矩阵推导

假设我们有一个矩阵\(A \in R^{m\times n}\)和一个向量\(b \in R^m\),这种情况下我们不能找到\(x \in R^n\)满足\(Ax=b\),但是我们可以找找到\(x\)使得\(Ax\)尽可能的接近\(b\),于是我们需要最小化

\[J(x)=||Ax-b||^2 \]

我们考虑求\(\nabla_xJ(x)\)然后令梯度等于0即可解出\(x\),这时候得到的\(x\)使得\(J(\theta)\)达到最小。

\[\nabla_xJ(x)=\nabla_x(Ax-b)^T(Ax-b)\quad \quad \quad \quad\quad \quad \quad \\ =\nabla_x(x^TA^TAx-2b^TAx+b^Tb) \\ =2A^TAx-2A^Tb \quad \quad \quad \quad \quad\quad \]

\(J(x)=0\)即可得最小二乘法的解为\(x=(A^TA)^{-1}A^Tb\).

五、行列式的梯度

这里我们来考虑行列式的梯度,回忆行列式计算方法

\[|A|=\sum_{i=1}^n(-1)^{i+j}A_{ij}M_{ij} \quad for \; any \; j =1,2,...,n \]

其中\(M_{ij}\)\((i,j)\)处的代数余子式。

\[\frac{\partial}{\partial A_{kl}}|A|=\frac{\partial}{\partial A_{kl}}\sum_{i=1}^n(-1)^{i+l}A_{il}M_{il}=(-1)^{k+l}A_{kl}M_{kl}=A^{*}_{lk} \]

其中\(A^*\)\(A\)的伴随矩阵。从而

\[\nabla_A|A|=(A^*)^T=|A|(A^{-1})^T \]

以上均假设\(A\)是可逆矩阵。行列式的梯度等于它的伴随矩阵的转置。例如\(f(A)=ln(|A|),|A|>0\),求\(\nabla_Af(A)\)

\[\nabla_Aln(|A|)=\frac{1}{|A|}\frac{\partial |A|}{\partial A}=A^{-1} \]

上面默认\(A\)是对称矩阵。

六、用特征值来做最优化

考虑下面的优化问题

\[max_{x \in R^n}\quad x^TAx \quad where \;x^Tx=1 \]

上式中\(A\)是一个对称矩阵。先将使用等式约束的目标函数写成拉格朗日形式,然后求解最优值

\[L(x,\lambda)=x^TAx-\lambda (x^Tx-1) \]

其中\(\lambda\)称为拉格朗日因子,设\(x^*\)是函数\(L(x,\lambda)\)取得最大值的点,则在\(x^*\)函数的梯度为0

\[\nabla_xL(x,\lambda)=2Ax-2\lambda x = 0 \]

再化简可以得到等式\(Ax=\lambda x\),而且\(x\)是单位向量,于是解就是\(A\)的特征向量。

posted @ 2018-03-12 16:05  Terrell  阅读(1655)  评论(0编辑  收藏  举报