牛顿法 与 Hessian矩阵

news/2024/12/22 16:20:26

牛顿法 主要有两方面的应用:

  1. 求方程的根;

  2. 求解最优化方法;


一. 为什么要用牛顿法求方程的根?

假设 f(x) = 0 为待求解方程,利用传统方法求解,牛顿法求解方程的公式:

f(X0+Δx) = f(X0) + f(X0) ΔX

即 f(X) = f(X0) + f(X0) (X-X0)

这个公式就是一阶泰勒展式,f′(X0) 表示 f(X) 在 X0 点的斜率 ,当X方向增量(Δx)比较小时,Y方向增量(Δy)可以近似表示为 斜率(导数)*X方向增量(f′(x0) Δx) ,令 f(x) = 0,我们能够得到 迭代公式:

X = X0 - f(X0) / f(X0)    =>   Xn+1 = Xn - f(Xn) / f′(Xn)

通过逐次迭代,牛顿法 将逐步逼近最优值,也就是方程的解。

二. 最优化问题

针对上面问题进行扩展:

解决 f(x) = 0 的问题,我们用了一阶泰勒展开:

f(x) = f(x0) + f'(x0)*(x-x0) + o( (x-x0)^2 )

去掉末位高阶展开项,代入x = x0+Δx,得到:

f(x) = f(x0+Δx) = f(x0) + f(x0) Δx

那么 要解决 f′(x) = 0 的问题,我们就需要二阶泰勒展开:

f(x) = f(x0) + f'(x0)*(x-x0) + 0.5*f''(x0)*(x-x0)^2 + o( (x-x0)^3 )

去掉末位高阶展开项,代入x = x0+Δx,得到:

f(x) = f(x0+Δx) = f(x0) + f(x0)Δx + 0.5 * f′′(x0) (Δx)^2

求导计算:对Δx求导,所以得到:

0 = f′(x0) +  f′′(x0) (Δx)
==>
0 = f′(x0) +  f′′(x0) (x−x0)

整理:

f′(x0) + f′′(x0)(x−x0) = 0
=>
x - x0 = − f′(x0) / f′′(x0)
=>
x = x0 − f′(x0) / f′′(x0)   
=>  
进一步得到:

Xn+1 = Xn - f'(Xn) / f''(Xn)

三. 牛顿法 与 Hessian矩阵的关系

以上只针对单变量进行讨论,如果对多变量就要引入雅克比矩阵和海森矩阵

简单介绍一下二者,雅克比矩阵为函数对各自变量的一阶导数,海森矩阵为函数对自变量的二次微分。形式分别如下:

这里写图片描述

这里写图片描述

这里写图片描述


http://www.niftyadmin.cn/n/3059541.html

相关文章

2019年最新 TensorFlow 学习路线图

平均年薪30万,经济寒冬挡不住 AI 人才的火热 互联网行业遭遇寒冬,企业纷纷裁员缩招,而 BAT 和硅谷明星公司对 AI 人才的投入却并不见放缓。为争夺相关人才,给应届毕业生开出的平均年薪高达 30 万。 而 TensorFlow 作为当下最流行的…

64位Windows 系统装driver时如何忽略sign

64位Windows 系统装driver时如何忽略sign 这边有两个方法: 方法一: 进入命令行界面 bcdedit -set loadoptions DISABLE_INTEGRITY_CHECKS之后再输入 bcdedit -set TESTSIGNING ON重启,这个时候安装driver就不会在提示sign了。 那么&…

从 Jenkins 迁移到 Jenkins X:一场持续交付之旅

2019独角兽企业重金招聘Python工程师标准>>> 背景 在 dailymotion,我们信奉 DevOps 最佳实践,并且重度使用了 Kubernetes。我们的部分产品(并非全部)已经部署在 Kubernetes 上。在迁移我们的广告技术平台时&#xff0c…

在Linux系统的服务器上使用Memtester进行内存压力测试

最近要测试一台机器的整体性能情况,就在google搜索一番,发现这个一个小工具,说是可以进行内存的压力测试,Memtester主要是捕获内存错误和一直处于很高或者很低的坏位, 其测试的主要项目有随机值,异或比较,减法,乘法,除法,与或运算…

Windows DPC详解

x86架构设计在上是基于中断思想的,因而从DOS到Win32,操作系统中大量使用中断的概念来表达异步操作的 行为。但与DOS下独占的情况不同,Win32下需要由系统对多任务进行调度,因此中断响应代码必须尽可能地简单,并且尽快的…

Linux下查看CPU型号,内存大小,硬盘空间的命令(详解)

1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:删除重复行;wc –l命令:统计行数** 1.2 查看CPU核数 # cat /proc/cpuinfo | grep "cpu cores" | uniq cpu cores : 4 1.3 查看CP…

加拿大己亥猪年生肖邮票亮相 选用猪八戒形象

农历己亥年临近,加拿大邮政公司于当地时间1月17日正式揭晓新的猪年生肖邮票。这套邮票选用了中国古典名著《西游记》中猪八戒的形象。图为印有“福满人间”“笑口常开”“和气生财”及“瑞气祥和”字样的加拿大国内版己亥猪年生肖邮票四方联,以及国际版小…

『React Navigation 3x系列教程』createDrawerNavigator开发指南

这篇文章将向大家分享createDrawerNavigator的一些开发指南和实用技巧。 createDrawerNavigator抽屉效果,侧边滑出: createDrawerNavigator API createDrawerNavigator(RouteConfigs, DrawerNavigatorConfig): RouteConfigs(必选):路由配置对…