点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

前言

还记得被Jacobian矩阵和Hessian矩阵统治的恐惧吗?本文清晰易懂的介绍了Jacobian矩阵和Hessian矩阵的概念,并循序渐进的推导了牛顿法的最优化算法。希望看过此文后,你对这两类矩阵有一个更深刻的理解。

在向量分析中,雅可比矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式. 还有, 在代数几何中,代数曲线的雅可比量表示雅可比簇:伴随该曲线的一个代数群,曲线可以嵌入其中。它们全部都以数学家卡尔·雅可比(Carl Jacob, 1804年10月4日-1851年2月18日)命名;英文雅可比量”Jacobian”可以发音为[ja ˈko bi ən]或者[ʤə ˈko bi ən]。

雅可比矩阵

雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近. 因此, 雅可比矩阵类似于多元函数的导数 。

假设是一个从欧式n维空间转换到欧式m维空间的函数。这个函数由m个实函数组成: y1(x1,...xn),...,ym(x1,...,xn)。这些函数的偏导数(如果存在)可以组成一个m行n列的矩阵, 这就是所谓的雅可比矩阵:

此矩阵表示为:,或者为

这个矩阵的第i行是由梯度函数的转置yi(i=1,…,m)表示的。

如果p是Rn中的一点,F在p点可微分, 那么在这一点的导数由给出(这是求该点导数最简便的方法). 在此情况下, 由F(p)描述的线性算子即接近点p的F的最优线性逼近, x逼近于p:

雅可比行列式

如果m=n,那么F是从n维空间到n维空间的函数,且它的雅可比矩阵是一个方块矩阵。于是我们可以取它的行列式,称为雅可比行列式。

在某个给定点的雅可比行列式提供了在接近该点时的表现的重要信息。 例如, 如果连续可微函数F在p点的雅可比行列式不是零,那么它在该点附近具有反函数。 这称为反函数定理。 更进一步, 如果p点的雅可比行列式是正数,则F在p点的取向不变;如果是负数,则F的取向相反。而从雅可比行列式的绝对值,就可以知道函数F在p点的缩放因子;这就是为什么它出现在换元积分法中。

对于取向问题可以这么理解,例如一个物体在平面上匀速运动,如果施加一个正方向的力F,即取向相同,则加速运动, 类比于速度的导数加速度为正;如果施加一个反方向的力F,即取向相反,则减速运动,类比于速度的导数加速度为负。

2. 海森Hessian矩阵

在数学中,海森矩阵(Hessian matrix或Hessian)是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵,此函数如下:

如果f的所有二阶导数都存在,那么f的海森矩阵即:

其中x=(x1,x2,...,xn),即H(f)为:

(也有人把海森定义为以上矩阵的行列式)海森矩阵被应用于牛顿法解决的大规模优化问题。

海森矩阵在牛顿法中的应用

一般来说, 牛顿法主要应用在两个方面,1, 求方程的根; 2, 最优化。

1) 求解方程

并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法, 可以迭代求解。

原理是利用泰勒公式, 在x0处展开,且展开到一阶,即:

求解方程f(x)=0,即

上式求解得:

因为这是利用泰勒公式的一阶展开,处并不是完全相等,而是近似相等,这里求得x1并能让f(x)=0,只能说的值比更接近f(x)=0,于是乎,迭代求解的想法就很自然了,可以进而推出:

通过迭代,这个式子必然在的时候收敛,整个过程如下图:

2), 最优化

在最优化的问题中,线性最优化至少可以使用单纯形法(或称不动点算法)求解,但对于非线性优化问题,牛顿法提供了一种求解的办法。假设任务是优化一个目标函数f,求函数f的极大极小问题,可以转化为求解函数f的导数的问题,这样求可以把优化问题看成方程求解问题()。剩下的问题就和第一部分提到的牛顿法求解很相似了。

这次为了求解的根,首先把f(x)在探索点处泰勒展开,展开到2阶形式进行近似:

然后用f(x)的最小点做为新的探索点,据此,令:

求得出迭代公式:

一般认为牛顿法可以利用到曲线本身的信息, 比梯度下降法更容易收敛(迭代更少次数), 如下图是一个最小化一个目标方程的例子, 红色曲线是利用牛顿法迭代求解, 绿色曲线是利用梯度下降法求解.

在上面讨论的是2维情况, 高维情况的牛顿迭代公式是:

其中H是hessian矩阵, 定义见上.

高维情况依然可以用牛顿迭代求解, 但是问题是Hessian矩阵引入的复杂性, 使得牛顿迭代求解的难度大大增加, 但是已经有了解决这个问题的办法就是Quasi-Newton method, 不再直接计算hessian矩阵, 而是每一步的时候使用梯度向量更新hessian矩阵的近似。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

