目标

有一个函数f(x)f(x)f(x),我们要求得函数的最小值(或者最大值),由于最值点一般也是极值点,所以求出所有极值点,然后进行对比就能得到我们要的最值,可以理解为一个最小二乘的问题min⁡x12∥f(x)∥22\min_x \frac {1}{2}\| f(x)\|^2_2xmin​21​∥f(x)∥22​

解法

最暴力的方法,直接求解d12∥f(x)∥22dx=0\frac {d \frac{1}{2}\|f(x)\|^2_2} {dx} =0dxd21​∥f(x)∥22​​=0
当然,如果能够直接解出结果,那就很好了,但是大多数情况下很难解。当没法求解的时候,可以采用迭代的方法:

  1. 给定某个初始值x0x_0x0​。
  2. 对于第k次迭代,寻找一个增量Δx\Delta xΔx,使得∥f(xk+Δx)∥22\|f(x_k+\Delta x)\|^2_2∥f(xk​+Δx)∥22​达到极小值。
  3. 若Δx足够小,则停止\Delta x足够小,则停止Δx足够小,则停止。
  4. 否则,令xk+1=xk+Δxkx_{k+1}=x_k+\Delta x_kxk+1​=xk​+Δxk​,返回第2步。

下面介绍一下几个迭代的方法,都是在找Δx\Delta xΔx

一阶梯度法

将f(x)f(x)f(x)在x附近进行泰勒展开∥f(x+Δx)∥22≈∥f(x)∥22+J(x)Δx+12ΔxTHΔx\|f(x+\Delta x)\|^2_2\approx\|f(x)\|^2_2+J(x)\Delta x+\frac{1}{2}\Delta x^TH\Delta x∥f(x+Δx)∥22​≈∥f(x)∥22​+J(x)Δx+21​ΔxTHΔx
x是常量,同时也是个向量;Δx\Delta xΔx才是变量,J(x)J(x)J(x)是∣∣f(x)∣∣22d||f(x)||^2_2d∣∣f(x)∣∣22​d的雅可比矩阵,HHH是海塞矩阵,可以将J(x)理解为矩阵形式的一阶导数,HHH理解为矩阵形式的二阶导数

