凸优化学习(2)——梯度类方法求解(gradient descent)

🍅 写在前面

👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。

🔎个人主页:主页链接(欢迎各位大佬光临指导)

⭐️近期专栏:机器学习与深度学习

LeetCode算法实例

张量分解

凸优化系列知识,详见下方链接:

凸优化学习(1)------什么是凸优化、凸集、凸函数
凸优化学习(2)------梯度类方法求解(gradient descent)

本系列文章主要参考:卡耐基梅隆 凸优化系列课程

目录

  • 综述
  • [gradient descent](#gradient descent)
    • [backtracking line search](#backtracking line search)
    • [exact line search](#exact line search)
  • [subgradient descent](#subgradient descent)
  • [proximal gradient descent](#proximal gradient descent)

综述

1、梯度类方法是无约束方法中最常用的方法之一, 其依据是梯度的负方向就是函数值下降最快的方向。但是,常用的梯度下降(gradient descent)方法中,必须要求目标函数连续且可导,对于连续不可导的问题,梯度下降方法无能为力。
2、这里还将介绍另外两种针对目标函数连续不可导可用的优化方法,分别是subgradient descentproximal gradient descent

gradient descent

一般梯度下降的基本迭代公式为:

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

式子中的k表示的是第k次迭代, t k {t_k} tk表示的是学习率(步长), ∇ f ( x ) \nabla f({x}) ∇f(x)表示的是点在x处的梯度。

这里针对学习率是否改变以及如何改变又有不同的方法。最简单的当然是固定学习率为一个恒定值,但是学习率如果过大或者过小,可能会导致结果难以收敛或者收敛速度很慢。因此,产生了可变学习率的方法。可变学习率的思想是:每次迭代中根据一定规则更新现有的学习率。下面介绍两种可变学习率的方法。

backtracking line search 方法需要先固定两个参数 α β \alpha \beta αβ,并要求 0 < α < 1 / 2 0<\alpha<1/2 0<α<1/2, 0 < β < 1 0<\beta<1 0<β<1。每次迭代时,计算下列式子判断是否需要更新学习率:

f ( x − t ∇ f ( x ) ) > f ( x ) − α t ∥ ∇ f ( x ) ∥ 2 2 f(x - t\nabla f(x)) > f(x) - \alpha t{\left\| {\nabla f(x)} \right\|_2}^2 f(x−t∇f(x))>f(x)−αt∥∇f(x)∥22

如果式子成立,则改变学习率为 t = β t t = \beta t t=βt。这种方法的思想是当步长过大的时候 (即跨过了最优点),减小步长,否则保持步长不变

exact line search方法则是先计算出梯度 ∇ f ( x ( k − 1 ) ) \nabla f({x^{(k - 1)}}) ∇f(x(k−1)),然后带入下列函数中,此时函数中只有 t k {t_k} tk学习率未知,因此有对 t k {t_k} tk求导并另导数等于零,求得的 t k {t_k} tk则为当前的最优学习率,因为这个学习率能够令当前迭代下降的距离最大。该方法也被称为最速梯度下降法。

f ( x ( k − 1 ) − t k ∇ f ( x ( k − 1 ) ) ) f({x^{(k - 1)}} - {t_k}\nabla f({x^{(k - 1)}})) f(x(k−1)−tk∇f(x(k−1)))

subgradient descent

subgradient descent用于解决某些函数存在连续不可导,梯度不存在的问题。

次梯度

一个凸函数f在x的次梯度g定义为:

f ( y ) ≥ f ( x ) + g T ( y − x ) f(y) \ge f(x) + {g^T}(y - x) f(y)≥f(x)+gT(y−x)

次梯度的一些特性:

1、总是存在于定义域dom(f)的内部;

2、如果f在x上是完全可微的,那么其存在唯一的次梯度 g = ∇ f ( x ) g = ∇ f ( x ) g=∇f(x);

3、该次梯度的定义也可以推广到非凸函数中,但非凸函数的次梯度g gg可能不存在。

举例:
f ( x ) = ∣ x ∣ f(x) = \left| x \right| f(x)=∣x∣,在x=0处不可导,图像如下。

其次梯度为:

proximal gradient descent

proximal 通过对原问题的拆分并利用 proximal mapping,能够解决 subgradient descent 无法解决的问题。一般来说,该方法将目标函数转化为一下形式:
f ( x ) = g ( x ) + h ( x ) f(x) = g(x) + h(x) f(x)=g(x)+h(x)

其中,g(x)是凸且可微的,h(x)是凸函数。则proximal gradient descent方法的迭代过程如下:
x ( k ) = x ( k − 1 ) − t k G t k ( x ( k − 1 ) ) G t ( x ) = x − p r o x t h ( x − t ∇ g ( x ) ) t p r o x t h ( x ) {x^{(k)}} = {x^{(k - 1)}} - {t_k}{G_{tk}}({x^{(k - 1)}}){G_t}(x) = \frac{{x - pro{x_{th}}(x - t\nabla g(x))}}{t}pro{x_{th}}(x) x(k)=x(k−1)−tkGtk(x(k−1))Gt(x)=tx−proxth(x−t∇g(x))proxth(x)

其中:
p r o x t h ( x ) = arg ⁡ min ⁡ z ∈ R n 1 2 t ∥ x − z ∥ 2 2 + h ( z ) pro{x_{th}}(x) = \arg {\min _{z \in {R^n}}}\frac{1}{{2t}}{\left\| {x - z} \right\|_2}^2 + h(z) proxth(x)=argz∈Rnmin2t1∥x−z∥22+h(z)

以上是本节梯度方法求解凸优化问题,下一节总结对偶方法解决梯度问题。

相关推荐
leegong2311129 分钟前
学习PostgreSQL专家认证
数据库·学习·postgresql
牧歌悠悠32 分钟前
【深度学习】Unet的基础介绍
人工智能·深度学习·u-net
坚毅不拔的柠檬柠檬1 小时前
AI革命下的多元生态:DeepSeek、ChatGPT、XAI、文心一言与通义千问的行业渗透与场景重构
人工智能·chatgpt·文心一言
坚毅不拔的柠檬柠檬1 小时前
2025:人工智能重构人类文明的新纪元
人工智能·重构
jixunwulian1 小时前
DeepSeek赋能AI边缘计算网关,开启智能新时代!
人工智能·边缘计算
Archie_IT1 小时前
DeepSeek R1/V3满血版——在线体验与API调用
人工智能·深度学习·ai·自然语言处理
Moonnnn.1 小时前
51单片机学习——动态数码管显示
笔记·嵌入式硬件·学习·51单片机
大数据追光猿2 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
南宫生2 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
技术小齐2 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习