近端梯度法是一种求解不可微凸函数最优化问题的经典方法。其核心思想在于将不可微凸函数的最优化问题转换为易求解的proximal映射函数,从而实现近似求解。

一、proximal映射

proximal映射是近端梯度法的核心方法。假设约束函数f(x)f(\boldsymbol x)f(x)的定义域为U\boldsymbol UU,定义自变量x\boldsymbol xx的proximal映射为:proxf(x)=arg⁡min⁡u∈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)=arg⁡min⁡u∈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)=arg⁡min⁡u∈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)=21​xTAx+bTx+c,则有:proxf(x)=arg⁡min⁡u∈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​(21​uTAu+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)=arg⁡min⁡u∈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​

二、近端梯度法

定义如下的无约束问题:min⁡f(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​)因此,最优化问题可写为arg⁡min⁡xg(xk)+∇gT(xk)(x−xk)+12t(x−xk)T(x−xk)+h(x)=arg⁡min⁡x12t∣∣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}=​argxmin​g(xk​)+∇gT(xk​)(x−xk​)+2t1​(x−xk​)T(x−xk​)+h(x)argxmin​2t1​∣∣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回归的优化问题:arg⁡min⁡W12∣∣(XW−y)∣∣22+λ∣∣W∣∣1\arg\min_{\boldsymbol W}\frac{1}{2}||(\boldsymbol{XW}-{\boldsymbol y})||_2^2+\lambda||\boldsymbol W||_1argWmin​21​∣∣(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,wi​prox​(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)相关推荐

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

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

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

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

  3. Proximal Gradient Method近端梯度算法

    本文参考文献附在最后.是对参考文献的理解. 1:此算法解决凸优化问题模型如下: minF(x)=g(x)+h(x) min F(x)=g(x)+h(x)其中 g(x) g(x)凸的,可微的. h(x) ...

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

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

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

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

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

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

  7. APG(Accelerate Proximal Gradient)加速近端梯度算法 和 NAG(Nesterov accelerated gradient)优化器原理 (二)

    文章目录 前言 NAG优化器 APG 与 NAG的结合 Pytorch 代码实现 总结 附录 公式(11)推导 引用 前言 近期在阅读Data-Driven Sparse Structure Sele ...

  8. APG(Accelerate Proximal Gradient)加速近端梯度算法 和 NAG(Nesterov accelerated gradient)优化器原理 (一)

    文章目录 前言 APG(Accelerate Proximal Gradient)加速近端梯度算法[^1] PGD (Proximal Gradient Descent)近端梯度下降法推导[^2] E ...

  9. Proximal Algorithms--Accelerated proximal gradient method

    4.3 Accelerated proximal gradient method: 加速近端梯度方法: 基本的近端梯度方法的所谓的"加速"版本,就是在算法中包含了一个外推(extr ...

  10. UA MATH567 高维统计专题3 含L1-norm的凸优化4 Nesterov方法与Accelerate Proximal Gradient

    UA MATH567 高维统计专题3 含L1-norm的凸优化4 一阶方法的加速 Nesterov方法 Accelerate Proximal Gradient (APG) 梯度下降与Proximal ...

最新文章

  1. Dedecms5.7搜索结果页空白无内容的解决方法
  2. 模24的8421BCD码计数器(Verilog HDL语言描述)(仿真与综合)
  3. DNS实现域名负载均衡
  4. Hadoop入门(Hadoop2.7.2源码编译与伪分布安装)
  5. vscode 头文件包含问题_使用clangd替代c/c++配置vscode c++项目
  6. Leedcode9-linked-list-cycle-i
  7. faster-rcnn tensorflow windows python 训练自己数据
  8. 9、两个栈实现队列(Python)
  9. 【Docker】在CentOS上安装
  10. 【Python案例】Python实现垃圾分类APP(附带微信小程序)
  11. 四川金弘同创:拼多多产品要怎么上新
  12. Linux命令整理(二)
  13. 网文快搜——职业生涯
  14. VMware: vmw_ioctl_command error 无效的参数
  15. JavaScript-2:初体验JS
  16. Win10配置pytorch深度学习环境
  17. STM32CubeMx + LWIP(实现UDP组播/MQTT/热插拔)系列 四 ----- MQTT的连接与使用
  18. 什么叫侧面指纹识别_新科技?侧面指纹解锁有什么不同?
  19. ubuntu升级后,停留在tty1界面,进不去桌面
  20. 计算机编程oop思想与老子道德经之无有万物

热门文章

  1. hdu 4399 树形dp
  2. 使用宏定义求圆的周长,面积
  3. 悉尼大学INFO1110/COMP9001课业解析
  4. CTF 实验吧 变异凯撒 writeup
  5. python微信机器人之小i
  6. iphone iOS 更换手机铃声 免itunes
  7. TesterHome android app 编写历程(三)
  8. 餐馆点菜系统python程序_Python写一个自动点餐程序
  9. 【JavaEE】电商秒杀项目·第2章·基础项目搭建
  10. Leetcode力扣 MySQL数据库 1132 报告的记录II