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),在此省略。
微分的运算法则
以下记录常用的向量/矩阵微分法则。