近端梯度下降法 (proximal gradient descent)
本文参考了知乎的文章 机器学习 | 近端梯度下降法 (proximal gradient descent), 写的非常棒,但感觉有些微的赘余, 因此以这篇博客,希望更精简地介绍 近端梯度下降法 这种略显陌生的 算法。
对于传统的可微的目标函数, 直接使用梯度下降法即可。 而对于不可微的情况下, 就是 近端梯度法 表现的时机了。 简而言之, 目标函数必可写成如下的形式:
f ( x ) = g ( x ) + h ( x ) f(x)=g(x)+h(x) f(x)=g(x)+h(x)
其中 g ( x ) g(x) g(x) 可微, 而 h ( x ) h(x) h(x) 不可微 。 这时候, 近端梯度法的迭代公式为:
x k = prox t h ( ⋅ ) ( x k − 1 − t ∇ g ( x k − 1 ) ) (1) \boldsymbol{x}^{k}=\operatorname{prox}_{t h(\cdot)}\left(\boldsymbol{x}^{k-1}-t \nabla g\left(\boldsymbol{x}^{k-1}\right)\right)\tag{1} xk=proxth(⋅)(xk−1−t∇g(xk−1))(1)
其中, prox t h ( ⋅ ) \operatorname{prox}_{t h(\cdot)} proxth(⋅) 为 近端投影算子, 由下式给出:
prox t h ( ⋅ ) ( x ) = arg min z 1 2 t ∥ x − z ∥ 2 2 + h ( x ) (2) \operatorname{prox}_{t h(\cdot)}(\boldsymbol{x})=\arg \min _{\boldsymbol{z}} \frac{1}{2 t}\|\boldsymbol{x}-\boldsymbol{z}\|_{2}^{2} + h(x)\tag{2} proxth(⋅)(x)=argzmin2t1∥x−z∥22+h(x)(2)
两式中, t t t 均代表步长。
好了,这就是近端梯度法的算法步骤了, 似乎非常简洁明了: 先根据 g ( x ) g(x) g(x)做一个梯度下降, 再根据 h ( x ) h(x) h(x)做一个近端投影。 那么问题来了, 为什么可以这样做, 意义又是什么?直接看下面的公式:
x k = prox t h ( ⋅ ) ( x k − 1 − t ∇ g ( x k − 1 ) ) = arg min z h ( z ) + 1 2 t ∥ z − ( x k − 1 − t ∇ g ( x k − 1 ) ) ∥ 2 2 = arg min z h ( z ) + t 2 ∥ ∇ g ( x k − 1 ) ∥ 2 2 + ∇ g ( x k − 1 ) ⊤ ( z − x k − 1 ) + 1 2 t ∥ z − x k − 1 ∥ 2 2 = arg min z h ( z ) + g ( x k − 1 ) + ∇ g ( x k − 1 ) ⊤ ( z − x k − 1 ) + 1 2 t ∥ z − x k − 1 ∥ 2 2 ≈ arg min z h ( z ) + g ( z ) \begin{aligned} \boldsymbol{x}^{k} &=\operatorname{prox}_{t h(\cdot)}\left(\boldsymbol{x}^{k-1}-t \nabla g\left(\boldsymbol{x}^{k-1}\right)\right) \\ &=\arg \min _{\boldsymbol{z}} h(\boldsymbol{z})+\frac{1}{2 t}\left\|\boldsymbol{z}-\left(\boldsymbol{x}^{k-1}-t \nabla g\left(\boldsymbol{x}^{k-1}\right)\right)\right\|_{2}^{2} \\ &=\arg \min _{\boldsymbol{z}} h(\boldsymbol{z})+\frac{t}{2}\left\|\nabla g\left(\boldsymbol{x}^{k-1}\right)\right\|_{2}^{2}+\nabla g\left(\boldsymbol{x}^{k-1}\right)^{\top}\left(\boldsymbol{z}-\boldsymbol{x}^{k-1}\right)+\frac{1}{2 t}\left\|\boldsymbol{z}-\boldsymbol{x}^{k-1}\right\|_{2}^{2} \\ &=\arg \min _{\boldsymbol{z}} h(\boldsymbol{z})+g\left(\boldsymbol{x}^{k-1}\right)+\nabla g\left(\boldsymbol{x}^{k-1}\right)^{\top}\left(\boldsymbol{z}-\boldsymbol{x}^{k-1}\right)+\frac{1}{2 t}\left\|\boldsymbol{z}-\boldsymbol{x}^{k-1}\right\|_{2}^{2} \\ & \approx \arg \min _{\boldsymbol{z}} h(\boldsymbol{z})+g(\boldsymbol{z}) \end{aligned} xk=proxth(⋅)(xk−1−t∇g(xk−1))=argzminh(z)+2t1∥∥z−(xk−1−t∇g(xk−1))∥∥22=argzminh(z)+2t∥∥∇g(xk−1)∥∥22+∇g(xk−1)⊤(z−xk−1)+2t1∥∥z−xk−1∥∥22=argzminh(z)+g(xk−1)+∇g(xk−1)⊤(z−xk−1)+2t1∥∥z−xk−1∥∥22≈argzminh(z)+g(z)
第三个等式来自于把 1 2 t ∥ z − ( x k − 1 − t ∇ g ( x k − 1 ) ) ∥ 2 2 \frac{1}{2 t}\left\|\boldsymbol{z}-\left(\boldsymbol{x}^{k-1}-t \nabla g\left(\boldsymbol{x}^{k-1}\right)\right)\right\|_{2}^{2} 2t1∥∥z−(xk−1−t∇g(xk−1))∥∥22 一项拆开, 而第四个等式 则是去掉了与 z z z 无关的项 t 2 ∥ ∇ g ( x k − 1 ) ∥ 2 2 \frac{t}{2}\left\|\nabla g\left(\boldsymbol{x}^{k-1}\right)\right\|_{2}^{2} 2t∥∥∇g(xk−1)∥∥22, 增加了 g ( x k − 1 ) g\left(\boldsymbol{x}^{k-1}\right) g(xk−1) 一项, 第五步的不等式则是来自于泰勒展开的 二阶展开。 最后综合看结论就是:
x k ≈ arg min z f ( z ) \boldsymbol{x}^{k} \approx \arg \min _{\boldsymbol{z}} f(z) xk≈argzminf(z)
因此, 近端梯度法实质上就是求取了目标函数的最小值。 而随着迭代的进行, 越逼近最优解, 泰勒展开也越精确。
近端梯度下降法 (proximal gradient descent)相关推荐
- python实现次梯度(subgradient)和近端梯度下降法 (proximal gradient descent)方法求解L1正则化
l1范数最小化 考虑函数,显然其在零点不可微,其对应的的次微分为: 注意,的取值为一个区间. 两个重要定理: 1)一个凸函数,当且仅当,为全局最小值,即 为最小值点 : 2)为函数(不一定是凸函数) ...
- 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 ...
- ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
引言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归.逻辑回归.Softmax回归.神经网络和SVM等等,主要学习资料来自网上的免费课程和一些经典书籍,免费课 ...
- [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
本文转自:https://blog.csdn.net/walilk/article/details/50978864 引言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记, ...
- 50行代码,带你理解梯度下降法(Gradient Descent Method)
梯度下降法是一种常见的优化算法,在机器学习中应用很广泛.本文从代码的角度,带你理解梯度下降法. 优化算法 优化指的是改变x以最小化或最大化某个函数 f(x) 的任务.通常以最小化 f(x) 指代大多数 ...
- 【优化】近端梯度下降(Proximal Gradient Descent)求解Lasso线性回归问题
文章目录 近端梯度下降的背景 常见线性回归问题 近端算子(Proximal Operator) 近端梯度下降迭代递推方法 以Lasso线性回归问题为例 参考资料 近端梯度下降的背景 近端梯度下降(Pr ...
- 机器学习数学知识补习——梯度下降(Gradient Descent)
导数 导数与微分: 图中的Δy.dy等符号的意义及关系如下: Δx:x的变化量: dx:x的变化量 Δ x Δx Δx趋于0时,则记作微元 d x dx dx: Δy: Δ y = f ( x 0 + ...
- UA MATH567 高维统计专题3 含L1-norm的凸优化2 Proximal Gradient Descent
UA MATH567 高维统计专题3 含L1-norm的凸优化2 Proximal Gradient Descent Proximal Gradient Descent的公式推导 Proximal O ...
最新文章
- 分布式系统的面试题11
- java闭包lambda,闭包在groovy vs闭包在java 8(lambda表达式)?
- spark的python开发安装方式_PyCharm搭建Spark开发环境的实现步骤
- tensorflow怎样调用gpu_tensorflow / tensorflow-gpu / tensorflow-cpu区别?
- 安全——《微服务设计》读书笔记
- 关于neo4j初入门(2)
- 08_提升方法Boosting1_统计学习方法
- Pony.ai签约落户广州南沙,计划年底前推出无人车队
- JVM篇2:[-加载器ClassLoader-]
- 使用 Swiftype 给 Hexo 搭建的博客添加站内搜索功能
- 2018百度之星初赛B轮 p1m2
- 自由落体运动c语言编程_欧姆龙NX PLC 轴运动功能块,ST和梯形图双语言
- java连接数据库实现基本的增删改查
- 基于FFmpeg的Qt视频播放器
- EPLAN中的edz文件的用法
- 【网络】Padavan 路由器固件开启教育网 IPv6
- C++第14周项目1 - 动物怎么叫
- 横向浅析Small,RePlugin两个插件化框架
- 计算机丢失msvcr100.dll解决办法,如何解决Msvcr100.dll丢失问题?两种方法可以解决...
- MT【305】丹德林双球