文章目录

  • 近端梯度下降的背景
  • 常见线性回归问题
  • 近端算子(Proximal Operator)
  • 近端梯度下降迭代递推方法
  • 以Lasso线性回归问题为例
  • 参考资料

近端梯度下降的背景

近端梯度下降(Proximal Gradient Descent, PGD)是众多梯度下降算法中的一种,与传统的梯度下降算法以及随机梯度下降算法相比,近端梯度下降算法的使用范围相对狭窄,对于凸优化问题,PGD常用与目标函数中包含不可微分项时,如 L 1 L1 L1范数、迹范数或者全变正则项等。

常见线性回归问题

很多优化问题都可以转换为线性回归问题,假设线性回归的表达式是 y = X w y = Xw y=Xw其中 y ∈ R m y \in R^{m} y∈Rm, X ∈ R m × n X \in R^{m \times n} X∈Rm×n,是已知的, w ∈ R n w \in R^{n} w∈Rn表示参数向量,是未知的。根据应用场景不同,变量和参数具有的意义也不同。

最常见的线性回归模型的目标函数即可表示为: f ( w ) = 1 2 ∣ ∣ y − X w ∣ ∣ 2 2 f(w) = \frac{1}{2}||y - Xw||^{2}_{2} f(w)=21​∣∣y−Xw∣∣22​求解上述优化问题可通过最小二乘法或者梯度下降的方法。在实际情况中,我们通常会对参数向量 w w w进行限制,如为了减小模型的复杂度,会要求参数向量为稀疏的形式,此时会加入 L 1 L1 L1正则项;为了提高模型的泛化能力,会要求参数比较小,此时会加入 L 2 L2 L2正则项,则得到的回归模型分别为Lasso回归和Ridge回归模型。

Lasso回归模型的目标函数:
f ( w ) = 1 2 ∣ ∣ y − X w ∣ ∣ 2 2 + λ ∣ ∣ w ∣ ∣ 1 f(w) = \frac{1}{2}||y - Xw||^{2}_{2}+\lambda||w||_{1} f(w)=21​∣∣y−Xw∣∣22​+λ∣∣w∣∣1​Ridge回归模型的目标函数:
f ( w ) = f ( w ) = 1 2 ∣ ∣ y − X w ∣ ∣ 2 2 + β ∣ ∣ w ∣ ∣ 2 2 f(w) = f(w) = \frac{1}{2}||y - Xw||^{2}_{2} + \beta||w||_{2}^{2} f(w)=f(w)=21​∣∣y−Xw∣∣22​+β∣∣w∣∣22​

对于Lasso回归模型的目标函数, ∣ ∣ w ∣ ∣ 1 ||w||_{1} ∣∣w∣∣1​是一个凸函数,并且是不可微的,传统的梯度下降则通常要求目标函数是可微的,所以为了解决含有不可微凸函数项的目标函数优化问题,近端梯度下降算法就此提出。近端梯度下降主要解决的问题可表示为: m i n f ( w ) = m i n { g ( w ) + h ( w ) } min f(w) = min \{g(w) + h(w)\} minf(w)=min{g(w)+h(w)}其中 g ( w ) g(w) g(w)是凸函数,并且可微; h ( w ) h(w) h(w)也是凸函数,但是在某些地方不可微,对应于Lasso回归模型中就是 ∣ ∣ w ∣ ∣ 1 ||w||_{1} ∣∣w∣∣1​项。

近端算子(Proximal Operator)

