[本文链接: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. C语言调用curl库抓取网页图片(转)

    思路是先用curl抓取网页源码,然后以关键字寻找出图片网址.  范例: #include <stdio.h> #include <stdlib.h> #include < ...

  2. PTA Insertion or Heap Sort

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  3. Newtonsoft.Json高级用法(转)

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  4. 使用sql更改表的列的数据类型和添加新列和约束

    修改数据库表某一列或添加列,转载的哦~ --增加一列 ALTER TABLE 表名 ADD 列名 VARCHAR(20) NULL --删除一列 ALTER TABLE 表名 drop COLUMN ...

  5. python实验一:画图

    题目:画图,学用rectangle画方形. rectangle(int left, int top, int right, int bottom) 参数说明:(left ,top )为矩形的左上坐标, ...

  6. mac上运行appium提示错误Encountered internal error running command 解决办法

    [debug] [iOS] App is not installed. Will try to install. [MJSONWP] Encountered internal error runnin ...

  7. 老男孩python自动化运维作业2

    拿到要求真不知道怎么写,不能还要写个商城页面吧: 最后还是用了input()模拟用户操作吧- -!不就操作个字典吗(字典模拟商品数据). python版本: >>>import sy ...

  8. win2008 IIS与php整合

    首先安装好IIS 安装的时候 要注意三个地方打得勾 注:   CGI  会在IIS+PHP的环境中用到 php.ini default_socket_timeout = 60extension_dir ...

  9. aa2

    option = { series : [ { name: 'Map', type: 'map', mapLocation: { x : 'left', y : 'top', height : 500 ...

  10. win10 EFI装ubuntu14.04双系统 及初始配置

    这次第二次装ubuntu系统了,第一次是在win7下安装的,到了win10,由于用了efi,跟win7的安装方法不太相同,相同点有: 1.仍然可以用u盘启动,我用的是UltroISO这个软件. 2.装 ...