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

本文概述了近端梯度下降法,一种处理不可微目标函数的优化算法。它结合梯度下降和近端投影,通过求解目标函数近似最小值。核心公式和泰勒展开解释了其工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文参考了知乎的文章 机器学习 | 近端梯度下降法 (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()(xk1tg(xk1))(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)=argzmin2t1xz22+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()(xk1tg(xk1))=argzminh(z)+2t1z(xk1tg(xk1))22=argzminh(z)+2tg(xk1)22+g(xk1)(zxk1)+2t1zxk122=argzminh(z)+g(xk1)+g(xk1)(zxk1)+2t1zxk122argzminh(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} 2t1z(xk1tg(xk1))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} 2tg(xk1)22, 增加了 g ( x k − 1 ) g\left(\boldsymbol{x}^{k-1}\right) g(xk1) 一项, 第五步的不等式则是来自于泰勒展开的 二阶展开。 最后综合看结论就是:

x k ≈ arg ⁡ min ⁡ z f ( z ) \boldsymbol{x}^{k} \approx \arg \min _{\boldsymbol{z}} f(z) xkargzminf(z)

因此, 近端梯度法实质上就是求取了目标函数的最小值。 而随着迭代的进行, 越逼近最优解, 泰勒展开也越精确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B417科研笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值