• A Minimal Book Example
  • 前言
  • 1 高斯消元法 {Gaussian elimination}
    • 1.1 数学
    • 1.2 计算
  • 2 Cholesky分解 {Cholesky decomposition}
    • 2.1 \(A^{T}A\)
    • 2.2 对称
    • 2.3 正定矩阵
    • 2.4 Cholesky分解
    • 2.5 计算
  • 3 QR 分解
    • 3.1 Gram-Schmidt
    • 3.2 Householder变换
    • 3.3 计算
  • 4 特征分解 {Eigen decomposition}
    • 4.1 出现原因
      • 4.1.1 主成分分析
      • 4.1.2 物理方程
      • 4.1.3 Quadratic Energy
    • 4.2 定义
      • 4.2.1 特征值和特征向量
      • 4.2.2 谱和谱半径
      • 4.2.3 有关特征值和特征向量的定理
      • 4.2.4 扩展到复域
      • 4.2.5 谱定理
      • 4.2.6 理论基础
    • 4.3 计算
      • 4.3.1 最大的 eigenvalue 及对应的 eigenvector
      • 4.3.2 最小的 eigenvalue 及对应的 eigenvector
      • 4.3.3 靠近 \(\sigma\)的 eigenvalue 及对应的 eigenvector
      • 4.3.4 根据 eigenvector 猜 eigenvalue
      • 4.3.5 All eigenevalue
      • 4.3.6 Householder 变换
      • 4.3.7 QR
  • 5 奇异值分解 {SVD decomposition}
    • 5.1 引入
    • 5.2 理解
    • 5.3 计算
    • 5.4 应用
      • 5.4.1 例子一
      • 5.4.2 例子二
      • 5.4.3 例子三
    • 5.5 例子
  • 6 奇异值分解的应用 {SVD application}
    • 6.1 Rigid Alignment / Procrustes Problem
    • 6.2 APAR
    • 6.3 PCA
    • 6.4 图像压缩
  • 7 矩阵分解 {matirx application}
    • 7.1 定义
      • 7.1.1 共轭转置 Conjugate transpose
      • 7.1.2 Hermitian
      • 7.1.3 正定 positive definite
      • 7.1.4 正交矩阵 orthogonal matrix
      • 7.1.5 酉矩阵 unitary matrix
      • 7.1.6 正规矩阵 normal matrix
      • 7.1.7 类比
    • 7.2 分解
      • 7.2.1 A = PLU
      • 7.2.2 Cholesky 分解
      • 7.2.3 QR分解
      • 7.2.4 特征分解/频谱分解 Eigendecomposition / spectral decomposition
      • 7.2.5 奇异值分解
  • 8 非线性方程求解 {nonlinear equation}
    • 8.1 二分法 Bisection method
    • 8.2 不动点 fixed point
    • 8.3 牛顿法 Newton’s method
    • 8.4 割线法 Secant method
    • 8.5 计算
  • 9 非线性方程组求解 {nonlinear equations}
    • 9.1 牛顿法
      • 9.1.1 雅可比矩阵 Jacobian matrix
    • 9.2 Broyden’s method
    • 9.3 计算
  • 10 临界点、驻点、拐点、鞍点、顶点(曲线) {Points Concepts}
    • 10.1 临界点 critial point
    • 10.2 驻点 stationary point
    • 10.3 拐点 inflection point
      • 10.3.1 convex 凸函数
      • 10.3.2 concave 凹函数:
    • 10.4 鞍点 saddle point
    • 10.5 顶点(曲线)vertex (curve)
  • 11 导数、梯度、 Jacobian、Hessian {Gradient Related Concepts}
    • 11.1 导数
    • 11.2 梯度
    • 11.3 Jacobian 雅可比矩阵
    • 11.4 Hessian 黑塞矩阵
  • 12 无约束优化 {Optimization without constraintss}
    • 12.1 例子
    • 12.2 极值
    • 12.3 一元函数
      • 12.3.1 牛顿法
      • 12.3.2 黄金分割搜索 Golden-section search
    • 12.4 多元函数
      • 12.4.1 梯度下降法
      • 12.4.2 牛顿法
      • 12.4.3 BFGS
  • 13 从拉格朗日乘子法到KKT条件 {Lagrange multiplier to KKT condition}
    • 13.1 介绍
    • 13.2 多个约束
      • 13.2.1 例子
    • 13.3 KKT 条件
      • 13.3.1 介绍
    • 13.4 KKT 条件
    • 13.5 例子
  • 14 从梯度下降到共轭梯度 {Conjugate gradient}
    • 14.1 梯度下降 Gradient descent
    • 14.2 共轭梯度 Conjugate gradient
    • 14.3 总结
  • 15 插值 {Interpolate}
    • 15.1 多项式插值
    • 15.2 拉格朗日插值法
    • 15.3 牛顿插值法
    • 15.4 分段插值
  • 16 数值积分和微分{Numerial Intergration}
    • 16.1 积分
      • 16.1.1 黎曼和
      • 16.1.2 梯形法则
      • 16.1.3 辛普森法则
      • 16.1.4 牛顿-柯特斯公式
      • 16.1.5 精确度
    • 16.2 微分
  • 17 常微分方程 {ODE}
    • 17.1 基本形式
    • 17.2 显式 ODE
    • 17.3 可视化
    • 17.4 解的状况
    • 17.5 线性ODE
    • 17.6 求解
      • 17.6.1 前向欧拉法
      • 17.6.2 后向欧拉
  • 18 偏微分方程 {PDE}
    • 18.1 解
    • 18.2 运算符
    • 18.3 纳维-斯托克斯方程 Navier-Stokes equations
    • 18.4 麦克斯韦方程组 Maxwell’s equations
    • 18.5 拉普拉斯方程 Laplace’s equation
    • 18.6 调和分析 Harmonic analysis
    • 18.7 边界条件 Boundary Value Problems
    • 18.8 二阶PDE
    • 18.9 椭圆型 PDE
    • 18.10 抛物型 PDE
    • 18.11 双曲型 PDE
    • 18.12 微分看成算子
  • References
  • Published with bookdown

