一图搞懂梯度、散度、旋度、Jacobian、Hessian、Laplacian之间的关系

news/2024/7/7 20:33:21

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

重磅干货,第一时间送达9a02f9503e018572de195b70ea7c357e.png

来自 | 知乎   作者 | 王赟 Maigo

链接 | https://zhuanlan.zhihu.com/p/35323714

本文仅作学术交流,如有侵权,请联系后台删除

   一、入门

fee3f6fe3e8b20c6919762d7c56b7493.png

图中的细实线箭头表示了四种一阶微分运算,包括梯度、散度、旋度和 Jacobian。每条箭头的起点表示了相应运算的自变量的类型,终点表示了相应运算的因变量的类型,例如梯度运算是作用在标量上的,结果是向量。图中的「向量」默认为列向量。

这四种一阶微分运算可以统一用算符 (读作 nabla)表示。Nabla 算符是一个形式向量 ,它可以如下地作用于标量 或向量 上:

  • 直接与标量 相乘,得到 的梯度 。

  • 与向量 点乘,得到 的散度 。本文把点乘用矩阵乘法的形式写作 。

  • 与向量 叉乘,得到 的旋度 。

  • 若允许偏导算符写在变量的右边,则 就可以表示 的 Jacobian。

图中的粗实线箭头表示了两种二阶微分运算,它们可以由两个一阶微分运算组合而成,即:

  • 梯度的散度就是 Laplacian;

  • 梯度的 Jacobian 就是 Hessian。

图中的虚线箭头表示了一种不涉及微分的运算(迹)。在微分运算之后接上「迹」运算,可能得到另一种微分运算,如:

  • Jacobian 的迹就是散度;

  • Hessian 的迹就是 Laplacian。

   二、入迷

bf3a6935499268be9ffcbebeac407b35.png

图中的四种一阶微分运算两两搭配,一共可以得到 7 种二阶微分运算。第一节的图中画出了两种,本节的图中画出了另外五种(浅蓝色与灰色)。这五种二阶微分运算并没有特别的名字,但其中有两种是恒等于 0 的:

  • 梯度的旋度恒为零向量;

  • 旋度的散度恒为 0。

其中,「梯度无旋」可以用下面的图形象说明(图片来自@得分的):

7ca555c82ef6672a1935120d49ed0be7.png

如果梯度有旋会怎么样?

   三、入魔


963d64a0d73cdb679d8eea69ee850392.png

Laplacian 是一个作用于标量的二阶微分运算,其结果也是标量。但我们也可以把它作用于一个向量的每一个元素,得到一个向量;这种运算称为向量 Laplacian。

Laplacian 运算作用于标量 上的结果可以用 nabla 算符写成 。这种写法无法直接推广到向量 Laplacian,因为 里 无法直接跟 做矩阵乘法。但如果允许偏导算符写在变量右边,那就可以把向量 Laplacian 表示成 。这是 Jacobian 运算与「矩阵右乘 」运算的复合;后者的效果是对矩阵的每一行求散度。图中恰好有一个为「逐行散度」运算准备的空位,我们把它补充到图中。

向量 Laplacian 的结果,恰好等于「散度的梯度」与「旋度的旋度」之差。为了体现出这种关系,我把「从向量到向量」的三种二阶微分运算改用橙红色箭头表示。

   四、入土

b682fdf5ebc565420944c5fcdd64e6f2.png

既然引入了「逐行散度」这个一阶微分运算,那就索性把它能组合出来的二阶微分运算也全都放到图里去吧!这样就得到了一个完美对称的图,它包含了 11 种二阶微分运算,其中:

  • 有两种比较常见:Laplacian 和 Hessian;

  • 有两种恒等于零:「梯度的旋度」和「旋度的散度」;

  • 有三种满足减法关系:向量 Laplacian = 散度的梯度 - 旋度的旋度;

  • 剩下的四种没有专门的名字,也很罕见。

其中任何一种微分运算后面接上「迹」,都可以得到另一种同阶微分运算:

  • Jacobian 的迹就是散度;

  • Hessian 的迹就是 Laplacian;

  • 旋度的 Jacobian 的迹就是旋度的散度,恒等于 0;

  • 矩阵逐行散度的 Jacobian 的迹,就是它的逐行散度的散度。

但需要注意只能在运算之后接上「迹」,在运算之前接「迹」是不行的,比如矩阵的迹的梯度不等于它的逐行散度。

如果有读者知道图中几种没有名字的运算叫什么名字、有什么用途,或者在图中内容之外还有什么值得包括进来的微分运算,欢迎补充。

小白团队出品:零基础精通语义分割↓

1b59c85bcb324f7b29bfecc2d7da52d9.png

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

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

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

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

下载3:OpenCV实战项目20讲

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

交流群

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

7ddd4704c99dba032d086e220e820146.png

77807a31ac8da29ce45155ef50274cb5.png


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

相关文章

hdu-5778 abs(暴力枚举)

题目链接: abs Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Problem DescriptionGiven a number x, ask positive integer y≥2, that satisfy the following conditions:1. The absolute value of y - x is minimal2. To prime f…

验证ArrayList是线程不安全的集合

package collectionSafe;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Test { /* 在本例中,验证ArrayList是线程不安全的容器 主要思路: 循环同时开启1000个线程,每个线程的作用…

Windows系统下的 vbs病毒生成器使用方法!

1,压缩包里的东西~ 下载并解压“病毒生成器”压缩文件,打开对应的文件夹,双击"vir1.exe" 应用程序图标。 下载时杀毒软件会自动将其识别为病毒,建议关闭主机上运行的杀毒软件 双击软件启动~:如果有杀毒软件…

深度学习在不同领域的应用,我去,这也行!?

点击上方“视学算法”,选择加"星标"或“置顶”重磅干货,第一时间送达作者丨Giant知乎(已授权)来源丨https://www.zhihu.com/question/47563637/answer/1997061212编辑丨极市平台导读 本文介绍几款深度学习领域的有趣应用…

XShell连接Deepin

为什么80%的码农都做不了架构师?>>> 先让deepin安装openssh sudo apt-get install openssh-serverchkconfig ssh on 转载于:https://my.oschina.net/enzo/blog/110518

archlinux常用的包管理器

pacman -Sy abc 和源同步后安装名为abc的包 pacman -S abc 从本地数据库中得到abc的信息,下载安装abc包 pacman -Sf abc 强制安装包abc pacman -Ss abc 搜索有关abc信息的包 pacman -Si abc 从数据库中搜索包abc的信息 pacman -Syu 同步源,并更新系统 pa…

怎样用Python控制图片人物动起来?一文就能Get!

作者 | 李秋键责编 | 李雪敬头图 | CSDN 下载自视觉中国出品 | AI科技大本营(ID:rgznai100)引言:近段时间,一个让梦娜丽莎图像动起来的项目火遍了朋友圈。而今天我们就将实现让图片中的人物随着视频人物一起产生动作。…

逻辑回归api介绍

逻辑回归api介绍 sklearn.linear_model.LogisticRegression(solverliblinear, penalty‘l2’, C 1.0) 【solver是用什么样的梯度下降算法来解决】 solver可选参数:{liblinear, sag, saga,newton-cg, lbfgs}, 默认: liblinear;用于优化问题的算法。 对于…