在介绍近端梯度下降之前,我们需要先引入近端算子的概念。近端算子是一种映射,并且它只和不可微的凸函数 h ( w ) h(w) h(w)有关,它的表现形式是: p r o x h ( w ) = a r g m i n u { h ( u ) + 1 2 ∣ ∣ u − w ∣ ∣ 2 2 } prox_{h}(w) = arg \mathop{min} \limits_{u}\{h(u) + \frac{1}{2}||u - w||_{2}^{2}\} proxh​(w)=argumin​{h(u)+21​∣∣u−w∣∣22​}其中 p r o x h ( w ) prox_{h}(w) proxh​(w)表示变量 w w w和函数 h ( . ) h(.) h(.)的近端算子。上面的公式的意义是:对于任意给定的 w ∈ R n w \in R^{n} w∈Rn,我们希望找到使得 h ( u ) + 1 2 ∣ ∣ u − w ∣ ∣ 2 2 h(u) + \frac{1}{2}||u - w||_{2}^{2} h(u)+21​∣∣u−w∣∣22​最小化的解。若 u = p r o x h ( w ) u = prox_{h}(w) u=proxh​(w)为最优解,则这个解的意义是,当我们知道存在不可微点的函数 h ( w ) h(w) h(w)在点 w w w处不可微时,则我们就去找一个点 u u u,这个点 u u u不仅仅使得函数 h ( w ) h(w) h(w)取得较小的值,还非常接近不可微分点 w w w。

通常在通过近端算子进行迭代递推时,会引入一个迭代步长 t t t,即:
p r o x h ( . ) , t ( w ) = a r g m i n u { h ( u ) + 1 2 t ∣ ∣ u − w ∣ ∣ 2 2 } prox_{h(.),t}(w) = arg \mathop{min} \limits_{u}\{h(u) + \frac{1}{2t}||u - w||_{2}^{2}\} proxh(.),t​(w)=argumin​{h(u)+2t1​∣∣u−w∣∣22​}

