矩阵微分

在实际计算过程中,按照定义求解矩阵梯度往往不现实。如果还要计算Hessian 矩阵就更复杂了。那么有没有简单的办法呢?有。矩阵微分为标量函数,向量函 数和矩阵函数的梯度矩阵与Hessian矩阵的计算提供了便捷的算法。

矩阵微分是实函数微分对矩阵函数的推广。在微积分中,函数\(\phi(x)\) 的导 数\(\phi^{'}(x)\) 定义为:

\begin{equation} \label{eq:1} \phi^{'}(x) = \lim_{\Delta x \to 0} \frac{ \phi(x + \Delta x) - \phi(x) }{ \Delta x } \end{equation}

式 (\ref{eq:1}) 又可以写为:

\begin{equation} \label{eq:2} \phi(x + \Delta x) = \phi(x) + \Delta x \phi^{'}(x) + r_{x}(\Delta) \end{equation}

式 (\ref{eq:2}) 中 \(r_{x}(\Delta x)\)是\(\phi(x)\)的留数,有\( \lim_{\Delta x\to 0}\frac{ r_{x}(\Delta x)}{ \Delta x} = 0 \) 。 \(\phi(x+\Delta x) - \phi(x)\)由两部分构成:与导数成正比的分量\(\Delta x \phi^{'}(x)\) 和 误差分量。如果误差分量可以忽略不计则函数\(\phi(x + \Delta x) = \phi(x) + \Delta x \phi^{'}(x)\)

把上述定义推广到向量,即可得到向量函数的微分。令\(\mathbf{c}\) 和 \(\mathbf{u}\)是两个\((n\times 1)\)向量,其中\(\mathbf{c}\)是 \(m\times 1\) 向量函数\(\mathbf{f}(x)\) 的向量变元,而\(\mathbf{u}\)是 \(R^{n}\)中的一个点,并且\(\| \mathbf{u} \|_{2} < r\) 。若存在一个 \(m\times n\)的矩阵\(\mathbf{A}\),它与\(\mathbf{c}\)有关,但与 \(\mathbf{u}\)无关,并且使得:

\begin{equation} \label{eq:3} f(\mathbf{c} + \mathbf{u}) = f(\mathbf{c}) + \mathbf{A}(\mathbf{c}) \mathbf{u} + r_{\mathbf{c}}(\mathbf{u}) \end{equation}

对所有具有\(\|\mathbf{u}\|_{2} < r \)的\(n\times 1\)实向量 \(\mathbf{u}\)恒成立,以及:

\begin{equation} \label{eq:4} \lim_{\mathbf{u} \to \mathbf{0}} \frac{ r_{c}(\mathbf{u}) }{\|\mathbf{u}\|_{2}} = 0 \end{equation}

则称函数\(f\)在向量点\(\mathbf{c}\)是可微分的。称\(m\times n\)矩阵 \(\mathbf{A}(\mathbf{c})\)是函数\(f\) 在\(\mathbf{c}\)的一阶导数,并称 \(m\times 1\)向量

\begin{equation} \label{eq:5} df(\mathbf{c};\mathbf{u}) = \mathbf{A}(\mathbf{c}) \mathbf{u} \end{equation}

是\(f\)在\(c\)的一阶微分向量。

现在考虑另外一个向量点\(\mathbf{c} + t \mathbf{e}_{j}\),其中\(e_{j}\) 是一个仅第\(j\)个元素为1,其他元素为0的\(n\times 1\)的基本向量。\(t\) 是非零标量。换句话说\(\mathbf{c}\)与\(\mathbf{c} + t\mathbf{e}_{j}\)只 第\(j\)个元素不同。当\(t\)足够小时,极限:

\begin{equation} \label{eq:6} D_{j} \mathbf{f}_{i} (c) = \lim_{t\to 0} \frac{f_{i}(c + t\mathbf{e}_{j}) - f_{i}(\mathbf{c})}{t} \end{equation}

称为向量函数\(\mathbf{f}\) 的第\(i\)个元素相对于向量变元\(\mathbf{c}\) 的第\(j\)个元素的偏导。

根据以上定义,\(n\)个偏导的排列\( [D_{1}\mathbf{f}_{i}(\mathbf{c}) , D_{2}\mathbf{f}_{i}(\mathbf{c}),\ldots, D_{n} \mathbf{f}_{i} (\mathbf{c}) ]\)。 定义了向量函数\(f(\mathbf{c})\)的第\(i\)个元素 \(\mathbf{f}_{i}(\mathbf{c})\) 相对于\(1\times n\)行向量 \(\mathbf{c}^{T}\)的偏导向量,即有:

\begin{equation} \label{eq:7} \frac{\partial f_{i} (\mathbf{c}) }{\partial \mathbf{c}^{T}} = [D_{1}\mathbf{f}_{i}(\mathbf{c}) ,D_{2}\mathbf{f}_{i}(\mathbf{c}),\ldots, D_{n} \mathbf{f}_{i} (\mathbf{c}) ] \end{equation}

于是,列向量\(\mathbf{f}(\mathbf{c}) = [\mathbf{f}_{1}(\mathbf{c}),\mathbf{f}_{2}(\mathbf{c}),\ldots, \mathbf{f}_{m}(\mathbf{c}) ]^{T}\)相对于行向量\(\mathbf{c}^{T} = [ c_{1},c_{2},\ldots, c_{n} ]\) 的偏导数矩阵为\(m\times n\)矩阵。定义为:

\begin{equation} \label{eq:8} D[\mathbf{f}(\mathbf{c})] = \begin{bmatrix} \frac{\partial f_{1}(c)}{\partial \mathbf{c}^{T}} \\ \frac{\partial f_{2}(c)}{\partial \mathbf{c}^{T}} \\ \vdots \\ \frac{\partial f_{m}(c)}{\partial \mathbf{c}^{T}} \end{bmatrix} = \begin{bmatrix} D_{1}\mathbf{f}_{1}(\mathbf{c}) & D_{2}\mathbf{f}_{1}(\mathbf{c}) & \ldots & D_{n}\mathbf{f}_{1}(\mathbf{c}) \\ D_{1}\mathbf{f}_{2}(\mathbf{c}) & D_{2}\mathbf{f}_{2}(\mathbf{c}) & \ldots & D_{n}\mathbf{f}_{2}(\mathbf{c}) \\ \vdots \\ D_{1}\mathbf{f}_{m}(\mathbf{c}) & D_{2}\mathbf{f}_{m}(\mathbf{c}) & \ldots & D_{n}\mathbf{f}_{m}(\mathbf{c}) \end{bmatrix} \end{equation}

矩阵微分有很多性质和单变量函数微分性质类似,此处不再一一列举。只待用到 的时候再去查阅工具书。