Hession矩阵与牛顿迭代法
1、求解方程。
并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法,可以迭代求解。
原理是利用泰勒公式,在x0处展开,且展开到一阶,即f(x) = f(x0)+(x-x0)f'(x0)
求解方程f(x)=0,即f(x0)+(x-x0)*f'(x0)=0,求解x = x1=x0-f(x0)/f'(x0),因为这是利用泰勒公式的一阶展开,f(x) = f(x0)+(x-x0)f'(x0)处并不是完全相等,而是近似相等,这里求得的x1并不能让f(x)=0,只能说f(x1)的值比f(x0)更接近f(x)=0,于是乎,迭代求解的想法就很自然了,可以进而推出x(n+1)=x(n)-f(x(n))/f'(x(n)),通过迭代,这个式子必然在f(x*)=0的时候收敛。整个过程如下图:
2、牛顿法用于最优化
在最优化的问题中,线性最优化至少可以使用单纯行法求解,但对于非线性优化问题,牛顿法提供了一种求解的办法。假设任务是优化一个目标函数f,求函 数f的极大极小问题,可以转化为求解函数f的导数f'=0的问题,这样求可以把优化问题看成方程求解问题(f'=0)。剩下的问题就和第一部分提到的牛顿 法求解很相似了。
这次为了求解f'=0的根,把f(x)的泰勒展开,展开到2阶形式:
这个式子是成立的,当且仅当 Δx 无线趋近于0。此时上式等价与:
求解:
得出迭代公式:
一般认为牛顿法可以利用到曲线本身的信息,比梯度下降法更容易收敛(迭代更少次数),如下图是一个最小化一个目标方程的例子,红色曲线是利用牛顿法迭代求解,绿色曲线是利用梯度下降法求解。
在上面讨论的是2维情况,高维情况的牛顿迭代公式是:
其中H是hessian矩阵,定义为:
高维情况依然可以用牛顿迭代求解,但是问题是Hessian矩阵引入的复杂性,使得牛顿迭代求解的难度大大增加,但是已经有了解决这个问题的办法就 是Quasi-Newton methond,不再直接计算hessian矩阵,而是每一步的时候使用梯度向量更新hessian矩阵的近似。Quasi-Newton method的详细情况我还没完全理解,且听下回分解吧。。。
http://blog.sina.com.cn/s/blog_5364f9f20101dkyr.html
Hession矩阵与牛顿迭代法相关推荐
- 【python】牛顿迭代法求解多元函数的最小值--以二元函数为例
目录 一元函数到多元函数的牛顿迭代法 python代码实现过程 一元函数到多元函数的牛顿迭代法 参考 多元函数的牛顿迭代和高斯牛顿法怎么推导? 一元函数的牛顿迭代公式: 多元函数的牛顿迭代公式: 其中 ...
- 非线性方程组牛顿迭代法matlab,matlab实现牛顿迭代法求解非线性方程组
<matlab实现牛顿迭代法求解非线性方程组>由会员分享,可在线阅读,更多相关<matlab实现牛顿迭代法求解非线性方程组(5页珍藏版)>请在人人文库网上搜索. 1.matla ...
- python牛顿法解非线性方程组_matlab实现牛顿迭代法求解非线性方程组.pdf
matlab实现牛顿迭代法求解非线性方程组.pdf matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cosx2*x3-1/20 x12-81 ...
- 梯度下降法,牛顿法,高斯-牛顿迭代法,附代码实现
---------------------梯度下降法------------------- 梯度的一般解释: f(x)在x0的梯度:就是f(x)变化最快的方向.梯度下降法是一个最优化算法,通常也称为最 ...
- Logistic回归与牛顿迭代法
在上一篇文章中,我讲述了Logistic回归的原理以及它的梯度上升法实现.现在来研究Logistic回归的另一种 实现,即牛顿迭代法. 在上篇文章中,我们求出Logistic回归的似然函数的偏导数为 ...
- Pytorch深度学习实战1-6:图解牛顿迭代法,牛顿不止力学三定律
目录 1 引例 2 牛顿迭代算法求根 3 牛顿迭代优化 4 代码实战:Logistic回归 1 引例 给定如图所示的某个函数,如何计算函数零点 x 0 x_0 x0? 在数学上我们如何处理这个问题? ...
- 最优化理论与方法-牛顿迭代法
关注微信公众号[Microstrong],我现在研究方向是机器学习.深度学习,分享我在学习过程中的读书笔记!一起来学习,一起来交流,一起来进步吧! 本文同步更新在我的微信公众号里,地址:https:/ ...
- matlab牛顿法解非线性方程组,matlab实现牛顿迭代法求解非线性方程组.pdf
资源描述 matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cos(x2*x3)-1/2=0 x1^2-81*(x2+0.1)^2+sin(x ...
- Matlab利用牛顿迭代法求解非线性方程组
我们得首先了解牛顿迭代法的原理是什么: 在这里,我以二阶非线性方程组为例: f1(x,y)=0 f2(x,y)=0,求解x,y 原理 假设方程组的一组近似解为(x0,y0),将方程f1(x,y)=0与 ...
最新文章
- android用于打开各种文件的intent
- MySQL备份命令mysqldump参数说明与示例
- SpringCloud(Gateway网关使用)
- 在python中下列代码的运行结果是print abc_python与数学
- 在云环境上使用SLF4J对Java程序进行日志记录
- python3 批量修改文件扩展名——递归
- Windows和VMware下ubuntu切换界面的快捷键
- 学计算机好还是学西点,女生学西点师有后悔的吗 西点师有前途吗
- 计算机系统大作业-程序人生
- 5.21 将表格恢复到排序前的状态 [原创Excel教程]
- 第14章 项目采购管理
- 索尼机型刷机不用愁 带你玩转一键解锁
- 【Spring】依赖注入的几种方式
- 怎么提高图片分辨率dpi?电脑图片怎么修改分辨率?
- Uboot学习笔记①---(文件目录结构、README摘要、uImage的64字节头信息)
- 细谈get、post区别
- 前端开发基础(HTML基础)
- DDOS检测之首包丢弃
- code combat计算机科学三第一关,Codecombat 游戏攻略——JavaScript编辑语言——关卡(计算机科学三)Ⅰ...
- linux系统运维面试题大全(137道题)
热门文章
- 请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学号从小到大的顺序输出学生的信息。
- caany边缘检测matlab,自适应canny算法研究及其在图像边缘检测中的应用.pdf
- python一百行代码多少钱_用86行Python代码模拟太阳系
- linux shell 博客,【博客侠】Linux Shell脚本系列:开始上手(1)
- android jni 中jnienv,android JNI中JNIEnv類型和jobject類型的解釋
- java alert跳页面_JavaScript中通过提示框跳转页面的方法
- linux小红帽系统能用微信,小红帽腾讯QQ微信登录版-小红帽腾讯版v1.0.3 安卓版-腾牛安卓网...
- 图(Graph)的学习
- 五、Python第五课——Python中组织列表的相关函数
- usbserialcontroller驱动安装不了_win10-有NVIDIA独显提示未安装控制面板的离线安装方式...