近似点梯度法

最优化笔记——Proximal Gradient Method

最优化笔记,主要参考资料为《最优化:建模、算法与理论》


文章目录

  • 最优化笔记——Proximal Gradient Method
  • 一、邻近算子
    • (1)定义
  • 二、近似点梯度法
    • (1)迭代格式
    • (2)迭代格式的理解
    • (3)收敛性分析
  • 三、FISTA算法
    • (1)迭代格式
    • (2)收敛性分析
  • 参考资料


一、邻近算子

(1)定义

定义 (邻近算子)

对于一个凸函数 h h h, 定义它的邻近算子(proximal operator)为
prox ⁡ h ( x ) = arg ⁡ min ⁡ u ∈ d o m h { h ( u ) + 1 2 ∥ u − x ∥ 2 } . \operatorname{prox}_h(x)=\arg\min_{u\in\mathbf{dom}h}\left\{h(u)+\frac12\|u-x\|^2\right\}. proxh(x)=argudomhmin{h(u)+21ux2}.

可以看到,邻近算子的目的是求解一个距 x x x 不算太远的点,并使函数值 h ( x ) h(x) h(x) 也相对较小.

近似点梯度法_第1张图片

上图图描述了proximal算子的作用:

  • 细黑线是凸函数 h ( x ) h(x) h(x)的等高线;较粗的黑线表示定义域的边界.
  • 设蓝点为 x x x,计算 μ = prox ⁡ h ( x ) \mu=\operatorname{prox}_h(x) μ=proxh(x),红点则是 μ \mu μ.
  • 定义域内的三个点其对应的 μ \mu μ停留在定义域内,并向 h ( x ) h(x) h(x)最小值移动.
  • 而另外两个定义域外的点,其对应的 μ \mu μ移动到定义域的边界,并尽可能使 h ( u ) h(u) h(u)很小.

一个很自然的问题是,上面给出的邻近算子的定义是不是有意义的,即定义中的优化问题的解是不是存在唯一的. 若答案是肯定的,我们就可使用邻近算子去构建迭代格式. 下面的定理将给出定义中优化问题解的存在唯一性.

定理 (邻近算子是良定义的)

如果 h h h 是适当的闭凸函数,则对任意的 x ∈ R n , p r o x h ( x ) x\in\mathbb{R}^n,\quad\mathrm{prox}_h(x) xRn,proxh(x) 的值存在且唯一.

二、近似点梯度法

(1)迭代格式

考虑如下复合优化问题:

min ⁡ ψ ( x ) = f ( x ) + h ( x ) , \min\quad\psi(x)=f(x)+h(x), minψ(x)=f(x)+h(x),

其中函数 f f f可微函数,其定义域 d o m f = R n \mathbf{dom}f=\mathbb{R}^n domf=Rn, 函数 h h h凸函数,可以是非光滑的,并且一般计算此项的邻近算子并不复杂. 比如 LASSO 问题,两项分别为 f ( x ) = 1 2 ∥ A x − b ∥ 2 , h ( x ) = μ ∥ x ∥ 1 . f(x)=\frac12\|Ax-b\|^2,\quad h(x)=\mu\|x\|_1. f(x)=21Axb2,h(x)=μx1. 近似点梯度法的思想非常简单:注意到 ψ ( x ) \psi(x) ψ(x) 有两部分,对于光滑部分 f f f 做梯度下降,对于非光滑部分 h h h 使用邻近算子,则近似点梯度法的迭代公式为

x k + 1 = p r o x t k h ( x k − t k ∇ f ( x k ) ) , ( 1 ) x^{k+1}=\mathrm{prox}_{t_kh}(x^k-t_k\nabla f(x^k)), \quad (1) xk+1=proxtkh(xktkf(xk)),(1)

其中 t k > 0 t_k>0 tk>0 为每次迭代的步长,它可以是一个常数或者由线搜索得出. 近似点梯度法跟众多算法都有很强的联系,在一些特定条件下,近似点梯度法还可以转化为其他算法:当 h ( x ) = 0 h(x)=0 h(x)=0 时,迭代公式变为梯度下降法

