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\)

所以有
\[
\begin{align}
\frac{df(x)}{dx}&=
\left[
\begin{matrix}
\frac{\partial{f(x)}}{\partial{x_1}} & \cdots & \frac{\partial{f(x)}}{\partial{x_n}}
\end{matrix}
\right] \\
&=\left[
\begin{matrix}
\frac{\partial{f_1(x)}}{\partial{x_1}} & \cdots & \frac{\partial{f_1(x)}}{\partial{x_n}} \\
\vdots & \ddots & \vdots \\
\frac{\partial{f_m(x)}}{\partial{x_1}} & \cdots & \frac{\partial{f_m(x)}}{\partial{x_n}} \\
\end{matrix}
\right] ∈R^{m×n} \\
\end{align}
\]

接下来给出Jacobian定义:

\(f:R^n→R^m\)的所有一阶偏导集合叫做Jacobian。Jacobian J 是一个\(m×n\)的矩阵,形式定义如下:
\[
\begin{align}
J&=\nabla_xf=\frac{df(x)}{dx} \\
&=\left[
\begin{matrix}
\frac{\partial{f(x)}}{\partial{x_1}} & \cdots & \frac{\partial{f(x)}}{\partial{x_n}}
\end{matrix}
\right] \\
&=\left[
\begin{matrix}
\frac{\partial{f_1(x)}}{\partial{x_1}} & \cdots & \frac{\partial{f_1(x)}}{\partial{x_n}} \\
\vdots & \ddots & \vdots \\
\frac{\partial{f_m(x)}}{\partial{x_1}} & \cdots & \frac{\partial{f_m(x)}}{\partial{x_n}} \\
\end{matrix}
\right] \\
x &= \left[
\begin{matrix}
x_1 \\
\vdots \\
x_n
\end{matrix}
\right],\,\,\, J(i,j)=\frac{\partial{f_i}}{\partial{x_j}}
\end{align}
\]

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}\),然而凭一阶导数不能判断它是鞍点、局部极大点还是局部极小点。海森矩阵可能解答这个问题。

\[{\displaystyle H={\begin{vmatrix}{\frac {\partial ^{2}f}{\partial x^{2}}}&{\frac {\partial ^{2}f}{\partial x\,\partial y}}\\\\{\frac {\partial ^{2}f}{\partial y\,\partial x}}&{\frac {\partial ^{2}f}{\partial y^{2}}}\end{vmatrix}}={\frac {\partial ^{2}f}{\partial x^{2}}}{\frac {\partial ^{2}f}{\partial y^{2}}}-({\frac {\partial ^{2}f}{\partial y\,\partial x}})^{2}}\]

  • 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}}\) 不是局部极值

MARSGGBO♥原创







2018-12-24

【Math for ML】向量微积分(Vector Calculus)的更多相关文章

  1. <<Vector Calculus>>笔记

    现在流行用Exterior Caculus, 所以个人觉得Matthews这本书有点过时了. 想学Vector Calculus的话,推荐<Vector Calculus, Linear Alg ...

  2. 【Math for ML】矩阵分解(Matrix Decompositions) (下)

    [Math for ML]矩阵分解(Matrix Decompositions) (上) I. 奇异值分解(Singular Value Decomposition) 1. 定义 Singular V ...

  3. <Vector Calculus>(by Paul C, Matthews) Notes

    现在流行用Exterior Caculus, 所以个人觉得Matthews这本书有点过时了. 想学Vector Calculus的话,推荐<Vector Calculus, Linear Alg ...

  4. R语言编程艺术# 数据类型向量(vector)

    R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...

  5. 精解Mat类(一):基本数据类型-固定大小的 矩阵类(Matx) 向量类(Vector)

    一.基础数据类型 1.(基础)固定大小矩阵类 matx 说明: ①    基础矩阵是我个人增加的描述,相对于Mat矩阵类(存储图像信息的大矩阵)而言. ②    固定大小矩阵类必须在编译期间就知晓其维 ...

  6. R语言编程艺术#01#数据类型向量(vector)

    R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...

  7. Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动

    如果我们习惯于数学坐标系,那么对于Silverlight中的坐标系可能会有些不习惯.因为在Silverlight中的坐标系与Flash中的坐标系一样,一切都的颠倒的.在标准的数学坐标系中,X轴表示水平 ...

  8. 向量容器vector操作

    1.向量容器vector 1.1 vector说明 进行vector操作前应添加头文件#include<vector>: vector是向量类型,可以容纳许多类型的数据,因此也被称为容器: ...

  9. 向量时钟Vector Clock in Riak

    Riak 是以 Erlang 编写的一个高度可扩展的分布式数据存储,Riak的实现是基于Amazon的Dynamo论文,Riak的设计目标之一就是高可用.Riak支持多节点构建的系统,每次读写请求不需 ...

随机推荐

  1. HDU 4770 Lights Against Dudely(暴力+状压)

    思路: 这个题完全就是暴力的,就是代码长了一点. 用到了状压,因为之前不知道状压是个东西,大佬们天天说,可是我又没学过,所以对状压有一点阴影,不过这题中的状压还是蛮简单的. 枚举所有情况,取开灯数最少 ...

  2. nginx location反向代理不对等时的处理

    server{ server_name git.cheyunhua.top; location /test12/ { proxy_pass https://www.baidu.com/;}} loca ...

  3. SQL语法基础之DROP语句

    SQL语法基础之DROP语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看DROP帮助信息 mysql> ? DROP Many help items for yo ...

  4. java用流的方式加载图片

    前端: <img ng-show="photo" class="vertical_b" id="photoImg" src=" ...

  5. Jquery 添加插件

    原文:http://www.iteye.com/topic/545971 jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法 ...

  6. Java技能

    1.思维导图 Java知识思维导图 2 3.Java理解 深入理解Java:注解(Annotation)自定义注解入门 4.JAVA数据类型 基本数据类型 布尔类型:boolean 数值类型: 定点类 ...

  7. 转载--关于hdfs

    原文章链接 你肯定听过Hadoop,对就是那头奔跑的小象. 图片描述 Hadoop作为大数据时代代表性的解决方案被大家所熟知,它主要包含两部分内容: HDFS分布式文件存储 MapReduce分布式计 ...

  8. Python正则匹配之有名分组

    参考:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html # re.match import re m = re.match(r'( ...

  9. linux大法好。。。。。

    vim: 移动光标至段首:^或者home键 移动光标至段尾:$或者end键 删除光标位置到本行开头:d0或者d^ 删除光标位置到本行末尾:D或者d$ 撤销操作:u 取消撤销操作:ctrl+r ---- ...

  10. C# UserControl集合属性使用

    在UserControl中,定义集合属性时,如果直接使用List是检测不到在属性框中的列表修改变化的,可以通过 ObservableCollection() 实现 1.定义类 [Serializabl ...