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),这组织了一个恶意网站从另外一个网站读取敏 ...
随机推荐
- 不要对md5file.read()计算md5值
最近遇到的一个问题,我使用以下代码对备份文件计算MD5值: # md5file=open("%s" % outputpath, 'rb') # md5=hashlib.md5(md ...
- C语言预处理理论
C语言预处理理论1.从源码到可执行文件的过程(1)源码.c->(编译)->elf可执行程序(2)源码.c->(编译)->目标文件.o->(链接)->elf可执行程序 ...
- 分享几个IntelliJ IDEA 2019 jihuo码(pojie码、zhuce码),亲测可用
文章转载自:https://www.jiweichengzhu.com/article/eb340e382d1d456c84a1d190db12755c 如果还有问题,加群交流:686430774(就 ...
- C++基础--string转
有时候除了要将数值型转为string外,可能也需要将一些string转为数值型,这个时候也还是可以用sstream字符串流来实现,同时也可以用C++标准库得到函数来实现. 1.字符串流 这个时候使用i ...
- Python学习:安装配置pycharm编辑器
我只介绍windows的安装过程,因为mac的安装过程实在是过于简单了,一路继续就可以了. 1. windows安装过程 1.1 下载安装包,软件可以找我领取 ! 根据自己的操作系统进行下载,左侧 ...
- 一个PHP的SQL注入完整过程
本篇文章介绍的内容是一个PHP的SQL注入完整过程,现在分享给大家,有需要的朋友可以参考一下 希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里 ...
- VBA代码优化及其他设置操作
一.代码优化的一些方法 尽量减少在循环中遍历调用对象,公式计算 (操作VBA代码若出现屏幕闪屏,会拖慢运行速度),可以禁止屏幕闪屏.多用在操作工作表/薄,单元格的时候. Application.Scr ...
- WEB测试方法总结-笔记
此文来自公开课培训笔记!!! 一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符 ...
- Java执行js加密算法
Java执行js加密算法 今日需求:在后端执行一段加密算法,算法是js写的 明白需求以后疯狂百度.最后发现JDK提供了各种脚本的支持(怪笔者学艺不精,第一次见识到这个库,留下不学无术的泪水),正题开始 ...
- 《C Primer Plus》- 第二章 C语言概述
本笔记写于2020年1月27日. 本系列文章参考的是<C Primer Plus>(第六版),其中里面会有笔者自己的相关补充. 以下示例均运行于macOS Catalina 10.15.2 ...