【Math for ML】向量微积分(Vector Calculus)
I. 向量梯度
假设有一个映射函数为\(f:R^n→R^m\)和一个向量\(x=[x_1,...,x_n]^T∈R^n\),那么对应的函数值的向量为\(f(x)=[f_1(x),...,f_m(x)]^T∈R^m\)。
现在考虑\(f\)对\(x_i\)的梯度为:\(\frac{\partial{f}}{\partial{x_i}}=[\frac{\partial{f_1}}{\partial{x_i}},...,\frac{\partial{f_m}}{\partial{x_i}}]^T∈R^m\)
所以有
接下来给出Jacobian定义:
\(f:R^n→R^m\)的所有一阶偏导集合叫做Jacobian。Jacobian J 是一个\(m×n\)的矩阵,形式定义如下:
II. 矩阵梯度
其实和向量梯度类似,这里不再给出推导过程,直接给出一些重要的结果:
- 如果\(f(x)∈R^{m×n},x∈R^{p×q}\),则\(\frac{\partial{f(x)}}{\partial{x}}∈R^{(m×n)×(p×q)}\)
- 在机器学习中常用到的计算公式:
III. 高阶梯度
上面提到的都是一阶梯度,在实际应用中会涉及到高阶梯度。而常见的有二阶梯度
海森矩阵(Hessian) 是一个多变量实值函数的二阶偏导数组成的方阵。其形式如下:
以下内容参考海森矩阵
1. 在映射 \({\displaystyle f:\mathbb {R} ^{2}\to \mathbb {R} }\) 的应用
给定二阶导数连续的映射 \({\displaystyle f:\mathbb {R} ^{2}\to \mathbb {R} }\),海森矩阵的行列式,可用于分辨 \({\displaystyle f}\)的临界点是属于鞍点还是极值点。
对于 \({\displaystyle f}\) f的临界点 \({\displaystyle (x_{0},y_{0})}\)一点,有 \({\displaystyle {\frac {\partial f(x_{0},y_{0})}{\partial x}}={\frac {\partial f(x_{0},y_{0})}{\partial y}}=0}\),然而凭一阶导数不能判断它是鞍点、局部极大点还是局部极小点。海森矩阵可能解答这个问题。
- H > 0:若 \({\displaystyle {\frac {\partial ^{2}f}{\partial x^{2}}}>0}\),则 \({\displaystyle (x_{0},y_{0})})\)是局部极小点;若 \({\displaystyle {\frac {\partial ^{2}f}{\partial x^{2}}}<0}\),则 \({\displaystyle (x_{0},y_{0})}\)是局部极大点。
- H < 0:\({\displaystyle (x_{0},y_{0})}\)是鞍点。
- H = 0:二阶导数无法判断该临界点的性质,得从更高阶的导数以泰勒公式考虑。
2. 在高维情况下的推广
当函数 \({\displaystyle f:\mathbb {R} ^{n}\to \mathbb {R} }\) 二阶连续可导时,Hessian矩阵H在临界点 \({\displaystyle x_{0}}\) 上是一个 \({\displaystyle n\times n}\)阶的对称矩阵。
- 当H是正定矩阵时,临界点 \({\displaystyle x_{0}}\) 是一个局部的极小值。
- 当H是负定矩阵时,临界点 \({\displaystyle x_{0}}\) 是一个局部的极大值。
- H=0,需要更高阶的导数来帮助判断。
- 在其余情况下,临界点 \({\displaystyle x_{0}}\) 不是局部极值