一、牛顿法

对于优化函数\(f(x)\),在\(x_0\)处泰勒展开,

\[f(x)=f(x_0)+f^{'}(x_0)(x-x_0)+o(\Delta x)
\]

去其线性部分,忽略高阶无穷小,令\(f(x) = 0\)得:

\[x=x_0-\frac{f(x_0)}{f^{'}(x_0)}
\]

得牛顿法迭代公式:

\[x^{k+1}=x^k-\frac{f(x^k)}{f^{'}(x^k)}
\]

对于最优化问题

令导数等于零,得最优解,所以迭代公式为

\[x^{k+1}=x^k-\frac{\nabla f(x^k)}{\frac{\partial^2f(x^k)}{\partial x_i\partial x_j}}
\]

即:

\[x^{k+1}=x^k-H_k^{-1}\nabla f(x^k)
\]

其中\(H_k\)为Hesse矩阵,表示函数二阶偏导数矩阵

上述方法每次迭代都需要求Hesse矩阵,比较复杂

二、拟牛顿法

解决Hesse矩阵问题

对于优化函数的泰勒展开公式,求导数得:

\[\nabla f(x)=\nabla f(x^k)+H_k(x-x^k)
\]

令\(y_k=\nabla f(x^{k+1})-\nabla f(x^k)\),\(\delta_k=x^{k+1}-x^k\),则:

\[y_k=H_k\delta_k
\]

通过上式,可以依靠之前的\(f(x^k),f(x^{k-1}),x^k,x^{k-1}\)的数据计算Hesse矩阵,具体算法有DFP算法,BFGS算法。

三、L-BFGS算法

由于BFGS算法存在存储数据过多的问题,又提出了L-BFGS算法,来优化存储数据

conclusion

本来打算上述算法逐一实现一下,做到这里,发现上述算法是逐渐优化的关系,L-BFGS算法是最好的版本,因此可以直接网上下载L-BFGS算法,

根据自己需要修改。

最优化算法【牛顿法、拟牛顿法、BFGS算法】的更多相关文章

  1. 牛顿法|阻尼牛顿法|拟牛顿法|DFP算法|BFGS算法|L-BFGS算法

    一直记不住这些算法的推导,所以打算详细点写到博客中以后不记得就翻阅自己的笔记. 泰勒展开式 最初的泰勒展开式,若  在包含  的某开区间(a,b)内具有直到n+1阶的导数,则当x∈(a,b)时,有: ...

  2. 牛顿法与拟牛顿法学习笔记(四)BFGS 算法

    机器学习算法中经常碰到非线性优化问题,如 Sparse Filtering 算法,其主要工作在于求解一个非线性极小化问题.在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是 L-BF ...

  3. 无约束优化算法——牛顿法与拟牛顿法(DFP,BFGS,LBFGS)

    简介:最近在看逻辑回归算法,在算法构建模型的过程中需要对参数进行求解,采用的方法有梯度下降法和无约束项优化算法.之前对无约束项优化算法并不是很了解,于是在学习逻辑回归之前,先对无约束项优化算法中经典的 ...

  4. 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno

    拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno 转载须注明出处:htt ...

  5. 【原创】牛顿法和拟牛顿法 -- BFGS, L-BFGS, OWL-QN

    数据.特征和数值优化算法是机器学习的核心,而牛顿法及其改良(拟牛顿法)是机器最常用的一类数字优化算法,今天就从牛顿法开始,介绍几个拟牛顿法算法.本博文只介绍算法的思想,具体的数学推导过程不做介绍. 1 ...

  6. Atitit.软件中见算法 程序设计五大种类算法

    Atitit.软件中见算法 程序设计五大种类算法 1. 算法的定义1 2. 算法的复杂度1 2.1. Algo cate2 3. 分治法2 4. 动态规划法2 5. 贪心算法3 6. 回溯法3 7. ...

  7. 最近公共祖先LCA(Tarjan算法)的思考和算法实现

    LCA 最近公共祖先 Tarjan(离线)算法的基本思路及其算法实现 小广告:METO CODE 安溪一中信息学在线评测系统(OJ) //由于这是第一篇博客..有点瑕疵...比如我把false写成了f ...

  8. SparkMLlib学习分类算法之逻辑回归算法

    SparkMLlib学习分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/51693 ...

  9. SparkMLlib分类算法之逻辑回归算法

    SparkMLlib分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/5169383 ...

随机推荐

  1. HBase2.0 meta信息丢失的修复方法

    在HBase入库日志中发现有一个表入库失败,检查HBase服务端后发现该表的meta信息丢失了: 而HDFS上的region还在: 而HBCK工具不支持HBase2.0版本,只好自己写一个修复工具.网 ...

  2. 「疫期集训day7」周期

    我们成功入侵了圣康坦,屋子里到处都是面包,食物,水...现在我们的目标就在眼前----亚眠------鲁道登夫攻势中损失惨重的德国精英兵 今天考试考出了历史最低,原因在于T1签到题挂了,ull真的毒瘤 ...

  3. The Meaningless Game 思维题

    题目描述 Slastyona and her loyal dog Pushok are playing a meaningless game that is indeed very interesti ...

  4. 我终于弄懂了Python的装饰器(四)

    此系列文档: 1. 我终于弄懂了Python的装饰器(一) 2. 我终于弄懂了Python的装饰器(二) 3. 我终于弄懂了Python的装饰器(三) 4. 我终于弄懂了Python的装饰器(四) 四 ...

  5. CTF_show平台 web题解 part3

    web13 题目显示文件上传,各类型上传均提示错误,在使用ctf-scan扫描的时候,发现upload.php.bak. 查看源码: <?php header("content-typ ...

  6. Thymeleaf模板引擎学习

    开发传统Java WEB项目时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用JSP页面进行页面渲染了.从而Thymeleaf提供了一个用于整合Spring MVC的可选模 ...

  7. JMeter-一个接口的返回值作为输入传给其他接口

    背景: 在用JMeter写接口case,遇到一种情况,接口1查看列表接口,接口2查看详情接口,接口2需要传入接口1列表的第一条数据的id 解决方案: 首先放一下总体截图 具体步骤 1-新建一个Thre ...

  8. 在 vue 中使用 WebSocket

    <template> <div class="hello"> <h1>{{ msg }}</h1> <h1>{{ res ...

  9. 一起聊聊PHP的几个设计模式

    工厂模式 1.简单工厂模式 目的 简单工厂模式是一个精简版的工厂模式.   它与静态工厂模式最大的区别是它不是『静态』的.因为非静态,所以你可以拥有多个不同参数的工厂,你可以为其创建子类.甚至可以模拟 ...

  10. Echarts柱状图顶部加数量显示

    //加在series中itemStyle: { normal: { label: { show: true, position: 'top', textStyle: { color: '#615a5a ...