数值分析笔记

Chapter 11 导数、梯度、 Jacobian、Hessian {Gradient Related Concepts}

之前写过关于梯度的文章,是从线性近似着手开始写起,这里我再次回顾梯度和一些相关的矩阵:

  • 一元函数: \(f: \mathbb{R} \to \mathbb{R}\)
  • 多元函数: \(f: \mathbb{R}^n \to \mathbb{R}\)
  • 向量函数: \(f: \mathbb{R}^n \to \mathbb{R}^m\)

以下讨论都预先预设假设 f 必定可导甚至更高阶可导。

11.1 导数

针对一元函数 \(f: \mathbb{R} \to \mathbb{R}\), 近似:

\[f(x) \approx f(x_0) + f'(x_0)(x-x_0)\]

11.2 梯度

梯度针对多元函数 \(f: \mathbb{R}^n \to \mathbb{R}\) ,是导数的推广, 它的结果是一个向量:

\[ \nabla f = \begin{pmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{pmatrix} \]

也经常写为, 函数相对于 n x 1 向量 \(\vec{x}\) 的梯度算子为 \(\nabla_{\boldsymbol{x}}\):

\[ \nabla_{\boldsymbol{x}} \overset{\underset{\mathrm{def}}{}}{=} \left[ \frac{\partial }{\partial x_1}, \frac{\partial }{\partial x_2},\cdots,\frac{\partial }{\partial x_n} \right]^T=\frac{\partial }{\partial \boldsymbol{x}} \]

近似:

\[f(\vec{x}) \approx f(\vec{x}_0) + \nabla f(\vec{x}_0) \cdot (\vec{x} - \vec{x}_0)\]

11.3 Jacobian 雅可比矩阵

我喜欢 Jacobian 的英文读音,听起来很可爱。

针对向量函数 \(f: \mathbb{R}^n \to \mathbb{R}^m\)

如果函数 \(f: \mathbb{R}^n \to \mathbb{R}^m\) 在点 x 可微的话,在点 x 的雅可比矩阵即为该函数在该点的最佳线性逼近,也代表雅可比矩阵是单变数实数函数的微分在向量值多变数函数的推广,在这种情况下,雅可比矩阵也被称作函数 f 在点 x 的微分或者导数。

\[ {\displaystyle \mathbf {J} ={\begin{bmatrix}{\dfrac {\partial \mathbf {f} }{\partial x_{1}}}&\cdots &{\dfrac {\partial \mathbf {f} }{\partial x_{n}}}\end{bmatrix}}={\begin{bmatrix}{\dfrac {\partial f_{1}}{\partial x_{1}}}&\cdots &{\dfrac {\partial f_{1}}{\partial x_{n}}}\\\vdots &\ddots &\vdots \\{\dfrac {\partial f_{m}}{\partial x_{1}}}&\cdots &{\dfrac {\partial f_{m}}{\partial x_{n}}}\end{bmatrix}}} \]

矩阵分量:

\[ {\displaystyle \mathbf {J} _{ij}={\frac {\partial f_{i}}{\partial x_{j}}}.} \]

其它常用符号:

\({\displaystyle Df}、 {\displaystyle \mathrm {D} \mathbf {f} }、{\displaystyle \mathbf {J} _{\mathbf {f} }(x_{1},\ldots ,x_{n})}\) 或者 \({\displaystyle {\frac {\partial (f_{1},\ldots ,f_{m})}{\partial (x_{1},\ldots ,x_{n})}}.}\)

近似:

\[ f(\vec{x}) \approx f(\vec{x}_k) + J(\vec{x}_k)(\vec{x} - \vec{x}_k) \]

如果 m = n,那么 Jacobian 可以形成方阵,这个矩阵可以计算出它的行列式:

叫做 Jacobian Matrix,它的意义是比如这个微小形状改变的比值。

11.4 Hessian 黑塞矩阵

适用于 \(f: \mathbb{R}^n \to \mathbb{R}\) 有点二阶导数的意思:

\[ {\displaystyle \mathbf {H} ={\begin{bmatrix}{\frac {\partial ^{2}f}{\partial x_{1}^{2}}}&{\frac {\partial ^{2}f}{\partial x_{1}\,\partial x_{2}}}&\cdots &{\frac {\partial ^{2}f}{\partial x_{1}\,\partial x_{n}}}\\\\{\frac {\partial ^{2}f}{\partial x_{2}\,\partial x_{1}}}&{\frac {\partial ^{2}f}{\partial x_{2}^{2}}}&\cdots &{\frac {\partial ^{2}f}{\partial x_{2}\,\partial x_{n}}}\\\\\vdots &\vdots &\ddots &\vdots \\\\{\frac {\partial ^{2}f}{\partial x_{n}\,\partial x_{1}}}&{\frac {\partial ^{2}f}{\partial x_{n}\,\partial x_{2}}}&\cdots &{\frac {\partial ^{2}f}{\partial x_{n}^{2}}}\end{bmatrix}}\,} \]

是一个 n x n 的方阵,也可以写成:

\[ {\displaystyle \mathbf {H} _{ij}={\frac {\partial ^{2}f}{\partial x_{i}\partial x_{j}}}} \]

之所以说它二次导数,看一下它的推导 :

  • \(f: \mathbb{R} \to \mathbb{R}\)

\[ f(x) \approx f(x_0) + f'(x_0 )(x − x_0 ) + \frac{1}{2}f''(x_0 )(x − x_0 )^2 \]

  • \(f: \mathbb{R}^n \to \mathbb{R}\):

\[ f(x_1,x_2)=f(x_{10},x_{20})+f_{x_1}(x_{10},x_{20})\Delta x_1+f_{x_2}(x_{10},x_{20})\Delta x_2+\frac {1}{2}[f_{x_1 x_1}(x_{10},x_{20})\Delta x_1^2+2f_{x_1 x_2}(x_{10},x_{20})\Delta x_1\Delta x_2+f_{x_2 x_2}(x_{10},x_{20})\Delta x_2^2] \]

其中 \({\displaystyle \Delta x_{1}=x_{1}-x_{10}\,},{\displaystyle \Delta x_{2}=x_{2}-x_{20}\,},{\displaystyle f_{x_{1}}={\frac {\partial f}{\partial x_{1}}}\,},{\displaystyle f_{x_{2}}={\frac {\partial f}{\partial x_{2}}}\,},{\displaystyle f_{x_{1}x_{1}}={\frac {\partial ^{2}f}{\partial x_{1}^{2}}}\,},{\displaystyle f_{x_{2}x_{2}}={\frac {\partial ^{2}f}{\partial x_{2}^{2}}}\,},{\displaystyle f_{x_{1}x_{2}}={\frac {\partial ^{2}f}{\partial x_{1}\partial x_{2}}}={\frac {\partial ^{2}f}{\partial x_{2}\partial x_{1}}}\,}\)

写成向量形式:

\[f(\vec{x}) \approx f(\vec{x_0}) + \nabla f(\vec{x_0}) \cdot (\vec{x} - \vec{x_0}) + \frac{1}{2}(\vec{x} - \vec{x_0})^TH(\vec{x_0})(\vec{x} - \vec{x_0})\]

其中

\[ {\displaystyle H(x_{0})={\begin{bmatrix}{\frac {\partial ^{2}f}{\partial x_{1}^{2}}}&{\frac {\partial ^{2}f}{\partial x_{1}\,\partial x_{2}}}\\\\{\frac {\partial ^{2}f}{\partial x_{2}\,\partial x_{1}}}&{\frac {\partial ^{2}f}{\partial x_{2}^{2}}}\end{bmatrix}}_{x_{0}}\,} \]

所以推广到更高阶就如上所示,那么Hessian 的一个很具体的应用就是,判断函数的极值,正如导数的作用一样。

一元函数: \(f: \mathbb{R} \to \mathbb{R}\) ,在 $ x=x_0$ 点处具有二阶导数,且 \(f'(x_{0})=0, f''(x_{0}) \neq 0\), 则

  • \(f''(x) < 0\), 极大值
  • \(f''(x) > 0\), 极小值
  • \(f''(x) = 0\), 鞍点
  • \(f''(x)\) 不存在,没法直接判断,或许是极值点

那么针对于 \(f: \mathbb{R}^n \to \mathbb{R}\), 在 \(\vec{x}_0\) 处梯度为 \(\vec{0}\),那么我们可以用 \(H(\vec{x_0})\) 来帮助判断:

  • H 正定, 极小值
  • H 负定, 极大值
  • H 不定, 鞍点
  • H 不可逆, 也不能直接判断

至于判定矩阵是否正定可以:

  • 尝试Cholesky分解,看其是否存在
  • 计算所有的特征值,看是否为正