Jacobian矩阵和Hessian矩阵

news/2024/7/3 2:01:51

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

重磅干货,第一时间送达

前言

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

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

雅可比矩阵

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

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

309bd598331c8462d41f95d247b7be66.png

此矩阵表示为:da8ce5a2cecbaaae5db9cd0d68be9c97.png,或者为d7ed136d0d0e3450be0f4f678914ef5b.png

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

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

967705575c73d86ded542d45487ac4f5.png

雅可比行列式

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

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

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

2. 海森Hessian矩阵

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

e2f69de606dcc02d006a2aa6acfb1796.png

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

1261c073a80f75bc4aacdbb55dc015b3.png

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

2e22deb8c1b468e15f647d461ea0a1d7.png

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

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

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

1) 求解方程

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

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

a12eb55eef76188723f313315badc2f8.png

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

ea770d413f321163904d14ad1739fcad.png

上式求解得:

e580399f28a946fe999fe837cedc38eb.png

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

a8e7734b7f857f9639c40a30c39d9ca5.png

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

24096b670a849571ec7dea816893a6c1.png

2), 最优化

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

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

cc04f174b6ae2377cc4cc58c19342fe4.png

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

ba3cda8dccb99fe128a34641423e85ff.png

求得出迭代公式:

d17b28eb7de5bf5bfd6a3c6859db5952.png

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

e8716351b06b958be3999916f78c3bb7.png

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

fcd9c18daa5caa0d443f501877ff96cc.png

其中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“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

24553199efcdb4f9d3c18d9729827ba1.png

36fcfa113c45265c8bc926d2831e99fa.png


http://lihuaxi.xjx100.cn/news/272544.html

相关文章

口罩检测识别率惊人,这个Python项目开源了

作者 | 一颗小树x,CSDN 博主编辑 | 唐小引来源 | CSDN 博客昨天在 GitHub 上看到一个有趣的开源项目,它能检测我们是否有戴口罩,跑起程序测试后,发现识别率挺高的,也适应不同环境,于是分享给大家。首先感谢…

设计文档

因为内容过多,只发一部分,详见设计文档。 本详细设计说明书编写的目的是说明程序模块的设计考虑,包括程序描述、输入/输出、算法和流程逻辑等,为软件编程和系统维护提供基础。 本说明书是设计阶段的成果,说明了功能分配…

AS1.0(2.0)中的XML示例

虽然Flash早就升级为AS3.0&#xff0c;但是FMS的服务端编程依然仅支持AS1.0(2.0)&#xff0c;服务端与.net通讯的最简单方式莫过于请求一个RESTful的webService或wcf&#xff0c;通过它们返回的xml来获取数据。 var _xml:XML new XML("<ArrayOfstring xmlns\"htt…

基于 Spring Cloud 开发的分布式系统,遇到爬虫、接口盗刷怎么办?

点击上方“方志朋”&#xff0c;选择“设为星标”回复”666“获取新整理的面试文章来源 | oschina.net/p/kk-anti-reptilekk-anti-reptile是&#xff0c;适用于基于spring-boot开发的分布式系统的反爬虫组件。系统要求基于spring-boot开发(spring-boot1.x, spring-boot2.x均可)…

smarty 模板引擎

http://blog.csdn.net/zuiaituantuan/article/details/5951242 http://wenku.baidu.com/link?url-UHlSnTXOOAjFG1KjX6T9sEG6V4hNAMfRDpMuRRnc_FKbFAxiE5Ntk4lzxSm-7Z531uWdfvgYx81sdC61SgTZm7q8FdUt3gSs7ZlC0JR1SW转载于:https://www.cnblogs.com/hxjbc/p/4441879.html

国内高校硕博补贴大公开!(某校博士在读已经年薪 25w 了)

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达转自 | 中国农业大学论坛&#xff0c;论文项目硕博招聘仅作学术分享&#xff0c;不代表本公众号立场&#xff0c;侵权联系删除之前有消息称&#xff0c;中科大为吸引优质的博…

听说过代码洁癖,Bug洁癖怎么解?

来源 | Python编程时光&#xff08;ID: Cool-Python&#xff09;当我们写的一个脚本或程序发生各种不可预知的异常时&#xff0c;如果我们没有进行捕获处理的时候&#xff0c;通常都会致使程序崩溃退出&#xff0c;并且会在终端打印出一堆 密密麻麻 的 traceback 堆栈信息来告诉…

VS code 插件配置手册

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达VS code 插件配置手册C/C Tools插件---C/C支持安装库文件的配置GDB本地调试配置GDB远程调试配置Remote VSCode插件---远程编辑文件安装环境配置在本地端的配置在远程端的配…