在线最优化求解(Online Optimization)之三:FOBOS
在线最优化求解(Online Optimization)之三:FOBOS
FOBOS (Forward-Backward Splitting)是由John Duchi和Yoram Singer提出的[11]。从全称上来看,该方法应该叫FOBAS,但是由于一开始作者管这种方法叫FOLOS(Forward Looking Subgradients),为了减少读者的困扰,作者干脆只修改一个字母,叫FOBOS。
1. 算法原理
在FOBOS中,将权重的更新分为两个步骤:
公式 (1)
前一个步骤实际上是一个标准的梯度下降步骤,后一个步骤可以理解为对梯度下降的结果进行微调。
观察第二个步骤,发现对的微调也分为两部分:(1) 前一部分保证微调发生在梯度下降结果的附近;(2)后一部分则用于处理正则化,产生稀疏性。
如果将公式(1)中的两个步骤合二为一,即将代入
中,有:
令,如果
存在一个最优解,那么可以推断
向量一定属于
的次梯度集合:
由于,那么有:
上式实际上给出了FOBOS中权重更新的另一种形式:
我们这里可以看到不仅仅与迭代前的状态
有关,而且与迭代后的
有关。可能这就是FOBOS名称的由来。
2. L1-FOBOS
关于FOBOS的收敛性和Regret就不在此讨论了,详情可参见论文[1]。这里我们来看看FOBOS如何在L1正则化下取得比较好的稀疏性。
在L1正则化下,有为了简化描述,用向量
来表示
用标量
来表示
并将公式(1)等号右边按维度展开:
公式(2)
我们可以看到,在求和公式中的每一项都是大于等于的,所以公式(2)可以拆解成对特征权重 每一维度单独求解:
首先,假设是
的最优解,则有
,这是因为:
--------------------------------------------------------------------
反证法:
假设成立,那么有
这与是
的最优解相矛盾,故假设不成立,
成立。
---------------------------------------------------------------------
既然有,那么我们可以分两种情况来进行讨论:
---------------------------------------------------------------------
(1) 当时:
由于,所以
,相当于对
引入了不等式条件
;
为了求解这个含不等式约束的最优化问题,引入拉格朗日乘子,由KKT条件,有:
以及
根据上面的求导等式可得:
再次分为两种情况:
(a):
由于,所以
;这时有:
;又由于
,所以
。
(b):
这时有;又由于
,所以
综合(a)(b)的结论,当时,
(2) 当时:
采用相同的分析方法可得,在时有:
---------------------------------------------------------------------
综合上面的分析,可以得到在FOBOS在L1正则化条件下,特征权重的各个维度更新的方式为:
公式(3)
其中,为梯度
在维度i上的取值。
根据公式(3),我们很容易就可以设计出L1-FOBOS的算法逻辑:
3. L1-FOBOS与TG的关系
公式3)可以看出,L1-FOBOS在每次更新的时候,对
的每个维度都会进行判定,当满足
时对该维度进行“截断”,这个判定条件的含义是当一条样本产生的梯度不足以令对应维度上的权重值发生足够大的变化时,认为在本次更新过程中该维度不够重要,应当令其权重为0。
对于L1-FOBOS特征权重的各个维度更新公式(3),也可以写作如下形式:
比较上式与TG的特征权重维度更新公式,可以发现如果令,L1-FOBOS与TG完全一致。我们可以认为L1-FOBOS是TG在特定条件下的特殊形式。
参考文献
[1] John Duchi & Yoram Singer. Efficient Online and Batch Learning using Forward Backward Splitting. Journal of Machine Learning Research, 2009
在线最优化求解(Online Optimization)之三:FOBOS的更多相关文章
- 在线最优化求解(Online Optimization)之五:FTRL
在线最优化求解(Online Optimization)之五:FTRL 在上一篇博文中中我们从原理上定性比较了L1-FOBOS和L1-RDA在稀疏性上的表现.有实验证明,L1-FOBOS这一类基于梯度 ...
- 在线最优化求解(Online Optimization)之四:RDA
在线最优化求解(Online Optimization)之四:RDA 不论怎样,简单截断.TG.FOBOS都还是建立在SGD的基础之上的,属于梯度下降类型的方法,这类型方法的优点就是精度比较高,并且T ...
- 在线最优化求解(Online Optimization)之一:预备篇
在线最优化求解(Online Optimization)之一:预备篇 动机与目的 在实际工作中,无论是工程师.项目经理.产品同学都会经常讨论一类话题:“从线上对比的效果来看,某某特征或因素对xx产品的 ...
- 在线最优化求解(Online Optimization)之二:截断梯度法(TG)
在线最优化求解(Online Optimization)之二:截断梯度法(TG) 在预备篇中我们做了一些热身,并且介绍了L1正则化在Online模式下也不能产生较好的稀疏性,而稀疏性对于高维特征向量以 ...
- Angular4.0从入门到实战打造在线竞拍网站学习笔记之三--依赖注入
Angular4.0基础知识之组件 Angular4.0基础知识之路由 依赖注入(Dependency Injection) 正常情况下,我们写的代码应该是这样子的: let product = ne ...
- Alink漫谈(十二) :在线学习算法FTRL 之 整体设计
Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 目录 Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 0x00 摘要 0x01概念 1.1 逻辑回归 1.1.1 推导过程 ...
- Alink漫谈(十三) :在线学习算法FTRL 之 具体实现
Alink漫谈(十三) :在线学习算法FTRL 之 具体实现 目录 Alink漫谈(十三) :在线学习算法FTRL 之 具体实现 0x00 摘要 0x01 回顾 0x02 在线训练 2.1 预置模型 ...
- FTRL笔记
这篇笔记主要参考冯杨的五篇博客:在线最优化求解(Online Optimization).因为对于在线学习方法,稀疏性问题需要特别关注:每次在线学习一个新 instance 的时候,优化方向并不一定是 ...
- [笔记]FTRL与Online Optimization
1. 背景介绍 最优化求解问题可能是我们在工作中遇到的最多的一类问题了:从已有的数据中提炼出最适合的模型参数,从而对未知的数据进行预测.当我们面对高维高数据量的场景时,常见的批量处理的方式已经显得力不 ...
随机推荐
- C语言知识总结(1)
C语言中的数据类型 存在疑问,具体参考下面评论 变量的存储 变量实例 ; ; 内存由大到小寻址,优先分配内存地址较大的字节给变量.b的内存地址比a大 每个变量都有地址:第一个字节的地址就是变量的地址 ...
- Lambda表达式的本质是匿名函数
1.委托的简介: 委托可以简单的理解为方法的列表,添加的方法的参数类型,个数,顺序必须和委托一致, 也就是说委托起到了托管方法的作用,并且约束了要调用的方法. //1声明委托 public deleg ...
- HTML5标准终于来了,看什么书学习最好??????
最近看了一本书<HTML5网页开发实例详解>,是大众点评的攻城狮写的,觉得很有收获,看样子目前大多数的国内网页都支持HTML5了,全栈工程师是不是必须得会HTML5? 有兴趣的可以讨论呀, ...
- cocos2d-x 节点操作 -->J2ME
cocos2d-x 的节点操作涉及到以下几点 1. 节点之间的关系 2. 节点的添加操作 3. 节点的删除操作 4. ...
- IE8浏览器跨域接口访问异常的解决办法
IE8版本以下浏览器绝对是一个神奇的存在,忙碌好久,万事具备,居然在ajax调用接口的时候直接爆炸 陈述一下问题 首先是有这样一个接口,请求类型POST,入参JSON,出参JSON,jQuery aj ...
- GitHub for Windows离线安装的方法
这几天一直在尝试安装GitHub for windows ,安装程序是从https://windows.github.com/ 下载到的OneClick 部署程序,版本号为2.11.0.5.可能是因为 ...
- 关于Protobuf在游戏开发中的运用
最近在研究protobuf在项目中的使用,由于我们项目服务端采用的是C++,客户端是cocos2dx-cpp,客户端与服务端的消息传输是直接对象的二进制流.如果客户端一直用C++来写,问题到不大,但是 ...
- RUP(Rational Unified Process)统一软件过程概述
RUP是Rational公司三位杰出的软件工程大师Grady Booch,Ivar Jacobson,James Rumbaugh提出的一个软件工程过程方法.软件开发过程是将一个用户需求转化为软件系统 ...
- Linux 如何设置只允许域名访问站点而禁止IP访问站点
最近在论坛里看到有人问到 Linux 如何设置只允许域名访问站点而禁止IP访问站点的问题,之前自己也用过这个功能,可以防止别人用 IP 地址来访问到自己的网站,下面我就我自己的环境给出解决方法,我用的 ...
- python 获取 mac 地址 的代码
python 获取 mac 地址 的例子,有需要的朋友可以参考下. #!/bin/python import os import re def GetMac(): if os.name == ...