近端梯度法(proximal gradient)
近端梯度法是一种求解不可微凸函数最优化问题的经典方法。其核心思想在于将不可微凸函数的最优化问题转换为易求解的proximal映射函数,从而实现近似求解。
一、proximal映射
proximal映射是近端梯度法的核心方法。假设约束函数f(x)f(\boldsymbol x)f(x)的定义域为U\boldsymbol UU,定义自变量x\boldsymbol xx的proximal映射为:proxf(x)=argminu∈U(f(u)+12∣∣u−x∣∣22),∀x∈Uprox_f(\boldsymbol x)=\arg\min_{\boldsymbol {u\in U}}(f(\boldsymbol u)+\frac{1}{2}||\boldsymbol {u}-\boldsymbol x||_2^2), \quad \forall \boldsymbol x\in \boldsymbol Uproxf(x)=argu∈Umin(f(u)+21∣∣u−x∣∣22),∀x∈U通俗的讲,变量x\boldsymbol xx的proximal映射即为同定义域内,满足与之“欧式距离平方+约束函数fff值”最小的变量值u\boldsymbol uu。
下面给出一些约束函数f(x)f(\boldsymbol x)f(x)下的proximal映射案例:
1)常数函数
令f(x)=cf(\boldsymbol x)=cf(x)=c,则有:
proxf(x)=argminu∈U(c+12∣∣u−x∣∣22)prox_f(\boldsymbol x)=\arg\min_{\boldsymbol {u\in U}}(c+\frac{1}{2}||\boldsymbol {u}-\boldsymbol x||_2^2)proxf(x)=argu∈Umin(c+21∣∣u−x∣∣22)显然,此时proxf(x)=xprox_f(\boldsymbol x)=\boldsymbol xproxf(x)=x
2)仿射函数
令f(x)=aTx+bf(\boldsymbol x)=\boldsymbol a^T\boldsymbol x+\boldsymbol bf(x)=aTx+b,则有:proxf(x)=argminu∈U(aTu+b+12∣∣u−x∣∣22)prox_f(\boldsymbol x)=\arg\min_{\boldsymbol {u\in U}}(\boldsymbol a^T\boldsymbol u+\boldsymbol b +\frac{1}{2}||\boldsymbol {u}-\boldsymbol x||_2^2)proxf(x)=argu∈Umin(aTu+b+21∣∣u−x∣∣22)对u\boldsymbol {u}u求导,并另其为0,可得:proxf(x)=x−aprox_f(\boldsymbol x)=\boldsymbol x-\boldsymbol aproxf(x)=x−a
3)二次函数
令f(x)=12xTAx+bTx+cf(\boldsymbol x)=\frac{1}{2}\boldsymbol {x^TAx}+\boldsymbol b^T\boldsymbol x+ \boldsymbol cf(x)=21xTAx+bTx+c,则有:proxf(x)=argminu∈U(12uTAu+bTu+c+12∣∣u−x∣∣22)prox_f(\boldsymbol x)=\arg\min_{\boldsymbol {u\in U}}(\frac{1}{2}\boldsymbol {u^TAu}+\boldsymbol b^T\boldsymbol u+ \boldsymbol c \boldsymbol +\frac{1}{2}||\boldsymbol {u}-\boldsymbol x||_2^2)proxf(x)=argu∈Umin(21uTAu+bTu+c+21∣∣u−x∣∣22)对u\boldsymbol {u}u求导,并另其为0,可得:proxf(x)=(A+I)−1(x−b)prox_f(\boldsymbol x)=(\boldsymbol A+\boldsymbol I)^{-1}(\boldsymbol x-\boldsymbol b)proxf(x)=(A+I)−1(x−b)
4)L1范数
令f(x)=t∣∣x∣∣1f(\boldsymbol x)=t||\boldsymbol x||_1f(x)=t∣∣x∣∣1,则有:proxf(x)=argminu∈U(t∣∣u∣∣1+12∣∣u−x∣∣22)prox_f(\boldsymbol x)=\arg\min_{\boldsymbol {u\in U}}(t ||\boldsymbol u||_1 +\frac{1}{2}||\boldsymbol {u}-\boldsymbol x||_2^2)proxf(x)=argu∈Umin(t∣∣u∣∣1+21∣∣u−x∣∣22)注意到L1范数并非连续可导,这里需要用到次梯度的性质,将上述问题转化为:0∈∂(t∣∣u∣∣1+12∣∣u−x∣∣22)⇒x−u∈t∂∣∣u∣∣1\begin{aligned}&0\in \partial(t ||\boldsymbol u||_1 +\frac{1}{2}||\boldsymbol {u}-\boldsymbol x||_2^2)\\ \Rightarrow &\boldsymbol {x}-\boldsymbol u\in t\partial ||\boldsymbol u||_1\end{aligned}⇒0∈∂(t∣∣u∣∣1+21∣∣u−x∣∣22)x−u∈t∂∣∣u∣∣1对于上式而言,u\boldsymbol uu的各成分uiu_iui并无耦合关系,所以可单独考虑每个uiu_iui。根据uiu_iui的取值符号进行分段考虑:
(a)若ui>0u_i>0ui>0
此时∂∣∣ui∣∣1=1\partial ||u_i||_1=1∂∣∣ui∣∣1=1,因此:proxf(ui)=xi−tprox_f(u_i)=x_i-tproxf(ui)=xi−t同时注意到xi−t=ui>0x_i-t=u_i>0xi−t=ui>0
(b)若ui<0u_i<0ui<0
此时∂∣∣ui∣∣1=−1\partial ||u_i||_1=-1∂∣∣ui∣∣1=−1,因此:proxf(ui)=xi+tprox_f(u_i)=x_i+tproxf(ui)=xi+t同时注意到xi+t=ui<0x_i+t=u_i<0xi+t=ui<0
(c)若ui=0u_i=0ui=0
此时∂∣ui∣=[−1,1]\partial |u_i|=[-1,1]∂∣ui∣=[−1,1],因此xi−ui∈[−t,t]x_i-u_i\in[-t,t]xi−ui∈[−t,t],即:∣xi−ui∣≤t|x_i-u_i|\le t∣xi−ui∣≤t综上,上述由proximal映射定义的优化问题的解为:ui=St(xi)u_i=S_t(x_i)ui=St(xi),其中St(⋅)S_t (\cdot)St(⋅)被称为软阈值函数:St(xi)={xi−t,ifxi>t0,if∣xi−ui∣≤txi+t,,ifxi<−tS_t(x_i)=\begin{cases}x_i-t\quad,if \quad x_i>t\\0\quad,if \quad |x_i-u_i|\le t\\x_i+t,\quad,if \quad x_i<-t\end{cases}St(xi)=⎩⎪⎨⎪⎧xi−t,ifxi>t0,if∣xi−ui∣≤txi+t,,ifxi<−t
二、近端梯度法
定义如下的无约束问题:minf(x)=g(x)+h(x)\min f(\boldsymbol x)=g(\boldsymbol x)+h(\boldsymbol x)minf(x)=g(x)+h(x)其中g(x)g(x)g(x)为凸函数,且可微分;h(x)h(x)h(x)为凸函数(分解时应尽量简单),但不可微。
对于g(x)g(\boldsymbol x)g(x),在xk\boldsymbol x_kxk处进行二阶泰勒展开的近似,可知存在值ttt,使得:g(x)=g(xk)+∇gT(xk)(x−xk)+12t(x−xk)T(x−xk)g(\boldsymbol x)=g(\boldsymbol x_{k})+\nabla g^T(\boldsymbol x_{k})(\boldsymbol x-\boldsymbol x_{k})+\frac{1}{2t}(\boldsymbol x-\boldsymbol x_{k})^T(\boldsymbol x-\boldsymbol x_{k})g(x)=g(xk)+∇gT(xk)(x−xk)+2t1(x−xk)T(x−xk)因此,最优化问题可写为argminxg(xk)+∇gT(xk)(x−xk)+12t(x−xk)T(x−xk)+h(x)=argminx12t∣∣x−(xk−t∇g(xk))∣∣22+h(x)\begin{aligned}&\arg\min_x g(\boldsymbol x_{k})+\nabla g^T(\boldsymbol x_{k})(\boldsymbol x-\boldsymbol x_{k})+\frac{1}{2t}(\boldsymbol x-\boldsymbol x_{k})^T(\boldsymbol x-\boldsymbol x_{k})+h(\boldsymbol x)\\=&\arg\min_x\frac{1}{2t}||\boldsymbol x-(\boldsymbol x_k-t\nabla g(\boldsymbol x_k))||_2^2+h(\boldsymbol x)\end{aligned}=argxming(xk)+∇gT(xk)(x−xk)+2t1(x−xk)T(x−xk)+h(x)argxmin2t1∣∣x−(xk−t∇g(xk))∣∣22+h(x)仔细观察上式,如果将xk−t∇g(xk)\boldsymbol x_k-t\nabla g(\boldsymbol x_k)xk−t∇g(xk)视为一个整体z\boldsymbol zz,同时忽略常系数,其本质上就是求其的proximal映射:proxh(z)=12t∣∣x−z∣∣22+h(x)prox_h(\boldsymbol z)=\frac{1}{2t}||\boldsymbol x-\boldsymbol z||_2^2+h(\boldsymbol x)proxh(z)=2t1∣∣x−z∣∣22+h(x)由此,便得到了近段梯度法的迭代公式:xk+1=proxh,t(xk−t∇g(xk))\boldsymbol x_{k+1}=\mathop{prox}\limits_{h,t}(\boldsymbol x_k-t\nabla g(\boldsymbol x_k))xk+1=h,tprox(xk−t∇g(xk))
三、近端梯度法在Lasso回归的应用
近段梯度法常被用于解决Lasso回归的优化问题:argminW12∣∣(XW−y)∣∣22+λ∣∣W∣∣1\arg\min_{\boldsymbol W}\frac{1}{2}||(\boldsymbol{XW}-{\boldsymbol y})||_2^2+\lambda||\boldsymbol W||_1argWmin21∣∣(XW−y)∣∣22+λ∣∣W∣∣1其中损失函数第一项为可微凸函数,第二项为L1正则项,直接套用上文近段梯度法的迭代公式以及L1范数下的近段梯度,可得:wik+1=proxh,wi(wik−X⋅,iT(XWk−y)),h(w)=∣w∣w_i^{k+1}=\mathop{prox}\limits_{h,w_i}(w_i^k-\boldsymbol X^T_{\cdot,i}(\boldsymbol {XW^k}-\boldsymbol y)),h(w)=|w|wik+1=h,wiprox(wik−X⋅,iT(XWk−y)),h(w)=∣w∣且若∣X⋅,iT(XWk−y)∣≤λ|\boldsymbol X^T_{\cdot,i}(\boldsymbol {XW^k}-\boldsymbol y)|\le\lambda∣X⋅,iT(XWk−y)∣≤λ此时有wi=0w_i=0wi=0,这表明了L1正则化会导致系数的稀疏化。
近端梯度法(proximal gradient)相关推荐
- 近端梯度法(Proximal Gradient Descent)
总目录 一. 凸优化基础(Convex Optimization basics) 凸优化基础(Convex Optimization basics) 二. 一阶梯度方法(First-order met ...
- 近端梯度下降法 (proximal gradient descent)
本文参考了知乎的文章 机器学习 | 近端梯度下降法 (proximal gradient descent), 写的非常棒,但感觉有些微的赘余, 因此以这篇博客,希望更精简地介绍 近端梯度下降法 这种略 ...
- Proximal Gradient Method近端梯度算法
本文参考文献附在最后.是对参考文献的理解. 1:此算法解决凸优化问题模型如下: minF(x)=g(x)+h(x) min F(x)=g(x)+h(x)其中 g(x) g(x)凸的,可微的. h(x) ...
- 【优化】近端梯度下降(Proximal Gradient Descent)求解Lasso线性回归问题
文章目录 近端梯度下降的背景 常见线性回归问题 近端算子(Proximal Operator) 近端梯度下降迭代递推方法 以Lasso线性回归问题为例 参考资料 近端梯度下降的背景 近端梯度下降(Pr ...
- LASSO近端梯度下降法Proximal Gradient Descent公式推导及代码
文章目录 LASSO by Proximal Gradient Descent Proximal Gradient Descent Framework近端梯度下降算法框架 Proximal Gradi ...
- python实现次梯度(subgradient)和近端梯度下降法 (proximal gradient descent)方法求解L1正则化
l1范数最小化 考虑函数,显然其在零点不可微,其对应的的次微分为: 注意,的取值为一个区间. 两个重要定理: 1)一个凸函数,当且仅当,为全局最小值,即 为最小值点 : 2)为函数(不一定是凸函数) ...
- APG(Accelerate Proximal Gradient)加速近端梯度算法 和 NAG(Nesterov accelerated gradient)优化器原理 (二)
文章目录 前言 NAG优化器 APG 与 NAG的结合 Pytorch 代码实现 总结 附录 公式(11)推导 引用 前言 近期在阅读Data-Driven Sparse Structure Sele ...
- APG(Accelerate Proximal Gradient)加速近端梯度算法 和 NAG(Nesterov accelerated gradient)优化器原理 (一)
文章目录 前言 APG(Accelerate Proximal Gradient)加速近端梯度算法[^1] PGD (Proximal Gradient Descent)近端梯度下降法推导[^2] E ...
- Proximal Algorithms--Accelerated proximal gradient method
4.3 Accelerated proximal gradient method: 加速近端梯度方法: 基本的近端梯度方法的所谓的"加速"版本,就是在算法中包含了一个外推(extr ...
- UA MATH567 高维统计专题3 含L1-norm的凸优化4 Nesterov方法与Accelerate Proximal Gradient
UA MATH567 高维统计专题3 含L1-norm的凸优化4 一阶方法的加速 Nesterov方法 Accelerate Proximal Gradient (APG) 梯度下降与Proximal ...
最新文章
- Dedecms5.7搜索结果页空白无内容的解决方法
- 模24的8421BCD码计数器(Verilog HDL语言描述)(仿真与综合)
- DNS实现域名负载均衡
- Hadoop入门(Hadoop2.7.2源码编译与伪分布安装)
- vscode 头文件包含问题_使用clangd替代c/c++配置vscode c++项目
- Leedcode9-linked-list-cycle-i
- faster-rcnn tensorflow windows python 训练自己数据
- 9、两个栈实现队列(Python)
- 【Docker】在CentOS上安装
- 【Python案例】Python实现垃圾分类APP(附带微信小程序)
- 四川金弘同创:拼多多产品要怎么上新
- Linux命令整理(二)
- 网文快搜——职业生涯
- VMware: vmw_ioctl_command error 无效的参数
- JavaScript-2:初体验JS
- Win10配置pytorch深度学习环境
- STM32CubeMx + LWIP(实现UDP组播/MQTT/热插拔)系列 四 ----- MQTT的连接与使用
- 什么叫侧面指纹识别_新科技?侧面指纹解锁有什么不同?
- ubuntu升级后,停留在tty1界面,进不去桌面
- 计算机编程oop思想与老子道德经之无有万物