【数理知识】矩阵函数的导数问题——多维函数的梯度

矩阵函数如何求导?

我们可以连结一个多元函数对其所有变量的偏导数,以得到该函数的梯度(gradient)向量。 具体而言,设函数$f:\R^n\rightarrow\R$的输入是一个$n$维向量$\textbf{x}=[x_1,x_2,…,x_n]^T$,并且输出是一个标量。 函数$f(\textbf{x})$相对于$\textbf{x}$的梯度是一个包含$n$个偏导数的向量:
$$
\nabla_xf(x)=[\frac{\partial f(x)}{\partial x_1},\frac{\partial f(x)}{\partial x_2},…,\frac{\partial f(x)}{\partial x_n}]^T
$$
假设$\textbf{x}$为$n$维向量,在微分多元函数时经常使用以下规则:

  • 对于所有$\textbf{A}\in\R^{m*n}$,都有$\nabla_\textbf{x}\textbf{Ax}=\textbf{A}^T$
  • 对于所有$\textbf{A}\in\R^{n*m}$,都有$\nabla_\textbf{x}\textbf{x}^T\textbf{A}=\textbf{A}$
  • 对于所有$\textbf{A}\in\R^{n*n}$,都有$\nabla_\textbf{x}\textbf{x}^T\textbf{A}\textbf{x}=(\textbf{A}+\textbf{A}^T)\textbf{x}$
  • $\nabla_\textbf{x}||\textbf{x}||^2=\nabla_\textbf{x}\textbf{x}^T\textbf{x}=2\textbf{x}$

同样,对于任何矩阵$\textbf{X}$,都有$\nabla_\textbf{X}||\textbf{X}||^2_F==2\textbf{x}$。 正如我们之后将看到的,梯度对于设计深度学习中的优化算法有很大用处。