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} o mathbb {R} }) 的应用
给定二阶导数连续的映射 ({displaystyle f:mathbb {R} ^{2} o 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} o mathbb {R} }) 二阶连续可导时,Hessian矩阵H在临界点 ({displaystyle x_{0}}) 上是一个 ({displaystyle n imes n})阶的对称矩阵。
- 当H是正定矩阵时,临界点 ({displaystyle x_{0}}) 是一个局部的极小值。
- 当H是负定矩阵时,临界点 ({displaystyle x_{0}}) 是一个局部的极大值。
- H=0,需要更高阶的导数来帮助判断。
- 在其余情况下,临界点 ({displaystyle x_{0}}) 不是局部极值