L-BFGS算法介绍
可以看出,拟牛顿法每次迭代只需要根据前次迭代的即可以计算出
,不需要求出Hesse矩阵的逆。
2.4 L-BFGS(limited-memory BFGS)
BFGS算法中每次迭代计算需要前次迭代得到的矩阵,该矩阵的存储空间至少为N(N+1)/2,N为特征维数,对于高维的应用场景,需要的存储空间将是非常巨大的。L-BFGS的基本思想就是通过存储前m次迭代的少量数据来替代前一次的
矩阵。令y=q,s=p,公式12可以改写成
公式13展开并取前m项的近似,可得
由于ρ、V、s、y这些变量都最终可以由q、p两个向量计算得到,因此,我们只需存储最后m次的q、p向量即可算出加上对角阵H0,总共需要存储2*m+1个N维向量(实际应用中m一般取4到7之间的值,因此需要存储的数据远小于Hesse矩阵)。
注:公式4中步长的确定需要使用一维搜索,顾名思义,一维搜索就是沿着直线方向寻找使得目标函数值最小的参数值。一维搜索具体又分为精确一维搜索和非精确一维搜索,具体可参看相关文献。
三、 其他相关方法
由于L-BFGS是建立在目标函数的2阶泰勒展开基础上的,其前提条件就是函数的2阶导不为0。在机器学习中一般如果用L2正则都是可以满足这个条件的。如果用的是L1正则,则目标函数可能出现2阶导为0的情况。对于使用L1正则的情况,可以使用OWL-QN方法(Orthant-Wise Limited-memory Quasi-Newton),它是基于L-BFGS修改的。
据说百度首创了Shooting算法,收敛速度比L-BFGS快得多,目前还不知道怎么做的。
此外,Chih-Jen Lin(LIBSVM作者)提出的信赖域牛顿方法(Trust Region Newton Method),其收敛速度也比L-BGFS快,他开发的另一个针对大规模线性分类的软件LIBLINEAR用的就是这种优化方法。
此外,Chih-Jen Lin(LIBSVM作者)提出的信赖域牛顿方法(Trust Region Newton Method),其收敛速度也比L-BGFS快,他开发的另一个针对大规模线性分类的软件LIBLINEAR用的就是这种优化方法。
免费领取验证码、内容安全、短信发送、直播点播体验包及云服务器等套餐
更多网易技术、产品、运营经验分享请访问网易云社区。
相关文章:
【推荐】 Spring Boot 学习系列(07)—properties文件读取
【推荐】 HTTP/2部署使用
L-BFGS算法介绍的更多相关文章
- Levenshtein字符串距离算法介绍
Levenshtein字符串距离算法介绍 文/开发部 Dimmacro KMP完全匹配算法和 Levenshtein相似度匹配算法是模糊查找匹配字符串中最经典的算法,配合近期技术栏目关于算法的探讨,上 ...
- 视频透雾原理加视频增强Retinex算法介绍
(本文转自:http://www.syphong.cn/52-1.html#) 视频透雾原理加视频增强Retinex算法介绍 -上海凯视力成 钟建军 一. 视频增强的背景 视觉信息是人类获得外界信息的 ...
- 【原创】机器学习之PageRank算法应用与C#实现(1)算法介绍
考虑到知识的复杂性,连续性,将本算法及应用分为3篇文章,请关注,将在本月逐步发表. 1.机器学习之PageRank算法应用与C#实现(1)算法介绍 2.机器学习之PageRank算法应用与C#实现(2 ...
- 牛顿法与拟牛顿法学习笔记(四)BFGS 算法
机器学习算法中经常碰到非线性优化问题,如 Sparse Filtering 算法,其主要工作在于求解一个非线性极小化问题.在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是 L-BF ...
- KNN算法介绍
KNN算法全名为k-Nearest Neighbor,就是K最近邻的意思. 算法描述 KNN是一种分类算法,其基本思想是采用测量不同特征值之间的距离方法进行分类. 算法过程如下: 1.准备样本数据集( ...
- ISP基本框架及算法介绍
什么是ISP,他的工作原理是怎样的? ISP是Image Signal Processor的缩写,全称是影像处理器.在相机成像的整个环节中,它负责接收感光元件(Sensor)的原始信号数据,可以理解为 ...
- Python之常见算法介绍
一.算法介绍 1. 算法是什么 算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输 ...
- RETE算法介绍
RETE算法介绍一. rete概述Rete算法是一种前向规则快速匹配算法,其匹配速度与规则数目无关.Rete是拉丁文,对应英文是net,也就是网络.Rete算法通过形成一个rete网络进行模式匹配,利 ...
- H2O中的随机森林算法介绍及其项目实战(python实现)
H2O中的随机森林算法介绍及其项目实战(python实现) 包的引入:from h2o.estimators.random_forest import H2ORandomForestEstimator ...
随机推荐
- Excel单元格内容拆分、合并
例:如何将EXCEL单元格A1中的“1-2-1”,在B1.C1.D1单元格中分别显示”1“.”2“.”1“.方法一: 在B1中输入“=mid(A1,1,1)”在C1中输入“=mid(AI,3,1)”在 ...
- Phalcon Framework的MVC结构及启动流程分析
目前的项目中选择了Phalcon Framework作为未来一段时间的核心框架.技术选型的原因会单开一篇Blog另说,本次优先对Phalcon的MVC架构与启动流程进行分析说明,如有遗漏还望指出. P ...
- Judy Array API介绍
本文介绍https://code.google.com/p/judyarray/这个JudyArray实现的API. judy_open:新建一个JudyArray,并返回指向这个JudyArray的 ...
- [SoapUI] 比较JSON Response
比较两个JSON, ID是数字时,处理成统一的格式:只保留小数点后5位 package direct; import org.json.JSONArray; import org.json.JSONE ...
- 03 Maven 坐标与依赖
Maven 坐标与依赖 Maven 的一大功能是管理项目依赖.为了能自动化地解析任何一个 Java 构件, Maven 就必须将它们唯一标识,这就依赖管理的底层基础 一一 坐标.本章将详细分析 Mav ...
- c++11日志练习
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- Tree Representation Implementation & Traversal
https://github.com/Premiumlab/Python-for-Algorithms--Data-Structures--and-Interviews/blob/master/Tre ...
- 2018.09.12 poj2376Cleaning Shifts(线段树+简单dp)
传送门 貌似贪心能过啊%%%. 本蒟蒻写的线段树优化dp. 式子很好推啊. f[i]表示覆盖1~i所需的最小代价. 那么显然对于一个区间[li,ri]" role="present ...
- 浮点数转byte数组
; float b=34.56745f; float c=0.0; ,,,}; byte* t=fbs; float2Bytes(t,b); unsigned int addrF=(unsigned ...
- HQL进阶
1.HQL查询性能优化 1.1.避免or操作 1.1.1.where子句包含or操作,执行时不使用索引 from Hose where street_id='1000' or street_id='1 ...