liblinear中的信赖域算法
- 求方程 \(H s = -g\), H是hessian矩阵, g 为梯度, 残量 \(r = -g -Hs\)。
s的初值为0,理论上,共轭梯度每步迭代使得\(\|s\|\) 单调增加,共轭梯度的迭代停止条件: \[ \| r \| < tol, \quad or \quad \|s + \delta_s \| > \Delta \]
- 给定参数: $ \eta_0 = 1e-4, \eta_1 = 0.25, \eta_2 = 0.75; \sigma_1 = 0.25, \sigma_2 = 0.5, \sigma_3 = 4;$
- 预期下降 prered: \(-q(s)\), 这里 \(q(s) = \frac12 s'Hs+g.s = \frac12(g.s - r.s)\)
- 实际下降 actred: f(w) - f(w+s)
- $\rho = prered / actred $, \(\alpha = -\frac{g.s} {2 (f(w+s) - f(w) - g.s)}\) 是 \(f(w + \alpha s )\)的二次插值函数\(\phi(\alpha)\)的最小值点。
- 实际代码做修正:\(\alpha = \max(\sigma_1, \alpha)\) if \(f(w+s) -f(w) - g.s>0\) else $\sigma_3 $。这个修正符合论文观点,信赖域预估太准确效果提升不明显,不如直接选大一点,SimpleTR的策略效果很好。
更新信赖域半径:
\[
\Delta_{k+1} =
\begin{cases}
\min( \max(\alpha,\sigma_1)\|s^k\|, \sigma_2\Delta_k ), & \text{if } \rho < \eta_0\\
\max(\sigma_1\Delta_k, \min(\alpha\|s^k\|, \sigma_2\Delta_k) ), & \text{else if } \rho < \eta_1\\
\max( \sigma_1\Delta_k, \min(\alpha \|s^k\|, \sigma_3\Delta_k) ), & \text{else if } \rho < \eta_2\\
\max(\Delta_k , \min(\alpha\|s^k\|, \sigma_3\Delta_k)), & \text{else if not reach_boundary } \\
\sigma_3\Delta_k , & \text{else } \\
\end{cases}
\]
- 更新w: if \(\rho >\eta_0\), w = w + s
参考
- https://github.com/cjlin1/liblinear/blob/master/tron.cpp
- http://www.csie.ntu.edu.tw/~cjlin/papers/newtron/newtron.pdf
liblinear中的信赖域算法的更多相关文章
- js中各种跨域问题实战小结(二)
这里接上篇:js中各种跨域问题实战小结(一) 后面继续学习的过程中,对上面第一篇有稍作休整.下面继续第二部分: -->5.利用iframe和location.hash -->6.windo ...
- js中各种跨域问题实战小结(一)
什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略 ...
- Java中常用的查找算法——顺序查找和二分查找
Java中常用的查找算法——顺序查找和二分查找 神话丿小王子的博客 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位 ...
- webrtc中的带宽自适应算法
转自:http://www.xuebuyuan.com/1248366.html webrtc中的带宽自适应算法分为两种: 1, 发端带宽控制, 原理是由rtcp中的丢包统计来动态的增加或减少带宽,在 ...
- C语言 结构体中的成员域偏移量
//C语言中结构体中的成员域偏移量 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...
- php中ajax跨域请求---小记
php中ajax跨域请求---小记 前端时间,遇到的一个问题,情况大约是这样: 原来的写法: 前端js文件中: $.ajax({ type:'get', url:'http://wan.xxx.c ...
- 基于Vivado HLS在zedboard中的Sobel滤波算法实现
基于Vivado HLS在zedboard中的Sobel滤波算法实现 平台:zedboard + Webcam 工具:g++4.6 + VIVADO HLS + XILINX EDK + ...
- 【转】larbin中的url去重算法
1.bloom filter算法 传说中,larbin使用bloom filter算法来进行url去重.那我们就先来了解下bloom filter算法好了. [以下转自:http://hi.baidu ...
- 在ASP.NET 5应用程序中的跨域请求功能详解
在ASP.NET 5应用程序中的跨域请求功能详解 浏览器安全阻止了一个网页中向另外一个域提交请求,这个限制叫做同域策咯(same-origin policy),这组织了一个恶意网站从另外一个网站读取敏 ...
随机推荐
- Social GAN代码要点记录
近日在阅读Social GAN文献的实验代码,加深对模型的理解,发现源代码的工程化很强,也比较适合构建实验模型的学习,故细致阅读.下文是笔者阅读中一些要点总结,有关于pytorch,也有关于模型自身的 ...
- Android进阶——多线程系列之四大线程池的使用介绍
线程池一直是初学者最抵触的东西,由于刚开始学习做项目并不会涉及到线程池的使用,但是不去学习它,心里又好像有个石头一直沉着,一直放心不下,其实是很简单的东西,早晚都要学,不如趁现在吧.由于文章从初学者的 ...
- C#高级编程(第9版) 第11章 LINQ 笔记
概述语言集成查询(Language Integrated Query, LINQ)在C#编程语言中集成了查询语法,可以用相同的语法访问不同的数据源.LINQ提供了不同数据源的抽象层,所以可以使用相同的 ...
- scanf与gets
gets函数为什么不能读取字符就往下运行了 这里有一个共性的问题,就是 scanf 输入后,会遗留一个回车符,传递到下面的输入语句: 回车符就会被下面的输入语句接收,而结束了输入,这里就是一个错误的值 ...
- 备份mysql的批处理命令
需要工具mysqldump.exe的支持,安装mysql默认是带此工具的 批处理命令 set NOW_TIME_HH=%time:~0,2% if "%NOW_TIME_HH%" ...
- .NET Core开发实战(第11课:文件配置提供程序)--学习笔记
11 | 文件配置提供程序:自由选择配置的格式 文件配置提供程序 Microsoft.Extensions.Configuration.Ini Microsoft.Extensions.Configu ...
- C基础 带你手写 redis ae 事件驱动模型
引言 - 整体认识 redis ae 事件驱动模型, 网上聊得很多. 但当你仔细看完一篇又一篇之后, 可能你看的很舒服, 但对于 作者为什么要这么写, 出发点, 好处, 缺点 ... 可能还是好模糊, ...
- SQL基础教程(第2版)第5章 复杂查询:练习题
/* 下面是解答示例 */ -- 创建视图的语句 CREATE VIEW ViewPractice5_1 AS SELECT product_name, sale_price, regist_date ...
- linux环境java程序cpu爆表问题查证
1.top命令查找导致cup爆表的进程 2. top -H -p10832 (10832是Java进程的PID)命令找出了具体的线程 3.使用用命令 jstack 10832> jstack.t ...
- PAT A1001-A1004
题集通道:https://pintia.cn/problem-sets/994805342720868352/problems/type/7 A1001 : A+B Format (20 point ...