理解Jacobian矩阵

本文主要是以下教程的一个整理:
Khan-academy: The Jacobian matrix
可能有错,欢迎指正。

Locally Linear

我们考虑一下简单的函数:
f([xy])=[x+sin⁡(y)y+sin⁡(x)]f\left(\left[\begin{array}{l} {x} \\ {y} \end{array}\right]\right)=\left[\begin{array}{l} {x+\sin (y)} \\ {y+\sin (x)} \end{array}\right] f([xy​])=[x+sin(y)y+sin(x)​]
他将一个[x,y]的点,经过一个变换,就像下图那样:


这似乎很复杂,没办法分析,但一个很重要的性质是Localy linear, 我们看一个很小的正方形:


然后进行上述变换的操作:


神奇的事情发生了,在局部结构里面,这个变换看起来就是一个线性变换。等等,线性变换是什么意思?

线性变换

线性变换是什么意思?我们知道,一个向量乘一个矩阵其实就是一个线性变换,但直观来看,是什么样的,我们看以下这个线性变换是怎样的。

[2−311][xy]→[2x+(−3)y1x+1y]\left[\begin{array}{rr}{2} & {-3} \\ {1} & {1}\end{array}\right]\left[\begin{array}{l}{x} \\ {y}\end{array}\right] \rightarrow \left[\begin{array}{ll} {2 x+(-3)} & {y} \\ {1 x+1} & {y} \end{array}\right] [21​−31​][xy​]→[2x+(−3)1x+1​yy​]


可以看到,对比于非线性变换,线性变换之后的坐标,其实都是相互平行的,换句话说,如果我们能知道基在线性变换后的结果,我们就能想象出整个坐标系是长什么样的。显然,

[2−311][10]→[21]\left[\begin{array}{rr}{2} & {-3} \\ {1} & {1}\end{array}\right]\left[\begin{array}{l}{1} \\ {0}\end{array}\right] \rightarrow \left[\begin{array}{ll} {2 } \\ {1 } \end{array}\right] [21​−31​][10​]→[21​]

[2−311][01]→[−31]\left[\begin{array}{rr}{2} & {-3} \\ {1} & {1}\end{array}\right]\left[\begin{array}{l}{0} \\ {1}\end{array}\right] \rightarrow \left[\begin{array}{ll} {-3 } \\ {1 } \end{array}\right] [21​−31​][01​]→[−31​]

我们发现,基变换后的结果恰好对应与变换矩阵的第一列和第二列!

Jacobian Matrix

现在回到正题,我们刚才说了,非线性的变换在某个局部点上的变换,可以看作是一个线性变换,而这个线性变换应该是一个2*2的矩阵来的,我们希望知道这个矩阵是什么。

现在我们开始分析一下这个局部变换:先考虑在原空间上x轴一个很小的距离dx:

经过一个线性变化,这个很短的∂x\partial x∂x变成了在另一个空间中很小的一步(如下图绿色箭头)

这个绿色的箭头,就是∂x\partial x∂x经过变换后的样子,可以看到这个变换是斜向下的变换,也就是说他同时改变了两个坐标,是一种2维的变换,该变换可以分解成两个坐标上的变换,在x轴上的变换后的长度就是绿色虚线,这个长度是等于∂f1=∂f1/∂x∗∂x\partial f_1=\partial f_1/\partial x*\partial x∂f1​=∂f1​/∂x∗∂x,而变换率则是∂f1/∂x\partial f_1/\partial x∂f1​/∂x (ps: 之所以可以用导数表示变化率是因为这就是导数的定义:lim⁡Δx→0f(x+Δx,y)−f(x,y)Δx\lim_{\Delta x \to 0}\frac{f(x+\Delta x,y)-f(x,y)}{\Delta x}limΔx→0​Δxf(x+Δx,y)−f(x,y)​),同理,在y轴上的变换是红色虚线,∂f2/∂x\partial f_2/\partial x∂f2​/∂x.

回想一下,根据上面的线性变换矩阵,我们知道,变换矩阵的第一列实际上是用来变换x轴的值,所以我们将∂f1/∂x\partial f_1/\partial x∂f1​/∂x和∂f2/∂x\partial f_2/\partial x∂f2​/∂x.放在变换矩阵的第一列,同理