导数:指的是函数值增加的速度,速度是个向量(有大小,有方向),在一维的情况下,也是一样的,可以这样理解,假设f(x)=12x2f(x)=\frac{1}{2}x^2f(x)=21​x2,则f′(x)=xf^{'}(x)=xf′(x)=x,f(x)f(x)f(x)是关于y轴对称,最小值在原点的函数,当x<0的时候,导数也是<0的,当x>0的时候,导数是>0的,可以把±号看成方向。

梯度:梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
设f(x)是一个多元函数,则梯度是向量(df(x)dx1,df(x)dx2,…,df(x)dxn,…)(\frac{d f(x)}{d x_1},\frac{d f(x)}{d x_2},…,\frac{d f(x)}{d x_n},…)(dx1​df(x)​,dx2​df(x)​,…,dxn​df(x)​,…)

雅可比矩阵:设y=f(x)y=f(x)y=f(x),x和y都是一个向量,则对应的雅可比矩阵为
J=[dy1dx1dy1dx2…dy1dxndy2dx1dy2dx2…dy2dxn…………dymdx1dymdx2…dymdxn]J=\begin{bmatrix} \frac{d y_1}{d x_1} &amp; \frac{d y_1}{d x_2} &amp; … &amp;\frac{d y_1}{d x_n}\\ \\ \frac{d y_2}{d x_1} &amp; \frac{d y_2}{d x_2} &amp; … &amp;\frac{d y_2}{d x_n}\\\\ … &amp;…&amp;…&amp;… \\ \\ \frac{d y_m}{d x_1} &amp; \frac{d y_m}{d x_2} &amp; … &amp;\frac{d y_m}{d x_n}\end{bmatrix} J=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​dx1​dy1​​dx1​dy2​​…dx1​dym​​​dx2​dy1​​dx2​dy2​​…dx2​dym​​​…………​dxn​dy1​​dxn​dy2​​…dxn​dym​​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​
在y是标量的情况下,JTJ^TJT便是梯度,在y是高维的情况下,JTJ^TJT每个列向量都是对应的yiy_iyi​的梯度

由于沿着梯度的方向是增长最快的方向,那么反方向就是下降最快的方法,所以Δx∗=−JT(x)\Delta x^*=-J^T(x)Δx∗=−JT(x)
通常Δx\Delta xΔx前面会加一个步长λ\lambdaλ,即Δx∗=−λJT(x)\Delta x^*=-\lambda J^T(x)Δx∗=−λJT(x)

二阶梯度法

牛顿迭代法

假设我们要求解一个方程f(x)=0f(x)=0f(x)=0,然而我们解不出来,但是我们可以得到它在x0x_0x0​处的导数,可以对它在x0x_0x0​进行泰勒展开f(x)≈f(x0)+f′(x0)(x−x0)=0f(x)\approx f(x_0)+f^{'}(x_0)(x-x_0)=0f(x)≈f(x0​)+f′(x0​)(x−x0​)=0
整理可以得到x=x0+Δx=x0+(−f(x0)f′(x0))x=x_0+\Delta x=x_0+(- \frac {f(x_0)}{f^{'}(x_0)})x=x0​+Δx=x0​+(−f′(x0​)f(x0​)​)
由于泰勒展开式要无穷多项加起来才能等价于f(x)f(x)f(x),这里只用了两项做近似,所以得到的解并不是真正的解,但是x0+Δxx_0+\Delta xx0​+Δx比x0x_0x0​更加接近真正的解,之后进行迭代,直到∣f(x∗)∣&lt;r|f(x^*)|&lt;r∣f(x∗)∣<r(r指允许误差),此时的x∗x^*x∗便是要求的解。

在一阶梯度法中我们只用到一阶梯度信息,如果继续使用二阶梯度信息,则
∥f(x+Δx)∥22≈∥f(x)∥22+J(x)Δx+12ΔxTHΔx\|f(x+\Delta x)\|^2_2\approx\|f(x)\|^2_2+J(x)\Delta x+\frac{1}{2}\Delta x^TH\Delta x∥f(x+Δx)∥22​≈∥f(x)∥22​+J(x)Δx+21​ΔxTHΔx
为了更加简单的表示,我们设f(x)=∥f(x)∥22f(x)=\|f(x)\|^2_2f(x)=∥f(x)∥22​,则
f(x0+Δx)≈f(x0)+J(x0)Δx+12ΔxTHΔxf(x_0+\Delta x)\approx f(x_0)+J(x_0)\Delta x+\frac{1}{2}\Delta x^TH\Delta xf(x0​+Δx)≈f(x0​)+J(x0​)Δx+21​ΔxTHΔx
我们的目的是得到f(x)′=0f(x)^{'}=0f(x)′=0的解,我们只要得到f(x)′f(x)^{'}f(x)′的表示形式,便可以将问题用牛顿迭代法求解

因为f(x0)f(x_0)f(x0​)、J(x0)J(x_0)J(x0​)和H=H(x0)H=H(x_0)H=H(x0​)都是常数,变量是Δx\Delta xΔx,我们对f(x0+Δx)f(x_0+\Delta x)f(x0​+Δx)求导可以得到
f(x0+Δx)′=J(x0)T+12(HΔx+HTΔx)=J(x0)T+HΔxf(x_0+\Delta x)^{'}=J(x_0)^T+\frac {1}{2}(H\Delta x+H^T\Delta x)=J(x_0)^T+H\Delta xf(x0​+Δx)′=J(x0​)T+21​(HΔx+HTΔx)=J(x0​)T+HΔx
这里用到了一些性质
1.矩阵求导
2.黑塞矩阵(Hessian Matrix):如果函数f(x)f(x)f(x)在 区域内二阶连续可导,那么fff黑塞矩阵H(f)H(f)H(f)在D内为对称矩阵。

令f(x0+Δx)′=0f(x_0+\Delta x)^{'}=0f(x0​+Δx)′=0,可以得到Δx=−H−1JT\Delta x=-H^{-1}J^TΔx=−H−1JT


参考书籍:《视觉SLAM十四讲》
链接:https://blog.csdn.net/luoleicn/article/details/6527049

一阶梯度法、二阶段梯度法、牛顿法相关推荐

  1. RocketMQ源码分析之RocketMQ事务消息实现原理上篇(二阶段提交)

    在阅读本文前,若您对RocketMQ技术感兴趣,请加入 RocketMQ技术交流群 根据上文的描述,发送事务消息的入口为: TransactionMQProducer#sendMessageInTra ...

  2. 分布式事务理论-二阶段提交(Two-phase Commit)

    1 2PC 两阶段提交协议为了保证分布在不同节点上的分布式事务的一致性,我们需要引入一个协调者来管理所有的节点,负责各个本地资源的提交和回滚,并确保这些节点正确提交操作结果,若提交失败则放弃事务. 2 ...

  3. oracle二阶段事物,分布式事务 两阶段提交 (2PC)

    两阶段提交(2PC) 是 Oracle Tuxedo 系统提出的 XA 分布式事务协议的其中一种实现方式. XA协议中有两个重要角色:事务协调者和事务参与者 既然叫两阶段提交,肯定是分为两个阶段. J ...

  4. 中震弹性计算_众值烈度、中震烈度、大震烈度及三水准二阶段

    1.震级与烈度 我们在做项目之前首先要查的就是项目所在地的设防烈度,而在地震的时候,我们又经常提到地震等级,两者之间到底有什么关系? 很多人把震级和烈度划等号,其实这两者之间有很大的区别: 烈度是指地 ...

  5. 什么是ACID理论(二阶段、三阶段提交、TCC)

    目录 二阶段提交协议 TCC(Try-Confirm-Cancel) 预留成功 预留失败 三阶段提交协议 总结 Some questions reference ACID理论时对事务特性的抽象和总结, ...

  6. 【转】为了修复打码女神脸,他们提出二阶段生成对抗网络EdgeConnect

    当图像缺失部分太多的时候,结合多阶段方法和边缘先验信息,这个 GAN 实现了高还原度的图像修复,玩法还不止于此. 在过去几年中,深度学习技术在图像修复方面取得了显着进步.然而,许多这些技术无法重建合理 ...

  7. java 二阶段提交,二阶段提交协议(Two Phase Commitment Protocol)

    一.典型的分布式事务实例 跨行转账问题是一个典型的分布式事务,用户A向B的一个转账1000,要进行A的余额-1000,B的余额+1000,显然必须保证这两个操作的事务性. 类似的还有,电商系统中,当有 ...

  8. 漫话:如何给女朋友解释什么是2PC(二阶段提交)?

    周末晚上,正在家里面看综艺节目,突然女朋友跑过来找我打<王者荣耀>. 打了几把游戏,终于可以歇息一会了,准备继续看我的综艺,可是女朋友过来找我给他讲讲到底什么是二阶段提交. 分布式一致性 ...

  9. 漫画:如何给女朋友解释什么是2PC(二阶段提交)?

    作者|漫话编程 本文经授权转载自漫话编程(ID:mhcoding) 周末晚上,正在家里面看综艺节目,突然女朋友跑过来找我打<王者荣耀>. 打了几把游戏,终于可以歇息一会了,准备继续看我的综 ...

  10. 魔方还原算法(二) 科先巴的二阶段算法

    科先巴的二阶段算法 本文来具体介绍一种具体的魔方还原算法--科先巴的二阶段算法,有一部分相关内容在前篇讲述,主要是方向定义那一块儿,没有看的建议先看一下: 二阶段,顾名思义,解决问题分为两步,先完成一 ...

最新文章

  1. Android runOnUiThread() 方法的使用
  2. Oracle 下 unpin 的cursor 才能被移除
  3. Jan 13 - Bulls and Cows; String; HashSet;
  4. 配置RODBC访问PostgreSQL数据库
  5. Introduction to Byteball — Part 4: Adoption
  6. 知乎热议:杨辉团队公开否认抄袭,网友:避重就轻仍谎称「首创」
  7. 解决Python中sum函数出现的TypeError: unsupported operand type(s) for +: 'int' and 'list'错误问题
  8. Ubuntu MySQL 配置 ip binding
  9. 8篇文章系统梳理ARM开发中的文件类型
  10. maven安装jar包到本地仓库
  11. 富文本编辑器 froala-editor
  12. excel表格怎么画斜线_怎么画出漂亮的Excel表格线?
  13. 复盘世预赛:国足5-0马尔代夫,吴曦成国足世预赛福星!三大前锋齐进球
  14. Autumn Web Handler
  15. 三维尺寸链计算和公差分析软件-DTAS-功能
  16. 01_测试基础知识---微信公众号测试点
  17. Java(等级划分)
  18. 西门子1200 PLC CRC效验程序功能块
  19. 懒惰的苏珊 UVa1620
  20. 高企申报有哪些项目?

热门文章

  1. inter无线网卡服务器版驱动,intel无线网卡驱动程序官方版
  2. 模型预测控制与机器学习
  3. STM32驱动AD9833
  4. Python竟然可以玩转微信emoji
  5. java自制语音识别,JAVA作的语音识别
  6. 341编程器 软硬件
  7. matlab 取矩阵上三角元素,MATLAB triu():提取上三角矩阵
  8. 软考高级 真题 2014年下半年 信息系统项目管理师 论文
  9. Java多线程面试攻略(一)
  10. 图像频域处理之高斯滤波器