近似点梯度法

news2024/9/22 4:11:47

最优化笔记——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) 也相对较小.

截屏2024-01-09 20.33.21

上图图描述了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)收敛性分析

截屏2024-01-09 21.17.58

截屏2024-01-09 21.21.31

也就是说近似点梯度法收敛速度是 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)!

截屏2024-01-09 21.48.21

截屏2024-01-09 21.53.57

截屏2024-01-09 21.36.52

(2)收敛性分析

截屏2024-01-09 21.56.00

参考资料

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1369581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JAVA】怎么确保一个集合不能被修改

🍎个人博客:个人主页 🏆个人专栏: JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 示例: 不可修改的List: 不可修改的Set: 不可修改的Map: 结语 我的其他博…

基于Springboot的计算机学院校友网(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的计算机学院校友网(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring…

【数据库】mysql事务

一、事务的基本概念 1、事务的定义 事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成。。 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行&…

Java项目:112SSM在线电影订票系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 在线电影订票系统基于SpringSpringMVCMybatis开发,系统分为前台和后台,前台主要用来用户浏览电影信息,订票&#xff0c…

第7章-第9节-Java中的Stream流(链式调用)

1、什么是Stream流 Lambda表达式,基于Lambda所带来的函数式编程,又引入了一个全新的Stream概念,用于解决集合类库既有的鼻端。 2、案例 假设现在有一个需求, 将list集合中姓张的元素过滤到一个新的集合中;然后将过滤…

Dell 机架式服务器 - 高级定制服务

Dell 机架式服务器 - 高级定制服务 1. Dell Technologies2. 机架式服务器 - 高级定制服务2.1. Servers & Storage (服务器及存储) -> Servers2.2. Rack Servers (机架式服务器)2.3. Shop2.4. PowerEdge Rack Servers (PowerEdge 机架式服务器)2.5. PowerEdge R760 Rack …

个性化Python GUI计算器搭建

大家好,本文将介绍在Python中使用Tkinter几分钟内制作自己的全功能GUI计算器。 要完成所提到的功能,除了通常随Python标准库一起安装的Tkinter之外,不需要任何额外的库。 如果使用的是Linux系统,可能需要安装: $ pi…

519基于单片机的自动切割流程控制系统

基于单片机的自动切割流程控制系统[proteus仿真] 自动切割流程控制系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于单片机的自动切割流程控制系统 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2&…

双指针(简化哈希)力扣15.三数之和

题目 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 …

密码学(二)

文章目录 前言一、Certificate Authorities二、Key Agreement Protocols 前言 本文来自 Intel SGX Explained 请参考:密码学(一) 一、Certificate Authorities 非对称密钥密码学中的公钥和私钥假设每个参与方都拥有其他参与方的正确公钥。…

【上海】买套二手房需要多少钱?

上次我们看了苏州的二手房,这次我们一起来看下上海的二手房价格如何。 数据来源 数据来自贝壳二手房,每个区最多获取了3千条房源信息,数据共计4万条左右 对数据感兴趣的朋友,公众号后台发送上海二手房获取数据文件 各区房源单价…

【VRTK】【VR开发】【Unity】19-VRTK实现旋转运动

课程配套学习项目源码资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【背景】 在实际开发中,旋转运动也是时常需要模拟的重要运动类型。常见的场景有开关门,方向盘轮胎以及拉动拉杆等等。 旋转运动的实现可以基于物理系…

STM32入门教程-2023版【3-3】gpio输入

关注 星标公众号 不错过精彩内容 大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! 上两小节我们已经把GPIO的结构和8种输入输出模式都讲完了,到这里还不懂的可以回…

JVM主要的几种垃圾回收算法

1、Java 为什么要实现自动内存管理 ? 简化开发过程:通过内存自动管理可以避免手动分配和释放内存的麻烦,减少了内存泄漏和内存错误的风险,让研发能更专注于业务逻辑,不必纠结于内存管理的细节。 提高开发效率&#xff…

vivado 创建编译后工程

创建后期合成项目 合成后项目以合成网表、完全生成的块设计、完全生成的IP以及相应的约束。然后,您可以分析、布局和实施设计 注意:您可以使用XST或第三方合成工具来创建合成网表。 重要!使用EDIF和NGC文件时,顶部单元格名称必…

ChatGPT扩展系列之网易数帆ChatBI

在当今数字化快速发展的时代,数据已经成为业务经营与管理决策的核心驱要素。无论是跨国大企业还是新兴创业公司,正确、迅速地洞察数据已经变得至关重要。然而,传统的BI工具往往对用户有一定的技术门槛,需要熟练的操作技能和复杂的查询语句,这使得大部分的企业员工难以深入…

业界首款PCIe 4.0/5.0多通道融合接口SSD技术解读

之前小编写过一篇文章劝大家不要碰PCIe 5.0 SSD,详细内容,可以再回顾下: 扩展阅读:当下最好不要入坑PCIe 5.0 SSD 如果想要进一步了解PCIe 6.0,欢迎点击阅读: 浅析PCIe 6.0功能更新与实现的挑战 PCIe 6.…

Hyperledger Fabric 消息协议

Fabric 中大量采用了 gRPC 消息在不同组件之间进行通信交互,主要包括如下几种情况:客户端访问 Peer 节点,客户端和 Peer 节点访问排序节点,链码容器与 Peer 节点交互,以及多个 Peer 节点之间的 Gossip 交互。 消息结构…

探索雷盛537威士忌的魅力:从观色、闻香到品鉴

威士忌,这一源于苏格兰的特别烈酒,以其丰富的味蕾和特别的魅力征服了全球的品鉴者。品鉴威士忌不仅仅是一种感官体验,更是一种探索和发现的旅程。在本文中,我们将以雷盛537威士忌为例,与您深入了解品鉴威士忌的全过程&…

【Matplotlib】基础设置之图形组合07

figures, subplots, axes 和 ticks 对象 figures, axes 和 ticks 的关系 这些对象的关系可以用下面的图来表示: 示例图像: 具体结构: figure 对象 figure 对象是最外层的绘图单位,默认是以 1 开始编号(MATLAB 风格…