Jacobian矩阵和Hessian矩阵相关推荐

  1. Jacobian矩阵和Hessian矩阵的理解

    深度学习中梯度向量的计算,Jacobian矩阵和Hessian矩阵是基础的知识点. 求微分其实就是线性化,导数其实就是线性空间之间的线性变换,Jaocibian矩阵本质上就是导数. 比如,映射在处的导 ...

  2. 三维重建4:Jacobian矩阵和Hessian矩阵

    在使用BA平差之前,对每一个观测方程,得到一个代价函数.对多个路标,会产生一个多个代价函数的和的形式,对这个和进行最小二乘法进行求解,使用优化方法.相当于同时对相机位姿和路标进行调整,这就是所谓的BA ...

  3. 牛顿法, Jacobian矩阵 和 Hessian矩阵

    牛顿法 主要有两方面的应用: 求方程的根: 求解最优化方法: 为什么要用牛顿法求方程的根? 问题很多,牛顿法 是什么?目前还没有讲清楚,没关系,先直观理解为 牛顿法是一种迭代求解方法(Newton童鞋 ...

  4. 从 Jacobian 矩阵、Hessian 矩阵到 Theano 实现

    T.grad(cost, wrt),一般接收两个参数,第一个参数表示需要求导的函数,放在深度学习的背景下就是代价函数,wrt(with respect to)表示代价函数所关于的参数(通俗地讲,就叫自 ...

  5. 【矩阵学习】Jacobian矩阵和Hessian矩阵

    [矩阵学习]Jacobian矩阵和Hessian矩阵 Jacobian 矩阵 Jacobian 行列式 Hessian 矩阵 Hessian 在牛顿法中的应用 Jacobian 矩阵 在向量分析中, ...

  6. Jacobian矩阵、Hessian矩阵

    本文来源于:http://jacoxu.com/jacobian%e7%9f%a9%e9%98%b5%e5%92%8chessian%e7%9f%a9%e9%98%b5/ 由于经常忘记雅克比矩阵和海森 ...

  7. [work] Jacobian矩阵和Hessian矩阵

    1. Jacobian 在向量分析中, 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式. 还有, 在代数几何中, 代数曲线的雅可比量表示雅可比簇:伴随该曲线的一个代数群, 曲 ...

  8. Jacobian矩阵和Hessian矩阵,LM最优化方法

    1. 前言 熟悉机器学习的童鞋都知道,优化方法是其中一个非常重要的话题,最常见的情形就是利用目标函数的导数通过多次迭代来求解无约束最优化问题.实现简单,coding 方便,是训练模型的必备利器之一.这 ...

  9. 【机器学习中的矩阵求导】(六)Jacobian矩阵和Hessian矩阵

    学习总结 (0)回顾矩阵向量化,和 克罗内克积的主要运算法则. (1)梯度向量是雅克比矩阵的特例. (2)Hessian矩阵是梯度向量g(x)对自变量x的Jacobian矩阵,描述了函数的局部曲率. ...

最新文章

  1. 明日召开!ICLR 2021中国预讲会明天开启,为期3天,5大专题,39场报告
  2. 12.5.2 升12.5.3的补丁 linux下载,游戏1.17/2.12/3.8/4.5/5.2更新内容[附离线补丁下载地址]...
  3. C# WINFORM 打包数据库
  4. 【Java 并发编程】线程指令重排序问题 ( 指令重排序规范 | volatile 关键字禁止指令重排序 )
  5. Linux内存初始化(C语言部分)
  6. python列表常用操作_Python列表(list)常用操作方法小结
  7. java实用教程——组件及事件处理——DocumentEvent事件
  8. MySQL——基本配置
  9. 三星的S3C2440A 存储器控制器
  10. 物联网中大数据的挑战有哪些
  11. 将IDM添加到谷歌浏览器
  12. java基础之枚举类
  13. F12下载网页视频(开放网页)
  14. 解密百度前端技术体系
  15. caj转word免费转换怎么操作?
  16. 创建MySQL数据库·数据库笔记(三)
  17. BZOJ 1135 [POI2009]Lyz 线段树
  18. linux双系统如何选择顺序,Ubuntu和Windows双系统选择开机顺序
  19. 股票投资 策略(收集)
  20. 在火狐上安装chrome 的crx扩展

热门文章

  1. 别以为元宇宙冷了,其实离我们更近了
  2. 对话库克:商业具有周期性
  3. http性能测试工具wrk源码学习之开篇
  4. 数据特征分析:相关性分析(Pandas中的corr方法)
  5. 开发者解决当前和未来挑战?英特尔On技术创新峰会中国在线会议来了丨Intel Innovation
  6. dropzone.js php,dropzone-js
  7. RTL8198D 编译出现sk_pacing_shift_update未定义
  8. HDU 6386 Age of Moyu
  9. 再强调一遍, 我为什么不建议大家接外包干私活?
  10. 程序员面试金典面试题 01.06. 字符串压缩