zoukankan      html  css  js  c++  java
  • 《分布式机器学习:算法、理论与实践》——【RE2a】

    分布式机器学习:算法、理论与实践——【1】

    分布式机器学习:算法、理论与实践 2)——【2】

    《分布式机器学习:算法、理论与实践》——【RE3】

    《分布式机器学习:算法、理论与实践》——【RE4】

    《分布式机器学习:算法、理论与实践》——【RE5】

    《分布式机器学习:算法、理论与实践》——【RE6】

    《分布式机器学习:算法、理论与实践》——【RE1】

    《分布式机器学习:算法、理论与实践》——【RE2】

     

     

     

    近端梯度下降法是众多梯度下降 (gradient descent) 方法中的一种,其英文名称为proximal gradident descent,其中,术语中的proximal一词比较耐人寻味,将proximal翻译成“近端”主要想表达"(物理上的)接近"。与经典的梯度下降法和随机梯度下降法相比,近端梯度下降法的适用范围相对狭窄。对于凸优化问题,当其目标函数存在不可微部分(例如目标函数中有 [公式] -范数或迹范数)时,近端梯度下降法才会派上用场。

    1. 特定的凸优化问题

    一般而言,近端梯度下降法常用于解决以下这类优化问题:

    假设目标函数 [公式] 是由 [公式] 和 [公式] 叠加而成,其中,限定 [公式] 是可微的凸函数、 [公式] 是不可微 (或局部不可微) 的凸函数。

    2. 以线性回归问题为例

    给定 [公式] ,若线性回归表达式为 [公式] ,其中,变量 [公式] 表示系数向量。优化的目标函数可以写成如下形式:

    [公式]

    其中, [公式] 表示 [公式] -范数; [公式] 表示 [公式] -范数;正则项中的 [公式] -范数是为了保证变量 [公式] 是稀疏的。在这个目标函数中,正则项中的 [公式] -范数便是一个不可微的凸函数。由此便引申出采用近端梯度下降法对这类优化问题进行求解。

    2.1 近端算子 (proximal operator)

    一般来说,对于任意向量 [公式] ,如果不可微函数为[公式],则近端算子 (proximal operator) 为

    [公式]

    其中, [公式] 表示关于变量 [公式] 和函数 [公式] 的近端算子;[公式] 表示关于变量 [公式]软阈值函数(下面将着重介绍),选用符号 [公式] 是因为软阈值soft-thresholding的英文首字母为s。

    这条公式想表达的意思是:对于任意给定的 [公式] ,我们希望找到使得 [公式] 最小化的解 [公式] ,其中, [公式] 是一个新增参数,表示近端梯度下降的步长 (step size)。实际上,近端算子只和不可微的凸函数 [公式] 有关 (如公式(2)中的[公式])。

    当不可微的凸函数的形式为 [公式] 时,则对应的软阈值函数为

    [公式]

    如公式(2),当 [公式] ( [公式] -范数作为正则项,其正则项参数为 [公式] )时,软阈值函数则为[公式],其定义为

    [公式]

    公式(4)给出的软阈值函数恰好与公式(2)中的目标函数相对应。至于为什么软阈值函数的形式是这样,Derivation of the soft thresholding operator中给出了简单详细的推导过程。

    2.2 近端梯度下降 (proximal gradient descent)

    对于优化问题 [公式] ,变量 [公式] 的迭代递推公式为

    [公式]

    其中,变量上标的 [公式] 表示当前迭代次数。

    迭代递推公式证明过程(涉及知识:泰勒展开):
    [公式]
    注意:由于公式第三行中的 [公式] 和第四行中的 [公式] 均与决策变量 [公式] 无关,因此公式第三行等于公式第四行。

    2.3 线性回归问题的迭代过程

    回到公式(1),我们定义了函数 [公式] 的表达式为

    [公式]

    由于 [公式] ,根据近端梯度下降法的迭代递推公式可以推导出变量[公式] 的近端梯度更新公式为

    [公式]

    这条更新公式通常也被称为迭代软阈值算法 (iterative soft-thresholding algorithm, ISTA)。

    众所周知,如果将这里的 [公式] 换成 [公式] ,则整个线性回归的优化问题就会变成一个最小二乘问题。获取变量 [公式] 的最优解也会变得非常简单,只需要令 [公式] 即可,此时的最优解为

    [公式]

    其中, [公式] 表示正则项参数。

    当然,这里还有一个很值得思考的问题:

    对于上述线性回归问题,为何选用近端梯度下降法,而非次梯度 (subgradient descent) 下降法呢?

    实际上,次梯度下降法也能求解这种线性回归问题。一般而言,对于损失函数

    [公式]

    我们可以得到正则项的梯度为 [公式] 然而不幸的是,当 [公式] 时,正则项不可微。为了消除这个影响,我们可以采用次梯度 [公式] ,当再遇到 [公式] 时,次梯度就会等于 [公式] .

    相应地,损失函数的次梯度为

    [公式]

    与梯度下降法类似,我们可以用次梯度下降法使得损失函数最小化。但仔细看一下损失函数次梯度的表达式 [公式] ,我们会发现:次梯度法可能不会像我们所期许的那样,得到真正的稀疏解 [公式] ,次梯度法只会使解的部分数值 (即 [公式] 的部分元素) 尽可能小 (尽可能接近 [公式] )。因此,只有选用近端梯度下降这类方法,我们才能获得稀疏解,并同时提升迭代过程的收敛性。

    3. 相关参考

    [1] Proximal Gradient Descent (by Ryan Tibshirani from CMU):

    [2] Why proximal gradient descent instead of plain subgradient methods for Lasso?

    [3] Why doesn't subgradient descent give sparse solutions to the Lasso?

    编辑于 2019-11-27
     
     
    收敛速度稍慢,理论收敛阶1/n。对于l1极小化问题,临(邻)近梯度法(pg)即为ista。采用加速版本的ista即fista算法可以到1/n2。
     

    https://www.google.com.hk/search?q=%E8%BF%91%E7%AB%AF%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D

    临近算子是对梯度的延伸,当函数 f 为光滑函数时,该临近算子就是梯度。

    https://blog.csdn.net/qq547276542/article/details/78251779

    http://roachsinai.github.io/2016/08/03/1Proximal_Method/

    讲得详细

    Frank-Wolfe方法将线性约束最优化问题转化为一系列线性规划问题和一维搜索问题求解。可以证明,当f具有连续一阶偏导数,且可行域S有界,Frank-Wolfe方法是收敛的。

    https://www.cnblogs.com/cx2016/p/12926182.html

     所以这个示意图还是不错的

     

     

     

     

     

  • 相关阅读:
    一些图形API函数收录
    VC6.0常见编译错误及解决方法
    Google Test Primer(入门)(六) 结束部分
    转帖:C++程序内存泄露检测
    Google Test Primer(四)——简单测试
    Android Snippet
    DCAApp 和 DXPApp 类的探索
    WEB(Javascript)远程调用方案清单
    做一个treeview dropdownlist 最近会放上来
    DotLucene:37行代码全文搜索
  • 原文地址:https://www.cnblogs.com/cx2016/p/13255518.html
Copyright © 2011-2022 走看看