特别地,当 h ( w ) = λ ∣ ∣ x ∣ ∣ 1 h(w) = \lambda ||x||_{1} h(w)=λ∣∣x∣∣1​时, p r o x h ( w ) prox_{h}(w) proxh​(w)就是所谓的软阈值函数(soft thresholding function),即 p r o x h ( w ) = s o f t λ ( w ) prox_{h}(w) = soft_{\lambda}(w) proxh​(w)=softλ​(w),其中 s o f t λ ( w ) = s g n ( w ) ( ∣ w ∣ − λ ) + = { w − λ , w ≥ λ 0 , ∣ w ∣ ≤ λ w + λ , w ≤ − λ soft_{\lambda}(w) = sgn(w)(|w| - \lambda)_{+} = \left \{ \begin{aligned} &w - \lambda, &w \geq \lambda \\ &0, &|w| \leq \lambda \\ &w+\lambda, &w\leq -\lambda \end{aligned} \right. softλ​(w)=sgn(w)(∣w∣−λ)+​=⎩⎪⎨⎪⎧​​w−λ,0,w+λ,​w≥λ∣w∣≤λw≤−λ​加入迭代步长 t t t之后的形式是: s o f t λ , t ( w ) = s g n ( w ) ( ∣ w ∣ − λ t ) + = { w − λ t , w ≥ λ t 0 , ∣ w ∣ ≤ λ t w + λ t , w ≤ − λ t soft_{\lambda, t}(w) = sgn(w)(|w| - \lambda t)_{+} = \left \{ \begin{aligned} &w - \lambda t, &w \geq \lambda t \\ &0, &|w| \leq \lambda t \\ &w+\lambda t, &w\leq -\lambda t \end{aligned} \right. softλ,t​(w)=sgn(w)(∣w∣−λt)+​=⎩⎪⎨⎪⎧​​w−λt,0,w+λt,​w≥λt∣w∣≤λtw≤−λt​

软阈值算子计算时针对的是向量 w w w的分量形式。软阈值函数的图像形式是:

近端梯度下降迭代递推方法

对于问题优化 a r g m i n w f ( w ) = g ( w ) + h ( w ) arg\mathop{min} \limits_{w} f(w) = g(w) + h(w) argwmin​f(w)=g(w)+h(w),通过近端梯度下降算法进行迭代求解时,变量 w w w的迭代递推公式是: w k = p r o x t , h ( . ) ( w k − 1 − t ∇ g ( w k − 1 ) ) w_{k} = prox_{t, h(.)}(w_{k-1} - t \nabla g(w_{k-1})) wk​=proxt,h(.)​(wk−1​−t∇g(wk−1​))其中, w w w的下标表示迭代次数, t t t表示迭代步长。

下面简单介绍如何进行证明。首先,在每一步进行迭代中,近端梯度下降将点 w k − 1 w_{k-1} wk−1​处的近似函数取得最小值的点作为下一次迭代的起始点 w k w_{k} wk​。对于 f ( w ) f(w) f(w)在点 w k − 1 w_{k-1} wk−1​处的近似函数可以通过泰勒公式以及Lipschitz continuous gradient进行二阶近似,即 Q ( w , w k − 1 ) = g ( w k − 1 ) + < ∇ g ( w k − 1 ) , w − w k − 1 > + L 2 ∣ ∣ w − w k − 1 ∣ ∣ 2 2 + h ( w ) Q(w, w_{k-1}) = g(w_{k-1}) + <\nabla g(w_{k-1}), w - w_{k-1}> + \frac{L}{2}||w - w_{k-1}||_{2}^{2} + h(w) Q(w,wk−1​)=g(wk−1​)+<∇g(wk−1​),w−wk−1​>+2L​∣∣w−wk−1​∣∣22​+h(w)

所以我们即是需要证明: w k = p r o x t , h ( . ) ( w k − 1 − t ∇ g ( w k − 1 ) ) = a r g m i n w Q ( w , w k − 1 ) w_{k} =prox_{t, h(.)}(w_{k-1} - t \nabla g(w_{k-1}))= arg\mathop{min} \limits_{w}Q(w, w_{k-1}) wk​=proxt,h(.)​(wk−1​−t∇g(wk−1​))=argwmin​Q(w,wk−1​)

接着,我们将软阈值算子进行展开:
w k = p r o x t , h ( . ) ( w k − 1 − t ∇ g ( w k − 1 ) ) = a r g m i n w h ( w ) + 1 2 t ∣ ∣ w − ( w k − 1 − t ∇ g ( w k − 1 ) ) ∣ ∣ 2 2 = a r g m i n w h ( w ) + t 2 ∣ ∣ ∇ g ( w k − 1 ) ∣ ∣ 2 2 + < ∇ g ( w k − 1 ) , w − w k − 1 > + 1 2 t ∣ ∣ w − w k − 1 ∣ ∣ 2 2 = a r g m i n w h ( w ) + g ( w k − 1 ) + < ∇ g ( w k − 1 ) , w − w k − 1 > + 1 2 t ∣ ∣ w − w k − 1 ∣ ∣ 2 2 \begin{aligned} w_{k} &= prox_{t, h(.)}(w_{k-1} - t \nabla g(w_{k-1}))\\&= arg\mathop{min} \limits_{w} h(w) + \frac{1}{2t}||w - (w_{k-1} - t \nabla g(w_{k-1}))||_{2}^{2} \\&=arg\mathop{min} \limits_{w} h(w)+ \frac{t}{2}||\nabla g(w_{k-1})||_{2}^{2}+<\nabla g(w_{k-1}), w - w_{k-1}> + \frac{1}{2t}||w - w_{k-1}||_{2}^{2} \\&=arg\mathop{min} \limits_{w} h(w)+ g(w_{k-1}) + <\nabla g(w_{k-1}), w - w_{k-1}> + \frac{1}{2t}||w - w_{k-1}||_{2}^{2}\end{aligned} wk​​=proxt,h(.)​(wk−1​−t∇g(wk−1​))=argwmin​h(w)+2t1​∣∣w−(wk−1​−t∇g(wk−1​))∣∣22​=argwmin​h(w)+2t​∣∣∇g(wk−1​)∣∣22​+<∇g(wk−1​),w−wk−1​>+2t1​∣∣w−wk−1​∣∣22​=argwmin​h(w)+g(wk−1​)+<∇g(wk−1​),w−wk−1​>+2t1​∣∣w−wk−1​∣∣22​​因为 t / 2 ∣ ∣ ∇ g ( w k − 1 ) ∣ ∣ 2 2 t/2||\nabla g(w_{k-1})||_{2}^{2} t/2∣∣∇g(wk−1​)∣∣22​是常数,与所求变量 w w w无关,所以最后两步是等价的。

又因为: w k = a r g m i n w Q ( w , w k − 1 ) = a r g m i n w h ( w ) + g ( w k − 1 ) + < ∇ g ( w k − 1 ) , w − w k − 1 > + L 2 ∣ ∣ w − w k − 1 ∣ ∣ 2 2 \begin{aligned} w_{k} &= arg\mathop{min} \limits_{w}Q(w, w_{k-1}) \\ &=arg\mathop{min} \limits_{w} h(w)+ g(w_{k-1}) + <\nabla g(w_{k-1}), w - w_{k-1}> + \frac{L}{2}||w - w_{k-1}||_{2}^{2} \end{aligned} wk​​=argwmin​Q(w,wk−1​)=argwmin​h(w)+g(wk−1​)+<∇g(wk−1​),w−wk−1​>+2L​∣∣w−wk−1​∣∣22​​所以得证。并且从结果看,两者区别只是在于迭代步长的选取。其中 t = 1 / L t = 1/L t=1/L在理论上迭代速度最快的。

以Lasso线性回归问题为例

对于Lasso线性回归问题,即是求解 a r g m i n w f ( w ) = g ( w ) + h ( w ) arg\mathop{min} \limits_{w} f(w) = g(w) + h(w) argwmin​f(w)=g(w)+h(w),其中 g ( w ) = 1 2 ∣ ∣ y − X w ∣ ∣ 2 2 g(w) = \frac{1}{2}||y - Xw||_{2}^{2} g(w)=21​∣∣y−Xw∣∣22​, h ( w ) = λ ∣ ∣ w ∣ ∣ 1 h(w) = \lambda||w||_{1} h(w)=λ∣∣w∣∣1​。
由近端算子以及近端梯度算法递推公式可知变量 w w w的迭代递推公式是: w k = p r o x t , h ( . ) ( w k − 1 − t ∇ g ( w k − 1 ) ) = s o f t t , λ ( w k − 1 − t ∇ g ( w k − 1 ) ) w_{k} = prox_{t, h(.)}(w_{k-1} - t \nabla g(w_{k-1}))=soft_{t,\lambda}(w_{k-1} - t \nabla g(w_{k-1})) wk​=proxt,h(.)​(wk−1​−t∇g(wk−1​))=softt,λ​(wk−1​−t∇g(wk−1​))其中, ∇ g ( w k − 1 ) = X T ( X w − y ) \nabla g(w_{k-1}) = X^{T}(Xw - y) ∇g(wk−1​)=XT(Xw−y),则上式即: w k = p r o x t , h ( . ) ( w k − 1 − t ∇ g ( w k − 1 ) ) = s o f t t , λ ( w k − 1 − t X T X w + t X T y ) w_{k} = prox_{t, h(.)}(w_{k-1} - t \nabla g(w_{k-1}))=soft_{t,\lambda}(w_{k-1} - tX^{T}Xw + tX^{T}y ) wk​=proxt,h(.)​(wk−1​−t∇g(wk−1​))=softt,λ​(wk−1​−tXTXw+tXTy)这里每次迭代中通过一个软阈值(收缩)的操作来更新 w w w,实际上就是迭代软阈值算法 (Iterative Soft-Thresholding Algorithm, ISTA),或者称为迭代阈值收缩算法(Iterative Shrinkage Thresholding Algorithm, ISTA)

参考资料

机器学习 | 近端梯度下降法 (proximal gradient descent)
LASSO回归与L1正则化 西瓜书
软阈值迭代算法(ISTA)和快速软阈值迭代算法(FISTA)

【优化】近端梯度下降(Proximal Gradient Descent)求解Lasso线性回归问题相关推荐

  1. python实现次梯度(subgradient)和近端梯度下降法 (proximal gradient descent)方法求解L1正则化

    l1范数最小化 考虑函数,显然其在零点不可微,其对应的的次微分为: 注意,的取值为一个区间. 两个重要定理: 1)一个凸函数,当且仅当,为全局最小值,即 为最小值点  : 2)为函数(不一定是凸函数) ...

  2. 近端梯度下降法 (proximal gradient descent)

    本文参考了知乎的文章 机器学习 | 近端梯度下降法 (proximal gradient descent), 写的非常棒,但感觉有些微的赘余, 因此以这篇博客,希望更精简地介绍 近端梯度下降法 这种略 ...

  3. LASSO近端梯度下降法Proximal Gradient Descent公式推导及代码

    文章目录 LASSO by Proximal Gradient Descent Proximal Gradient Descent Framework近端梯度下降算法框架 Proximal Gradi ...

  4. 近端梯度法(Proximal Gradient Descent)

    总目录 一. 凸优化基础(Convex Optimization basics) 凸优化基础(Convex Optimization basics) 二. 一阶梯度方法(First-order met ...

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

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

  6. 【机器学习】<刘建平Pinard老师博客学习记录>梯度下降(Gradient Descent)

    目录 一.梯度: 二.梯度上升和梯度下降: 三.梯度下降法算法详解: 1.梯度下降的直观解释: 2.梯度下降的相关概念: 3.梯度下降的详细算法: 3.1 梯度下降法的代数方式描述: 3.2 梯度下降 ...

  7. 机器学习中的梯度下降( Gradient Descent)算法

    前言 梯度下降(Gradient Descent,GD)算法主要分为三种:批量梯度下降(Batch Gradient Descent,BGD)算法.随机梯度下降(Stochastic Gradient ...

  8. 梯度下降(Gradient Descent)数学原理分析与实例

    梯度下降(Gradient Descent)数学原理分析与实例 本文循序渐进描述梯度下降算法,从导数的几何意义开始聊起,如果熟悉微积分可以跳过,主要内容如下: 一. 导数的几何意义 二. 偏导数 三. ...

  9. 梯度下降(Gradient descent)算法详解

    梯度下降(Gradient descent)算法详解 说起梯度下降算法,其实并不是很难,它的重要作用就是求函数的极值.梯度下降就是求一个函数的最小值,对应的梯度上升就是求函数最大值.为什么这样说呢?兔 ...

  10. 【转载】深度学习数学基础(二)~随机梯度下降(Stochastic Gradient Descent, SGD)

    Source: 作者:Evan 链接:https://www.zhihu.com/question/264189719/answer/291167114 来源:知乎 著作权归作者所有.商业转载请联系作 ...

最新文章

  1. Jmeter之HTTP Request Defaults
  2. springboot中端点监管 endpoint actuator
  3. DNA Consensus String
  4. 详解DNS正向解析实验(有图有实验)
  5. I - Interesting Permutation Gym - 102394I(排列组合)
  6. 用python自动发邮件_Python实现向QQ群成员自动发邮件的方法
  7. RhinoMock异常ExpectationViolationException以及解决
  8. 兔子问题or斐波那契数列
  9. 【PCIe 协议】听说你做 PCIe 很多年,还不知道 PCIe Hierarchy ID 是什么 ???
  10. CTF密码学——常见编解码及加解密总结
  11. python3 Excel转txt
  12. 重装系统找不到固态_安装win10系统时无法识别固态硬盘怎么解决
  13. 黎活明给程序员的忠告
  14. 单片机实验三 独立按键控制LED实验
  15. 运放失真罪魁祸首之压摆率和增益带宽积
  16. 关于iOS系统你知道多少???
  17. python爬虫:爬去汽车之家
  18. 2019DevFest | 从互联网前端到2B交付型前端-探索面向交付的实用前端技术栈
  19. web前端——浏览器兼容问题
  20. The Zen of Python / Python之禅

热门文章

  1. vscode代码格式管理插件prettier-Code formatter安装和设置
  2. 【MATLAB】机器学习:决策树算法实验
  3. java卸载干净_win10系统java如何卸载_win10怎么把java卸载干净
  4. 服务器性能基准测试,性能基准测试
  5. 【Leetcode】644. Maximum Average Subarray II
  6. 无线通信基础知识12:数字通信之信源编码
  7. 【揭密:刘强东9年密谋的商业布局—京东快物流背后的核心技术盘点】
  8. YTU OJ 3094: 善良的小乌龟
  9. Echarts动态生成图表,图表类型进行切换,长数据区域展示
  10. NProgress.js进度条