一阶梯度法、二阶段梯度法、牛顿法
目标
有一个函数f(x)f(x)f(x),我们要求得函数的最小值(或者最大值),由于最值点一般也是极值点,所以求出所有极值点,然后进行对比就能得到我们要的最值,可以理解为一个最小二乘的问题minx12∥f(x)∥22\min_x \frac {1}{2}\| f(x)\|^2_2xmin21∥f(x)∥22
解法
最暴力的方法,直接求解d12∥f(x)∥22dx=0\frac {d \frac{1}{2}\|f(x)\|^2_2} {dx} =0dxd21∥f(x)∥22=0
当然,如果能够直接解出结果,那就很好了,但是大多数情况下很难解。当没法求解的时候,可以采用迭代的方法:
- 给定某个初始值x0x_0x0。
- 对于第k次迭代,寻找一个增量Δx\Delta xΔx,使得∥f(xk+Δx)∥22\|f(x_k+\Delta x)\|^2_2∥f(xk+Δx)∥22达到极小值。
- 若Δx足够小,则停止\Delta x足够小,则停止Δx足够小,则停止。
- 否则,令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)∣∣22d的雅可比矩阵,HHH是海塞矩阵,可以将J(x)理解为矩阵形式的一阶导数,HHH理解为矩阵形式的二阶导数
导数:指的是函数值增加的速度,速度是个向量(有大小,有方向),在一维的情况下,也是一样的,可以这样理解,假设f(x)=12x2f(x)=\frac{1}{2}x^2f(x)=21x2,则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},…)(dx1df(x),dx2df(x),…,dxndf(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} & \frac{d y_1}{d x_2} & … &\frac{d y_1}{d x_n}\\ \\ \frac{d y_2}{d x_1} & \frac{d y_2}{d x_2} & … &\frac{d y_2}{d x_n}\\\\ … &…&…&… \\ \\ \frac{d y_m}{d x_1} & \frac{d y_m}{d x_2} & … &\frac{d y_m}{d x_n}\end{bmatrix} J=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡dx1dy1dx1dy2…dx1dymdx2dy1dx2dy2…dx2dym…………dxndy1dxndy2…dxndym⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
在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∗)∣<r|f(x^*)|<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
一阶梯度法、二阶段梯度法、牛顿法相关推荐
- RocketMQ源码分析之RocketMQ事务消息实现原理上篇(二阶段提交)
在阅读本文前,若您对RocketMQ技术感兴趣,请加入 RocketMQ技术交流群 根据上文的描述,发送事务消息的入口为: TransactionMQProducer#sendMessageInTra ...
- 分布式事务理论-二阶段提交(Two-phase Commit)
1 2PC 两阶段提交协议为了保证分布在不同节点上的分布式事务的一致性,我们需要引入一个协调者来管理所有的节点,负责各个本地资源的提交和回滚,并确保这些节点正确提交操作结果,若提交失败则放弃事务. 2 ...
- oracle二阶段事物,分布式事务 两阶段提交 (2PC)
两阶段提交(2PC) 是 Oracle Tuxedo 系统提出的 XA 分布式事务协议的其中一种实现方式. XA协议中有两个重要角色:事务协调者和事务参与者 既然叫两阶段提交,肯定是分为两个阶段. J ...
- 中震弹性计算_众值烈度、中震烈度、大震烈度及三水准二阶段
1.震级与烈度 我们在做项目之前首先要查的就是项目所在地的设防烈度,而在地震的时候,我们又经常提到地震等级,两者之间到底有什么关系? 很多人把震级和烈度划等号,其实这两者之间有很大的区别: 烈度是指地 ...
- 什么是ACID理论(二阶段、三阶段提交、TCC)
目录 二阶段提交协议 TCC(Try-Confirm-Cancel) 预留成功 预留失败 三阶段提交协议 总结 Some questions reference ACID理论时对事务特性的抽象和总结, ...
- 【转】为了修复打码女神脸,他们提出二阶段生成对抗网络EdgeConnect
当图像缺失部分太多的时候,结合多阶段方法和边缘先验信息,这个 GAN 实现了高还原度的图像修复,玩法还不止于此. 在过去几年中,深度学习技术在图像修复方面取得了显着进步.然而,许多这些技术无法重建合理 ...
- java 二阶段提交,二阶段提交协议(Two Phase Commitment Protocol)
一.典型的分布式事务实例 跨行转账问题是一个典型的分布式事务,用户A向B的一个转账1000,要进行A的余额-1000,B的余额+1000,显然必须保证这两个操作的事务性. 类似的还有,电商系统中,当有 ...
- 漫话:如何给女朋友解释什么是2PC(二阶段提交)?
周末晚上,正在家里面看综艺节目,突然女朋友跑过来找我打<王者荣耀>. 打了几把游戏,终于可以歇息一会了,准备继续看我的综艺,可是女朋友过来找我给他讲讲到底什么是二阶段提交. 分布式一致性 ...
- 漫画:如何给女朋友解释什么是2PC(二阶段提交)?
作者|漫话编程 本文经授权转载自漫话编程(ID:mhcoding) 周末晚上,正在家里面看综艺节目,突然女朋友跑过来找我打<王者荣耀>. 打了几把游戏,终于可以歇息一会了,准备继续看我的综 ...
- 魔方还原算法(二) 科先巴的二阶段算法
科先巴的二阶段算法 本文来具体介绍一种具体的魔方还原算法--科先巴的二阶段算法,有一部分相关内容在前篇讲述,主要是方向定义那一块儿,没有看的建议先看一下: 二阶段,顾名思义,解决问题分为两步,先完成一 ...
最新文章
- Android runOnUiThread() 方法的使用
- Oracle 下 unpin 的cursor 才能被移除
- Jan 13 - Bulls and Cows; String; HashSet;
- 配置RODBC访问PostgreSQL数据库
- Introduction to Byteball — Part 4: Adoption
- 知乎热议:杨辉团队公开否认抄袭,网友:避重就轻仍谎称「首创」
- 解决Python中sum函数出现的TypeError: unsupported operand type(s) for +: 'int' and 'list'错误问题
- Ubuntu MySQL 配置 ip binding
- 8篇文章系统梳理ARM开发中的文件类型
- maven安装jar包到本地仓库
- 富文本编辑器 froala-editor
- excel表格怎么画斜线_怎么画出漂亮的Excel表格线?
- 复盘世预赛:国足5-0马尔代夫,吴曦成国足世预赛福星!三大前锋齐进球
- Autumn Web Handler
- 三维尺寸链计算和公差分析软件-DTAS-功能
- 01_测试基础知识---微信公众号测试点
- Java(等级划分)
- 西门子1200 PLC CRC效验程序功能块
- 懒惰的苏珊 UVa1620
- 高企申报有哪些项目?