L-BFGS-B(Limited-memory Broyden–Fletcher–Goldfarb–Shanno )算法理解 —— 内存受限的拟牛顿法 —— 数值优化算法
本文主要讲下个人对数值优化算法中几种常见算法的理解。
什么是优化算法?
给出函数f(X),现在要求 min f(X) 时的X值,这就是最优化问题。
1. 共轭梯度法
方程:A*x=b,A矩阵为对称正定矩阵,b为向量,目标为求解出向量 x 。
个人认为共轭梯度法并不能被当做是一个真正的优化算法,因为共轭梯度法很难单独使用,而是作为其他优化算法的一个辅助使用,因为共轭梯度法只是求解方程组解的一种算法。
2. 最速下降法
最为常用的优化算法之一,如果接触过神经网络模型的话应该对这个算法最为了解,直白的说就是在每次优化时都沿着函数梯度的负方向。该方法是优化算法中当步运算量最小的算法,但是对于一些复杂的优化问题,如病态优化问题,很难获得较好的优化结果,因为最速下降法(梯度下降法)只是一阶优化算法,而不是二阶优化算法。
3. 牛顿法
牛顿法是二阶优化算法,也是最为常见的优化算法。牛顿法是二阶优化算法,每步优化都需要计算出原函数的二阶梯度矩阵,即Hession矩阵,并获得类似H*x=b的形式的方程,并进行求解,因此使用牛顿法时可以搭配共轭梯度法进行使用。
4. 拟牛顿法(DFP/BFGS)
牛顿法需要计算原函数的二阶导Hession矩阵,并解H*x=b方程,相当于求解 Hession 的逆矩阵,为此拟牛顿法对Hession矩阵的逆矩阵进行拟合近似,于是有 \(B\approx H^{-1}\),各种拟牛顿法就是在求解这个B矩阵,为此常见的拟牛顿法有DFP法和BFGS法。
5. 内存受限的拟牛顿法(L-BFGS)
拟牛顿法虽然避免了牛顿法求解Hession逆矩阵的复杂运算,但是即使通过计算近似矩阵B可以替代Hession逆矩阵,但是矩阵B也会占用大量的内存空间,如果优化变量的size为n,那么矩阵B的size就是nn,如果变量为1000000个,那么B矩阵中数字个数为10000001000000,因此为了避免因为内存无法存储B矩阵而导致无法计算的情况,于是有了内存受限的拟牛顿法(L-BFGS)。L-BFGS算法通过保留计算历史中的m个历史的变量值和一阶导数,来近似计算出\(B^{-1}b\),因此内存中只需要存储mn大小的空间,而不是nn大小的空间,这里m为远小于n的值,如n=1000000,m=30。
总结:
牛顿法,最后需要求解的是 \(H*x=b\),也就是\(x=H^{-1}*b\),难点在于求 \(H^{-1}\)以及存储矩阵\(H^{-1}\) 。
拟牛顿法,通过\(B\approx H^{-1}\),来解决对\(H^{-1}\)的复杂求解,但是没有解决对\(H^{-1}\)的存储问题,最终的求解形式为 \(x=B*b\)。
内存受限的拟牛顿法,通过对最近历史中的m个变量值及其一阶导数的保存,并用此近似计算出\(B*b\),直接求出近似的 \(x\) 解,由此解决 \(H^{-1}\) 矩阵和 \(B\) 矩阵难以存储的问题。
L-BFGS-B(Limited-memory Broyden–Fletcher–Goldfarb–Shanno )算法理解 —— 内存受限的拟牛顿法 —— 数值优化算法的更多相关文章
- 优化算法-BFGS
优化算法-BFGS BGFS是一种准牛顿算法, 所谓的"准"是指牛顿算法会使用Hessian矩阵来进行优化, 但是直接计算Hessian矩阵比较麻烦, 所以很多算法会使用近似的He ...
- 《Small Memory Software:Patterns For System With Limited Memory》读书笔记
原文地址:http://blog.csdn.net/jinzhuojun/article/details/13297447 虽然摩尔定律让我们的计算机硬件得以以指数速度升级,但反摩尔定律又不断消减这些 ...
- Multi-tasking RTOS for microprocessors with limited memory by saving only a single return address per task during context switching
A real-time operating system (RTOS) for use with minimal-memory controllers has a kernel for managin ...
- SQL Server ->> Memory Allocation Mechanism and Performance Analysis(内存分配机制与性能分析)之 -- Minimum server memory与Maximum server memory
Minimum server memory与Maximum server memory是SQL Server下配置实例级别最大和最小可用内存(注意不等于物理内存)的服务器配置选项.它们是管理SQL S ...
- 利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题
利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题(2) 启动和理解 MDD4J[size=1.0625]为了充分理解如何使用 MDD4J,您需要了 ...
- SHELL:Find Memory Usage In Linux (统计每个程序内存使用情况)
转载一个shell统计linux系统中每个程序的内存使用情况,因为内存结构非常复杂,不一定100%精确,此shell可以在Ghub上下载. [root@db231 ~]# ./memstat.sh P ...
- Identify Memory Leaks in Visual CPP Applications —— VLD内存泄漏检测工具
原文地址:http://www.codeproject.com/Articles/1045847/Identify-Memory-Leaks-in-Visual-CPP-Applications 基于 ...
- insufficient memory to configure kdump(没有足够的内存)解决方法(待验证、待解决)
vritualbox上安装redhat 6.4 32位系统 在安装完成重启后开始进行一些初始化的配置,在最后一项是配置Kdump 看到这个"没有足够的内存配置kdump"(在英文界 ...
- [SPDK/NVMe存储技术分析]015 - 理解内存注册(Memory Registration)
使用RDMA, 必然关系到内存区域(Memory Region)的注册问题.在本文中,我们将以mlx5 HCA卡为例回答如下几个问题: 为什么需要注册内存区域? 注册内存区域有嘛好处? 注册内存区域的 ...
- 创建结点 与 分配内存 Function to create a Node. Allocates memory for a new node. 主动申请内存 链表 指针的写法
Self Referential Data Structure in C - create a singly linked list http://www.how2lab.com/programmin ...
随机推荐
- LeetCode 40. Combination Sum II 组合总和 II (C++/Java)
题目: Given a collection of candidate numbers (candidates) and a target number (target), find all uniq ...
- VMware搭建集群环境
集群地址分配 名称 IP 子网掩码 网关 DNS flink01 192.168.22.211 255.255.255.0 192.168.22.2 114.114.114.114 flink02 1 ...
- P2868
Sightseeing Cows G 我们先考虑如何求平均乐趣值. 1.总乐趣为 \(\sum^n_{i = 1}f_i \times s_i\),其中 \(f_i\) 为第 \(i\) 个点的乐趣值 ...
- INFINI Labs 产品更新 | Easysearch 新增分词插件、Gateway 支持邮件发送等功能
INFINI Labs 产品又更新啦~,本次更新概要如下:Easysearch 新增了分词插件.优化了生命周期管理功能等:Gateway 新增 smtp 过滤器来支持邮件的发送,支持自动跳过因为异常关 ...
- ASP.NET MVC 出现: Uncaught ReferenceError: $ is not defined
ASP.NET MVC 出现: Uncaught ReferenceError: $ is not defined 错误 将 _Layout.cshtml 中的三行代码,移动到 <head> ...
- 燕千云 YQCloud 数智化业务服务管理平台发布1.11版本
2022年3月25日,燕千云 YQCloud 数智化业务服务管理平台发布1.11版本.新增客户服务管理模块.优化IT服务管理功能.增强燕千云与其他平台的集成能力.支持更多的业务服务场景.全面提升企业数 ...
- 卷积神经网络-AlexNet
AlexNet 一些前置知识 top-1 和top-5错误率 top-1错误率指的是在最后的n哥预测结果中,只有预测概率最大对应的类别是正确答案才算预测正确. top-5错误率指的是在最后的n个预测结 ...
- JS的JSON.parse问题
这个问题,已经有非常多人说过,而且由来已久. 大家都提供了不少的解决方法,但是都不够彻底. 一)现在是什么情况 1.使用SpringMvc+ModelAndView+jsp传递值 由于业务需要,通过m ...
- Zynq-7000 AP SoC Boot - Multiboot Tech Tip
背景 产品需要用到这个技术,在wiki找到了这篇文章. 创建者Confluence Wiki Admin Sep 24, 2018 in Xilinx-wiki Table of Contents D ...
- STM32 CubeMX 学习:003-定时器
背景 上一讲 STM32 CubeMX 学习:外部中断的使用 介绍了如何配置以及操作GPIO外部中断. 这一讲我们介绍定时器的有关概念,并对其中一种进行示范. HOST-OS : Windows-10 ...