Reference: 吴恩达机器学习课程,斯坦福大学2014(吴恩达)机器学习教程中文笔记;LaTeX使用在线LaTeX公式编辑器
本文作为自己的备忘录,主要记录一些经典的ML算法,实时更新。顺便练练这沟槽的$\LaTeX$
线性代数/矩阵论
符号规定
标量(Scaler)用不加粗字母表示,向量(Vector)用加粗小写字母(例如$\mathbf{a}, \mathbf{v}$)表示,矩阵(Matrix)用加粗大写字母(例如$\mathbf{A}, \mathbf{M}$)表示。
向量由一组有序标量组成,例如$\mathbf{a}={ \begin{bmatrix}a_1 & a_2 & \cdots & a_n\end{bmatrix} }^T$。本文区分行向量与列向量,且默认一般的向量为列向量。
矩阵由一组长度相等的向量按次序排成,例如$\mathbf{A}=\begin{bmatrix}\mathbf{a_1} & \mathbf{a_2} & \cdots & \mathbf{a_n} \end{bmatrix}=
\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \
a_{21} & a_{22} & \cdots & a_{2n} \
\vdots & \vdots & \ddots & \vdots \
a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix}$。
用下标代表向量或矩阵的分量,例如$a_i$代表$\mathbf{a}$的第$i$个分量、$m_{ij}$代表$\mathbf{M}$的第$i$行第$j$列;上标(有时用圆括号括起来)代表对一系列样本/标签编号,例如$\mathbf{x}^{(i)}$代表$m$个数据${ \left \{ \mathbf{x}^k \right \} }_{k=1}^m$中的第$i$个。
向量/矩阵的微分
微分形式
标量的微积分我们早在小学二年级就学过了,这里我们试着推导标量对向量、向量对向量甚至矩阵之间的微分。
根据自变量x、因变量y的多种形式,我们可以列出多种微分运算:
| 标量$y$ | 向量$\mathbf{y}$ | 矩阵$\mathbf{Y}$ | |
|---|---|---|---|
| 标量$x$ | $\frac{\partial y}{\partial x}$ | $\frac{\partial {\mathbf y}}{\partial x}$ | $\frac{\partial {\mathbf Y}}{\partial x}$ |
| 向量$\mathbf{x}$ | $\frac{\partial y}{\partial {\mathbf x}}$ | $\frac{\partial \mathbf{y}}{\partial {\mathbf x}}$ | $\frac{\partial \mathbf{Y}}{\partial {\mathbf x}}$ |
| 矩阵$\mathbf{X}$ | $\frac{\partial y}{\partial {\mathbf X}}$ | $\frac{\partial \mathbf{y}}{\partial {\mathbf X}}$ | $\frac{\partial \mathbf{Y}}{\partial {\mathbf X}}$ |
注意到标量$y$对向量$\mathbf{x}$的求导即为多元微积分中的梯度$\nabla y$,且一般梯度记作行向量形式(这样$\nabla y\cdot\mathbf{x}$即成为标量);于是我们可以做出规定:微分运算结果的形式相对于分母应“转置一遍”,对于分子则“不转置”(即分子布局,Numerator Layout)
于是对于标量$x$、$y$与列向量$\mathbf x$、$\mathbf y$,我们有:
$$\begin{aligned}
& \frac{\partial y}{\partial {\mathbf x}} = \begin{bmatrix}\frac{\partial y}{\partial x_1} & \frac{\partial y}{\partial x_2} & \cdots & \frac{\partial y}{\partial x_n}\end{bmatrix} \
& \frac{\partial {\mathbf y}}{\partial x} =
\begin{bmatrix}\frac{\partial y_1}{\partial x} \
\frac{\partial y_2}{\partial x} \
\vdots \
\frac{\partial y_m}{\partial x}\end{bmatrix} \
& \frac{\partial \mathbf{y}}{\partial {\mathbf x}} =
\begin{bmatrix}\frac{\partial y_1}{\partial \mathbf x} \
\frac{\partial y_2}{\partial \mathbf x} \
\vdots \
\frac{\partial y_m}{\partial \mathbf x} \end{bmatrix}
=\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_1}{\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} \end{aligned}$$
$\frac{\partial \mathbf{Y}}{\partial x}$即为$\mathbf{Y}$的每个分量对$x$求导,$\frac{\partial y}{\partial {\mathbf X}}$即$y$对$\mathbf{X}$的每个分量求导,其形状与$\mathbf{X}$相差一个转置;至于对矩阵求导,其形式可能为三维甚至更高维的“矩阵”,或者说张量(Tensor),在此省略。
微分的运算法则
以下记录常用的向量/矩阵微分法则。