实变函数的矩阵微分(机器学习&线性代数)

标准定义

标量对向量

标量对向量求导,本质上是实变函数对向量的每个分量求导,得到向量

一般向量内积

e.g.
::: align-center
y=\mathbf{a^Tx},求\frac{\partial y}{\partial \mathbf{x}}

:::
首先对x_i求偏导
::: align-center
\frac{\partial y}{\partial x_i}=\frac{\partial \sum_{j=1}^N a_jx_j}{\partial x_i}=0+\cdots+\frac{\partial a_ix_i}{\partial x_i}+\cdots+0=a_i

:::
之后将其按分母向量的顺序排列得到最终结果
::: align-center
\frac{\partial \mathbf{a^Tx}}{\partial\mathbf{x}}=\mathbf{a}

:::

二次型

对于二次型
e.g.
::: align-center
y=\mathbf{x^Tx},求\frac{\partial y}{\partial \mathbf{x}}

:::
类似地可得
::: align-center
\frac{\partial{\mathbf{x^Tx}}}{\partial \mathbf{x}}=2\mathbf{x}

:::

更为一般的
e.g.
::: align-center
y=\mathbf{x^TAx},求\frac{\partial y}{\partial \mathbf{x}}

:::
此时对每个x_k求导
::: align-center
\begin{aligned} &\frac{\partial\mathbf{x^TAx}}{\partial x_k}=\frac{\partial\sum_{i=1}^n\sum_{j=1}^nx_iA_{ij}x_j}{\partial x_k}\\ &=\sum_{i=1}^nx_iA_{ik}+\sum_{j=1}^n A_{ik}x_j\end{aligned}

:::
其中\sum_{i=1}^n x_iA_{ik}\mathbf{A}的第k列转置后与\mathbf{x}的内积,而\sum_{j=1}^n\mathbf{A}的第k行与\mathbf{x}的内积,组合结果,最后应为
::: align-center
\frac{\partial \mathbf{x^TAx}}{\partial\mathbf{x}}=\mathbf{A^Tx}+\mathbf{Ax}

:::

标量对矩阵

与标量对向量求导类似,标量对矩阵求导本质上也是实变函数对矩阵的每一个分量求导后的重新组合,结果为一个矩阵
e.g.
::: align-center
y=\mathbf{a^TXb},求\frac{\partial y}{\partial \mathbf{X}}

:::
\mathbf{X}的某个分量X_{ij}求导
::: align-center
\begin{aligned} &\frac{\partial \mathbf{a^TXb}}{\partial \mathbf{X}}=\frac{\partial\sum_{p=1}^n\sum_{q=1}^na_pX_{pq}b_q}{\partial X_{ij}}\\ &=\frac{\partial a_iX_{ij}b_j}{\partial X_{ij}}\\ &=a_ib_j \end{aligned}

:::
组合结果得
::: align-center
\frac{\partial\mathbf{a^TXb}}{\partial\mathbf{X}}=\mathbf{ab^T}

:::
\mathbf{a,b}的外积矩阵

向量对向量

向量对向量求导,就是被微分向量的每个分量对微分向量的每个分量求导,结果为矩阵
e.g
::: align-center
\mathbf{y=Ax},求\frac{\partial \mathbf{Ax}}{\partial \mathbf{x}}

:::
考虑将矩阵\mathbf{A}按列分块,将其第i行与\mathbf{x}的内积对x_j求导得
::: align-center
\begin{aligned} &\frac{\mathbf{A_ix}}{\partial x_j}=\frac{\partial A_{ij}x_j}{\partial x_j}=A_{ij} \end{aligned}

:::
组合结果得
::: align-center
\frac{\partial \mathbf{Ax}}{\partial \mathbf{x}}=\mathbf{A}

:::

矩阵微分

公式表

微分 公式
标量对标量 df(x)=f'(x)dx
标量对向量 df(x)=\sum_{i=1}^n\frac{\partial f(\mathbf{x})}{\partial x_i}dx_i=(\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}})^Td\mathbf{x}
标量对矩阵 df(x)=\sum_{i=1}^m\sum_{j=1}^n\frac{f(\mathbf{X})}{\partial X_{ij}}dX_{ij}=tr[(\frac{\partial f(\mathbf{X}}{\partial\mathbf{X}})^Td\mathbf{X}]

性质

性质 表示
加减法 d(X\pm Y)=dX\pm dY
乘法 d(XY)=d(X)Y+Xd(Y)
转置 d(X^T)=(dX)^T
d\space tr(X)=tr(dX)

矩阵微分的链式法则

微分 法则
向量对向量 \frac{\partial \mathbf{z}}{\partial \mathbf{x}}=\frac{\partial \mathbf{z}}{\partial\mathbf{y}}\frac{\partial\mathbf{y}}{\partial\mathbf{x}}
标量对向量 \frac{\partial z}{\partial\mathbf{x}}=(\frac{\partial\mathbf{y}}{\partial\mathbf{x}})^T\frac{\partial z}{\partial \mathbf{y}}
标量对矩阵 \frac{\partial z}{\partial\mathbf{X}}=(\frac{\partial \mathbf{Y}}{\partial \mathbf{X}})^T{}\frac{\partial z}{\partial \mathbf{Y}}
游客

全部评论 (0)

暂无评论,快来抢沙发吧~