原始坐标的∂y\partial y∂y,经过变换后(红色箭头)的坐标,在新坐标系上的变化率是∂f1/∂y\partial f_1/\partial y∂f1​/∂y和∂f2/∂y\partial f_2/\partial y∂f2​/∂y. 于是我们就得到了jacobian matrix,他可以实现线性转换:

[∂f1/∂x∂f1/∂y∂f2/∂x∂f2/∂y][∂x0]→[∂f1∂f2]\left[\begin{array}{rr} {\partial f_1/\partial x} & {\partial f_1/\partial y} \\ {\partial f_2/\partial x} & {\partial f_2/\partial y} \end{array}\right]\left[\begin{array}{l}{\partial x} \\ {0}\end{array}\right] \rightarrow \left[\begin{array}{ll} {\partial f_1 } \\ {\partial f_2 } \end{array}\right] [∂f1​/∂x∂f2​/∂x​∂f1​/∂y∂f2​/∂y​][∂x0​]→[∂f1​∂f2​​]

[∂f1/∂x∂f1/∂y∂f2/∂x∂f2/∂y][0∂y]→[∂f1∂f2]\left[\begin{array}{rr} {\partial f_1/\partial x} & {\partial f_1/\partial y} \\ {\partial f_2/\partial x} & {\partial f_2/\partial y} \end{array}\right]\left[\begin{array}{l}{0} \\ {\partial y}\end{array}\right] \rightarrow \left[\begin{array}{ll} {\partial f_1 } \\ {\partial f_2 } \end{array}\right] [∂f1​/∂x∂f2​/∂x​∂f1​/∂y∂f2​/∂y​][0∂y​]→[∂f1​∂f2​​]

理解分布变换

现在我们思考下概率分布变换的问题,考虑如下变换:
y=g(x)\mathbf{y}=g(\mathbf{x}) y=g(x)

随机变量通过一个函数f进行变换,根据公式,他们的分布变换公式为:

px(x)=py(g(x))∗∣det⁡Jg(x)∣py(y)=px(g−1(y))∗∣det⁡Jg−1(y)∣p_x(x)=p_y(g(x))*|\det J g(x)| \\ p_y(y)=p_x(g^{-1}(y))*|\det J g^{-1}(y)| px​(x)=py​(g(x))∗∣detJg(x)∣py​(y)=px​(g−1(y))∗∣detJg−1(y)∣

其实出现这个原因是因为我们希望这个通过变换后的分布的积分∫xpy(g(x))dx\int _x p_y(g(x))dx∫x​py​(g(x))dx是等于1的,然而,如果g是非线性变换,其映射空间的dy与原空间dx的长度是不相等的(如果x是高维就是dx的体积不再相等),从而导致这个积分是不等于1的。为了修复这个积分,我们需要将dx转换,使得他适用于另外一个空间:∣det⁡Jg(x)∣∗dx|\det J g(x)|*dx∣detJg(x)∣∗dx,这个转换就是乘上Jacobian matrix, 从上一章内容我们知道,乘上一个Jacobian可以将dx的长度转换成dy的长度,又因为,我们知道pyp_ypy​对于dydydy的积分是等于1的,所以转换后对于dx的积分也是等于1的.

我们可以进一步直观地来理解这个分布变换:

如图所示,这是一个p(x)到p(y)分布转换的一个例子,我们发现,在x被拉长了两倍,于是,如果我们不做任何补偿,将会出现py(y)=px(y−12)=1p_y(y)=p_x(\frac{y-1}{2})=1py​(y)=px​(2y−1​)=1的情况,显然,这时候新的分布py(y)p_y(y)py​(y)的面积是等于2的,这显然是错的。这是因为dx=12dydx=\frac{1}{2}dydx=21​dy,要想在dy的积分下等于1,那么就要补偿从dx转到dy这一尺度转换的损失:

py(y)=px(y−12)12=0.5p_y(y)=p_x(\frac{y-1}{2})\frac{1}{2}=0.5 py​(y)=px​(2y−1​)21​=0.5

这里1/2其实就是等于(y−12)′=1/2(\frac{y-1}{2})'=1/2(2y−1​)′=1/2

参考资料

https://www.khanacademy.org/math/multivariable-calculus/multivariable-derivatives/jacobian/v/the-jacobian-matrix

