zoukankan      html  css  js  c++  java
  • 在线最优化求解(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的算法逻辑:

    Algorithm 4. Forward-Backward Splitting with L1 Regularization

    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

  • 相关阅读:
    Css_加载样式
    Mvc4_@RenderBody()和@RenderSection()
    C#_观察者模式
    Mvc4_MvcPager 概述
    Mvc4_Area的应用
    Nginx 服务器性能参数设置
    Nginx变量的实现机制
    天下无雾
    Nginx Http框架的理解
    【转】websocket协议规范
  • 原文地址:https://www.cnblogs.com/yymn/p/4687015.html
Copyright © 2011-2022 走看看