【优化】近端梯度下降(Proximal Gradient Descent)求解Lasso线性回归问题
文章目录
- 近端梯度下降的背景
- 常见线性回归问题
- 近端算子(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∣∣1Ridge回归模型的目标函数:
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) argwminf(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))=argwminQ(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))=argwminh(w)+2t1∣∣w−(wk−1−t∇g(wk−1))∣∣22=argwminh(w)+2t∣∣∇g(wk−1)∣∣22+<∇g(wk−1),w−wk−1>+2t1∣∣w−wk−1∣∣22=argwminh(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=argwminQ(w,wk−1)=argwminh(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) argwminf(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线性回归问题相关推荐
- python实现次梯度(subgradient)和近端梯度下降法 (proximal gradient descent)方法求解L1正则化
l1范数最小化 考虑函数,显然其在零点不可微,其对应的的次微分为: 注意,的取值为一个区间. 两个重要定理: 1)一个凸函数,当且仅当,为全局最小值,即 为最小值点 : 2)为函数(不一定是凸函数) ...
- 近端梯度下降法 (proximal gradient descent)
本文参考了知乎的文章 机器学习 | 近端梯度下降法 (proximal gradient descent), 写的非常棒,但感觉有些微的赘余, 因此以这篇博客,希望更精简地介绍 近端梯度下降法 这种略 ...
- LASSO近端梯度下降法Proximal Gradient Descent公式推导及代码
文章目录 LASSO by Proximal Gradient Descent Proximal Gradient Descent Framework近端梯度下降算法框架 Proximal Gradi ...
- 近端梯度法(Proximal Gradient Descent)
总目录 一. 凸优化基础(Convex Optimization basics) 凸优化基础(Convex Optimization basics) 二. 一阶梯度方法(First-order met ...
- 梯度下降(Gradient Descent)小结
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法.这里就对梯度下降法做一个完整的总结. 1. 梯度 在微 ...
- 【机器学习】<刘建平Pinard老师博客学习记录>梯度下降(Gradient Descent)
目录 一.梯度: 二.梯度上升和梯度下降: 三.梯度下降法算法详解: 1.梯度下降的直观解释: 2.梯度下降的相关概念: 3.梯度下降的详细算法: 3.1 梯度下降法的代数方式描述: 3.2 梯度下降 ...
- 机器学习中的梯度下降( Gradient Descent)算法
前言 梯度下降(Gradient Descent,GD)算法主要分为三种:批量梯度下降(Batch Gradient Descent,BGD)算法.随机梯度下降(Stochastic Gradient ...
- 梯度下降(Gradient Descent)数学原理分析与实例
梯度下降(Gradient Descent)数学原理分析与实例 本文循序渐进描述梯度下降算法,从导数的几何意义开始聊起,如果熟悉微积分可以跳过,主要内容如下: 一. 导数的几何意义 二. 偏导数 三. ...
- 梯度下降(Gradient descent)算法详解
梯度下降(Gradient descent)算法详解 说起梯度下降算法,其实并不是很难,它的重要作用就是求函数的极值.梯度下降就是求一个函数的最小值,对应的梯度上升就是求函数最大值.为什么这样说呢?兔 ...
- 【转载】深度学习数学基础(二)~随机梯度下降(Stochastic Gradient Descent, SGD)
Source: 作者:Evan 链接:https://www.zhihu.com/question/264189719/answer/291167114 来源:知乎 著作权归作者所有.商业转载请联系作 ...
最新文章
- Jmeter之HTTP Request Defaults
- springboot中端点监管 endpoint actuator
- DNA Consensus String
- 详解DNS正向解析实验(有图有实验)
- I - Interesting Permutation Gym - 102394I(排列组合)
- 用python自动发邮件_Python实现向QQ群成员自动发邮件的方法
- RhinoMock异常ExpectationViolationException以及解决
- 兔子问题or斐波那契数列
- 【PCIe 协议】听说你做 PCIe 很多年,还不知道 PCIe Hierarchy ID 是什么 ???
- CTF密码学——常见编解码及加解密总结
- python3 Excel转txt
- 重装系统找不到固态_安装win10系统时无法识别固态硬盘怎么解决
- 黎活明给程序员的忠告
- 单片机实验三 独立按键控制LED实验
- 运放失真罪魁祸首之压摆率和增益带宽积
- 关于iOS系统你知道多少???
- python爬虫:爬去汽车之家
- 2019DevFest | 从互联网前端到2B交付型前端-探索面向交付的实用前端技术栈
- web前端——浏览器兼容问题
- The Zen of Python / Python之禅
热门文章
- vscode代码格式管理插件prettier-Code formatter安装和设置
- 【MATLAB】机器学习:决策树算法实验
- java卸载干净_win10系统java如何卸载_win10怎么把java卸载干净
- 服务器性能基准测试,性能基准测试
- 【Leetcode】644. Maximum Average Subarray II
- 无线通信基础知识12:数字通信之信源编码
- 【揭密:刘强东9年密谋的商业布局—京东快物流背后的核心技术盘点】
- YTU OJ 3094: 善良的小乌龟
- Echarts动态生成图表,图表类型进行切换,长数据区域展示
- NProgress.js进度条