x k + 1 = x k − t k ∇ f ( x k ) ; x^{k+1}=x^k-t_k\nabla f(x^k); xk+1=xktkf(xk);

h ( x ) = I C ( x ) h(x)=I_C(x) h(x)=IC(x) 时,迭代公式变为投影梯度法

x k + 1 = P C ( x k − t k ∇ f ( x k ) ) . x^{k+1}=\mathcal{P}_C(x^k-t_k\nabla f(x^k)). xk+1=PC(xktkf(xk)).

(2)迭代格式的理解

f ( x ) f(x) f(x) x k x^k xk处做泰勒展线性展开并加上二次项,非光滑部分不做改变:
min ⁡ x f ( x ) + h ( x )    ⟺    min ⁡ x f ( x k ) + ∇ f ( x k ) T ( x − x k ) + 1 2 t k ∥ x − x k ∥ 2 + h ( x ) ( 2 )    ⟺    min ⁡ x 1 2 t k ∥ x − x k + t k ∇ f ( x k ) ∥ 2 + h ( x ) ( 3 )    ⟺    min ⁡ x 1 2 t k ∥ x − ( x k − t k ∇ f ( x k ) ) ∥ 2 + h ( x ) ( 4 ) \begin{aligned} &\min_x f(x)+h(x) \\ \iff &\min_x f(x^k)+\nabla f(x^k)^\mathrm{T}(x-x^k)+\frac1{2t_k}\|x-x^k\|^2+h(x) \quad(2) \\ \iff &\min_x \frac1{2t_k}\|x-x^k+t_k\nabla f(x^k)\|^2+h(x)\quad (3) \\ \iff &\min_x \frac1{2t_k}\|x-(x^k-t_k\nabla f(x^k))\|^2+h(x) \quad(4) \end{aligned} xminf(x)+h(x)xminf(xk)+f(xk)T(xxk)+2tk1xxk2+h(x)(2)xmin2tk1xxk+tkf(xk)2+h(x)(3)xmin2tk1x(xktkf(xk))2+h(x)(4)
可以看到(4)式即为邻近算子的定义
x k + 1 = prox ⁡ t k h ( x k − t k ∇ f ( x k ) ) x^{k+1}=\operatorname{prox}_{t_{k}h}(x^k-t_k\nabla f(x^k)) xk+1=proxtkh(xktkf(xk))
相当于是对 f ( x ) f(x) f(x)先做一步梯度下降 x ^ k + 1 = x k − t k ∇ f ( x k ) \hat{x}^{k+1}=x^k-t_k\nabla f(x^k) x^k+1=xktkf(xk),然后再寻找一个点 x k + 1 x^{k+1} xk+1,使得 x k + 1 x^{k+1} xk+1 x ^ k + 1 \hat{x}^{k+1} x^k+1 不算太远,并使函数值 h ( x ^ k + 1 ) h(\hat{x}^{k+1}) h(x^k+1) 也相对较小.

(3)收敛性分析

近似点梯度法_第2张图片

近似点梯度法_第3张图片

也就是说近似点梯度法收敛速度是 O ( 1 k ) O(\frac1k) O(k1)的,比次梯度算法快!

三、FISTA算法

(1)迭代格式

注意每个Section公式重新从(1)开始编号

仍然考虑复合优化问题
min ⁡ ψ ( x ) = f ( x ) + h ( x ) . ( 1 ) \min\quad\psi(x)=f(x)+h(x)\quad. (1) minψ(x)=f(x)+h(x).(1)
上面介绍的近似点梯度法收敛速度是 O ( 1 k ) O(\frac1k) O(k1)的,下面介绍一个在此基础上改进的算法——FISTA,收敛速度可以达到 O ( 1 k 2 ) O(\frac1k^2) O(k12)!

近似点梯度法_第4张图片

近似点梯度法_第5张图片

近似点梯度法_第6张图片

(2)收敛性分析

近似点梯度法_第7张图片

参考资料

  1. 刘浩洋、户将、李勇锋、文再文. 最优化:建模、算法与理论. 高教出版社, 2022.
  2. http://faculty.bicmr.pku.edu.cn/~wenzw/

你可能感兴趣的:(凸优化,算法,最优化)