[本文链接:http://www.cnblogs.com/breezedeus/p/3426757.html,转载请注明出处]

假设我们要求解以下的最小化问题:
                                                                                \(  \min\limits_x f(x)  \) 。
如果\( f(x) \)可导,那么一个简单的方法是使用Gradient Descent (GD)方法,也即使用以下的式子进行迭代求解:
                                               \( x_{k+1} := x_{k} - \alpha \nabla f(x_{k}) \) 。
对GD的一种解释是\( x_{k} \)沿着当前目标函数的下降方向走一小段,只要步子足够小,总能保证得到 \( f(x_{k+1}) \leq f(x_{k}) \)。

如果\( \nabla f(x) \)满足L-Lipschitz,即:
                                                 \( ||\nabla f(x') - \nabla f(x)|| \leq L ||x’ - x|| \),
那么我们可以在点\( x_{k} \)附近把\( f(x) \)近似为:
                             \(  \hat{f}(x, x_k) \doteq f(x_k) + \langle \nabla f(x_k), x - x_k \rangle + \frac{L}{2} ||x - x_k||^2 \)。

把上面式子中各项重新排列下,可以得到:

  

显然\(  \hat{f}(x, x_k) \)的最小值在

\( x_{k+1} = x_k - \frac 1 L \nabla f(x_k) \)

获得。所以,从这个角度上看的话,GD的每次迭代是在最小化原目标的一个二次近似函数。

  

在很多最小化问题中,我们往往会加入非光滑的惩罚项\( g(x) \),比如常见的L1惩罚:\( g(x) = ||x||_1 \)。这个时候,GD就不好直接推广了。但上面的二次近似思想却可以推广到这种情况:

  。

这就是所谓的proximal gradient descent(PGD)算法。只要给定\( g(x) \)时下面的最小化问题能容易地求解,PGD就能高效地使用:

  。

比如\( g(x) = ||x||_1 \)时, \(\text{prox}_{\mu g} (z)\)能够通过所谓的soft thresholding获得:

\( \text{prox}_{\mu g} (z) = \text{sign}(z) \max\{|z| - \mu, \ 0\} \)。

[References]

[1] John Wright. Lecture III: Algorithms, 2013.

Proximal Gradient Descent for L1 Regularization的更多相关文章

  1. Proximal Gradient Descent for L1 Regularization(近端梯度下降求解L1正则化问题)

    假设我们要求解以下的最小化问题: $min_xf(x)$ 如果$f(x)$可导,那么一个简单的方法是使用Gradient Descent (GD)方法,也即使用以下的式子进行迭代求解: $x_{k+1 ...

  2. 关于subGradent descent和Proximal gradient descent的迭代速度

    clc;clear; D=1000;N=10000;thre=10e-8;zeroRatio=0.6; X = randn(N,D); r=rand(1,D); r=sign(1-2*r).*(2+2 ...

  3. 近端梯度算法(Proximal Gradient Descent)

    L1正则化是一种常用的获取稀疏解的手段,同时L1范数也是L0范数的松弛范数.求解L1正则化问题最常用的手段就是通过加速近端梯度算法来实现的. 考虑一个这样的问题: minx  f(x)+λg(x) x ...

  4. Stochastic Gradient Descent

    一.从Multinomial Logistic模型说起 1.Multinomial Logistic 令为维输入向量; 为输出label;(一共k类); 为模型参数向量: Multinomial Lo ...

  5. Logistic Regression and Gradient Descent

    Logistic Regression and Gradient Descent Logistic regression is an excellent tool to know for classi ...

  6. 机器学习-随机梯度下降(Stochastic gradient descent)

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  7. [Converge] Gradient Descent - Several solvers

    solver : {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}, default: ‘liblinear’ Algorithm to use in the op ...

  8. 梯度下降(Gradient Descent)小结

    在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法.这里就对梯度下降法做一个完整的总结. 1. 梯度 在微 ...

  9. 机器学习基础——梯度下降法(Gradient Descent)

    机器学习基础--梯度下降法(Gradient Descent) 看了coursea的机器学习课,知道了梯度下降法.一开始只是对其做了下简单的了解.随着内容的深入,发现梯度下降法在很多算法中都用的到,除 ...

随机推荐

  1. 第13章 .NET应用程序配置

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  2. 一些简单的PGSQL 操作

    1.jsonb字段的查询 enterprisearr 字段类型为jsonb,存储格式为["物流服务商","销售服务商","供应商"]. SE ...

  3. java.lang.OutOfMemoryError: Java heap space的解决方法

    windows->preferences->Java->Installed JRES->edit->Default VM Arguments添加-Xms256m -Xmx ...

  4. html5调取手机摄像头或相册

    html5调用手机摄像头或者相册 由于input的type=file 格式的文件的界面并不是我们所希望的界面,所以在此我隐藏input,自定义样式,这个样式就在<a>中自己定义,这里我就不 ...

  5. django 1.8 TEMPLE_DIR和STATICFILES_DIRS配置

    django 1.6后settings.py文件中没有了TEMPLATE_DIRS模板目录和STATICFILES_DIRS静态访问目录,需要手动添加,最近也遇到这个问题,把解决办法说一下 1.环境 ...

  6. 关于python3.X 报"import urllib.request ImportError: No module named request"错误,解决办法

    #encoding:UTF-8 import urllib.request url = "http://www.baidu.com" data = urllib.request.u ...

  7. NashZhou的自我介绍

    行业: 电子商务服务业,目前主要是淘宝开放平台,ISV 关键词: 电商,淘宝直通车,关键词广告,自动优化 当前目标: 广告算法 广告主自动优化 希望能在这里结识有共同爱好踏实上进的园友,共同学习,共同 ...

  8. B-Tree 学习

    算法导论 第18章 B树与其他树的结构不同的是  B数是多叉而不是二叉树 而且分叉因子很大一般使用于数据库 针对需要硬盘IO的情况而使用 可以降低磁盘IOB树的一个节点是以磁盘的页面为单位,而不是数据 ...

  9. SQL server 动态行转列

    用聚合函数配合CASE语句实现行转列功能: 现在分享一下具体实现代码: 转换前效果: PlanName PlanType PlanLimit 计划1 计划类型1 RMB 1,000,000 计划1 计 ...

  10. 第四章 使用Docker镜像和仓库

    第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...