【原创】回溯线搜索 Backtracking line search
机器学习中很多数值优化算法都会用到线搜索(line search)。线搜索的目的是在搜索方向上找到是目标函数\(f(x)\)最小的点。然而,精确找到最小点比较耗时,由于搜索方向本来就是近似,所以用较小的代价找到最小点的近似就可以了。 Backtracking Line Search(BLS)就是这么一种线搜索算法。
BLS算法的思想是,在搜索方向上,先设置一个初始步长\({\alpha _0}\),如果步长太大,则缩减步长,知道合适为止。
上面的想法要解决两个问题:
1. 如何判断当前步长是否合适 (Armijo–Goldstein condition)
\[f({\bf{x}} + \alpha {\mkern 1mu} {\bf{p}}) \le f({\bf{x}}) + \alpha {\mkern 1mu} c{\mkern 1mu} m{\mkern 1mu} \]
\[m = {{\bf{p}}^{\rm{T}}}{\mkern 1mu} \nabla f({\bf{x}}){\mkern 1mu} \]
其中,\({\bf{p}}\)是当前搜寻方向,\(\alpha \)是步长,\({\mkern 1mu} c{\mkern 1mu} \)是控制参数,需要根据情况人工核定。
从上式可以看出,当前点的斜率越小,\(f({\bf{x}} + \alpha {\mkern 1mu} {\bf{p}}) - f({\bf{x}})\)的要求越小,步长就越小。对于一般的凸问题,搜寻点越接近最优点,原函数的斜率越较小,因此步长越小,这也是符合直觉的。
2. 如何则缩减步长
搜索步长的缩减通过\(\tau {\mkern 1mu} \)参数来控制,主要通过人工核定,既\({\alpha _j} = \tau {\mkern 1mu} {\alpha _{j - 1}}\)
总结一下BLS算法的流程如下:
1. 设置初始步长\({\alpha _0}\)
2. 判断\(f({\bf{x}} + \alpha {\mkern 1mu} {\bf{p}}) \le f({\bf{x}}) + \alpha {\mkern 1mu} c{\mkern 1mu} m{\mkern 1mu} \)是否满足,如果满足,停止;否则3:
3. \({\alpha _j} = \tau {\mkern 1mu} {\alpha _{j - 1}}\),重复2
【原创】回溯线搜索 Backtracking line search的更多相关文章
- Backtracking line search的理解
使用梯度下降方法求解凸优化问题的时候,会遇到一个问题,选择什么样的梯度下降步长才合适. 假设优化函数为,若每次梯度下降的步长都固定,则可能出现左图所示的情况,无法收敛.若每次步长都很小,则下降速度非常 ...
- 重新发现梯度下降法--backtracking line search
一直以为梯度下降很简单的,结果最近发现我写的一个梯度下降特别慢,后来终于找到原因:step size的选择很关键,有一种叫backtracking line search的梯度下降法就非常高效,该算法 ...
- 线搜索(line search)方法
在机器学习中, 通常需要求某个函数的最值(比如最大似然中需要求的似然的最大值). 线搜索(line search)是求得一个函数\(f(x)\)的最值的两种常用迭代方法之一(另外一个是trust re ...
- 一段有关线搜索的从python到matlab的代码
在Udacity上很多关于机器学习的课程几乎都是基于python语言的,博主“ttang”的博文“重新发现梯度下降法——backtracking line search”里对回溯线搜索的算法实现也是用 ...
- Line Search and Quasi-Newton Methods 线性搜索与拟牛顿法
Gradient Descent 机器学习中很多模型的参数估计都要用到优化算法,梯度下降是其中最简单也用得最多的优化算法之一.梯度下降(Gradient Descent)[3]也被称之为最快梯度(St ...
- Line Search and Quasi-Newton Methods
Gradient Descent 机器学习中很多模型的参数估计都要用到优化算法,梯度下降是其中最简单也用得最多的优化算法之一.梯度下降(Gradient Descent)[3]也被称之为最快梯度(St ...
- [原创]用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则
[原创]用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则 转载请注明出处:http://www.codelast.com/ line search(一维 ...
- Leetcode之回溯法专题-79. 单词搜索(Word Search)
Leetcode之回溯法专题-79. 单词搜索(Word Search) 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元 ...
- 用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则
转载请注明出处:http://www.codelast.com/ line search(一维搜索,或线搜索)是最优化(Optimization)算法中的一个基础步骤/算法.它可以分为精确的一维搜索以 ...
随机推荐
- timeit统计运行时间
import timeitt1 = timeit.timeit('sum(x*x for x in xrange(10000))',number = 10000) print t1
- call,apply,bind方法的总结
why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = { user:"追梦子", fn:f ...
- 2013 Multi-University Training Contest 1 Partition
这题主要是推公式…… ;}
- ASP.NET 免费开源控件
AspNetPager分页控件(当前版本:7.5.1) AspNetPager分页控件是应用于ASP.NET WebForm网站或应用程序中的自定义分页控件,支持默认的回发(Postback)分页和U ...
- linux入门教程(四) 初步进入linux世界
[Linux 系统启动过程] Linux的启动其实和windows的启动过程很类似,不过windows我们是无法看到启动信息的,而linux启动时我们会看到许多启动信息,例如某个服务是否启动. Lin ...
- 2016年2月---Javascript
How to Learn JavaScript Properly 如何正确学习JavaScript Learn Intermediate and Advanced JavaScript 书籍: < ...
- 【mysql的编程专题】触发器
类似tp里面的数据模型回调接口,在数据表增删改的前或后触发执行其他的预订的sql; 一个触发器要具备4要素: 1.监视地点 -- 要执行触发器的表 2.监视事件 -- 由什么DML事件来牵引 3.触发 ...
- Hibernate逍遥游记-第9章 Hibernate的映射类型
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- 创业草堂之一:创业的Idea是怎样产生的?
“创业”,在很多人的想象中,就是两个小伙子在车库里.或者在学生寝室里,侃出了一个Idea,然后找到了一个投资人或VC,经过几句话讲解,VC拍手叫绝,10钟内当场拍板,砸下了2000万美金,然后两小伙子 ...
- 如何在Android应用程序中使用传感器模拟器SensorSimulator
原文地址; 如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET http://blog.csdn.net/pku_android/arti ...