理解Jacobian矩阵与分布变换相关推荐

  1. 理解Jacobian矩阵与行列式

    来源:知乎-gwave 地址:https://zhuanlan.zhihu.com/p/352438848 在数学.物理和工程领域,将问题通过坐标变换到一个更容易表达.分解和计算的坐标系统是个非常核心 ...

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

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

  3. Jacobian矩阵的理解

    Jacobian矩阵的理解 前言 学习RNN时看到Jacobian矩阵时我的内心是崩溃的,啥是Jacobian矩阵,怎么活生生就蹦出来一个Jacobian矩阵,说好的bp算法只用求导呢,然后就开始扒J ...

  4. jacobian 矩阵意义_对雅可比矩阵的理解

    众所周知,二维平面直角坐标系中的面积微元转换为平面极坐标系有 为什么? 尝试下证明 : 先列出x,y与r, 之间的关系 , 微分一下 , 得到了 什么?你说你不知道第三行怎么来的?我也不知道... 于 ...

  5. 形象理解线性代数(三)——列空间、零空间(核)、值域、特征值(特征向量)、矩阵与空间变换、矩阵的秩

    这里,我们还是要以 形象理解线性代数(一)--什么是线性变换?为基础.矩阵对向量的作用,可以理解为线性变换,同时也可以理解为空间的变换,即(m*n)的矩阵会把一个向量从m维空间变换到n维空间. 一.矩 ...

  6. 【数学】对向量的求导和Jacobian矩阵的几何意义与Hessian矩阵

    算是上一篇[数学]均匀分布生成其他分布的方法的一个数学基础补遗吧. 函数对向量求导 Jacobian矩阵相当于通用型的函数的一阶导数,Hessian矩阵是一个Rn→RR^n \to R的函数的二阶导数 ...

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

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

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

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

  9. 雅可比矩阵:“Jacobian“矩阵

    1. 雅可比矩阵:"Jacobian"矩阵 在向量微积分中,雅可比矩阵是一阶偏导数以一定方式排列成的矩阵,雅可比矩阵类似于多元函数的导数,其行列式称为雅可比行列式:雅可比矩阵的重要 ...

最新文章

  1. R语言计算杰卡德相似系数(Jaccard Similarity)实战:自定义函数计算Jaccard相似度、对字符串向量计算Jaccard相似度、将Jaccard相似度转化为Jaccard距离
  2. solr搭建分布式搜索引擎
  3. 科大星云诗社动态20210524
  4. 易语言服务器不在一个网段,设置二级路由器保持局域网在同一个网段
  5. 修改MONGODB 最大连接数
  6. 系统辨识理论及应用_控制理论学习书单推荐(值得一读)
  7. C语言显示相位的程序,【图片】求助大佬用c语言帮忙编写下程序【c程序吧】_百度贴吧...
  8. C#LeetCode刷题之#40-组合总和 II(Combination Sum II)
  9. 【转】通用sqlserver分页存储过程
  10. 假如你心中有个莎乐美
  11. could not open extension control file “/usr/share/postgresql/9.1/extension/dblink.control“
  12. ajax请求返回整个页面,页面里的javascript执行问题(requireJS)
  13. 第一阶段个人总结04
  14. POJ 3278(Catch That Cow)
  15. 电信天翼路由器设置虚拟服务器,天翼宽带路由器设置教程
  16. 计算机cpu的功能和作用是什么意思,什么是中央处理器CPU
  17. 一款优秀的IT资产管理系统-Snipe-IT 安装及用户手册中文版(一安装部署篇)
  18. html5 邮箱后缀自动填写,Ant Design Vue AutoComplete 通过自定义选项search实现如自动补充邮箱后缀功能...
  19. 什么是中台,为什么要中台?一篇文章带你了解中台的概念!
  20. 如何用阿里云服务器建立个人网站(针对新手)

热门文章

  1. SQL美化工具-SQL Pretty Printer
  2. linux常用查看进程,Linux常用的进程管理和查看指令
  3. Unity3D游戏开发之回合制游戏原型的实现
  4. 如何用excel打开csv文件
  5. 将小米路由改做服务器——使用telnet控制光猫定时重启
  6. [译] 漫画图解 JavaScript 引擎: let jsCartoons = ‘Awesome’;
  7. Nginx+squid实现微型CDN搭建
  8. Vue更改slot-scope=“scope“中的值
  9. 福师计算机辅助设计1PS在线作业二,福师《计算机辅助设计1(PS)》在线作业二15秋100分答案...
  10. php获取文件后缀及名字,PHP实现获取文件后缀名的几种常用方法_PHP - strrpos