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 ...
随机推荐
- 关于weblogic报UnsatisfiedLinkError Native Library xxx.so already loaded
一.场景 最近写的一个系统,在Tomcat测试完后说要改使用weblogic,于是在服务器上安装了weblogic,捣鼓了半天,一个个问题冒了出来,其中就有个比较麻烦的报错:UnsatisfiedLi ...
- HTML实例
HTML内容繁多,不易记忆,故将此网址 作为查阅复习的工具http://www.w3school.com.cn/example/html_examples.asp
- dede DedeTag Engine Create File False
1.在织梦后台更新文档操作时出现DedeTag Engine Create File False 解决方案: 在织梦目录include/dedetag.class.php下搜索DedeTag En ...
- Python打杂之路
1.任务要落到纸上好记性不如烂笔头,再好的记性也不如写到纸上明确无误,写到纸上就不用担心会漏掉哪项工作.平时,我们总是在忙着一项工作的同时还惦记着下一项工作,把工作都记下后,我们就可以专注于一项工作, ...
- dbus通信与接口介绍
DBUS是一种高级的进程间通信机制.DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息给另外一个进程时,先发消息到后台进程,再通过后台进程将信 ...
- Executor(一)ExecutorService 线程池
Executor(一)ExecutorService 线程池 本篇主要涉及到的是 java.util.concurrent 包中的 ExecutorService.ExecutorService 就是 ...
- 淘宝星星的思路c#
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...
- java Exception in thread "main" java.lang.NoClassDefFoundError: main (wrong name: pm/main)
javac main.java 编译后没有问题 java main 出现下面在问题: Exception in thread "main" java.lang.NoClassDef ...
- 541. Reverse String II
static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...
- 被弃用的php函数以及被那个代替
原文链接 http://blog.csdn.net/a11085013/article/details/8937848 下面列举了部分被弃用的函数: call_user_method ...