近似点梯度法

最优化笔记——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.mzph.cn/news/609304.shtml

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

相关文章

WEB 3D技术 three.js 包围盒

本文 我们来说 包围盒 如下图所示 就是一个方框 框住我们整个物体 它的作用 比较明显的就是 当用户点击某个物体 我们用包围盒套住 用户能够很直观的知道自己当前选中的物体是哪一个 还有就是 比如 我们物体做的比较复杂 是非常多顶点构建的 那么 我们判断它有没有和其他物体…

java连接池、C3P0、Druid德鲁伊连接池技术

java线程池 连接池C3P0Druid 连接池 概念:其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象&#xff0c…

【huggingface】【pytorch-image-models】timm框架中使用albumentations库数据增广

文章目录 一、前言二、实操2.1 声明库2.2 定义你的数据增广算子2.3 加入其中 一、前言 问题是这样的,在使用timm框架训练时,发现数据增广不够,想用Albumentations库的数据增广,怎么把后者嵌入到前者的训练中。 其实也是比较简单…

通过Docker搭建4节点的Tendermint集群

Tendermint:0.34.24 Docker:20.10.21 Docker-Compose:2.20.2 OS:Ubuntu 20.04 Go:1.19.2 Linux/amd64 1 修改Tendermint源码 1.1 修改监听IP 为什么要将127.0.1修改成0.0.0.0呢?因为容器内的服务如果是以…

CHS_02.1.4+操作系统体系结构 二

CHS_02.1.4操作系统体系结构 二 操作系统的结构 上篇文章我们只介绍过宏内核 也就是大内核以及微内核分层结构的操作系统模块化是一种很经典的程序设计思想宏内核和微内核外核 操作系统的结构 上篇文章我们只介绍过宏内核 也就是大内核以及微内核 今年大纲又增加了分层结构 模块…

【从零开始学技术】Fiddler 抓取 https 请求大全

1.Fiddler代理浏览器设置 注意浏览器代理区别 Chrome/IE浏览器使用的都是系统代理设置 在chrome浏览器的设置中搜索代理,可以看到 打开IE浏览器,选择设置->Internet选项 Firefox浏览器使用的是单独的一套代理系统 在Firefox的代理设置中,我…

设计模式之外观模式【结构型模式】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某…

K8S--持久卷(PersistentVolume)的用法

原文网址:K8S--持久卷(PersistentVolume)的用法-CSDN博客 简介 本文介绍K8S的持久卷(PersistentVolume)的用法。 目标:用持久卷的方式将主机的磁盘与容器磁盘映射,安装nginx并运行。 --------------------------------------------------…

使用电脑多年的你不可不知:移动机械硬盘的正确使用姿势

前言 随着科技的发展,小伙伴手边或多或少都有移动硬盘这个存储设备。上班族用来存储资料,家人用来存放回忆。但移动机械硬盘的使用过程中是有注意事项的,你知道多少移动机械硬盘的使用注意事项呢? 今天小白就跟各位小伙伴来唠唠…

Minecraft教程:使用MCSM面板搭建我的世界私服并实现远程联机

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 前言 Li…

论文阅读 Attention is all u need - transformer

文章目录 1 摘要1.1 核心 2 模型架构2.1 概览2.2 理解encoder-decoder架构2.2.1 对比seq2seq,RNN2.2.2 我的理解 3. Sublayer3.1 多头注意力 multi-head self-attention3.1.1 缩放点乘注意力 Scaled Dot-Product Attention3.1.2 QKV3.1.3 multi-head3.1.4 masked 3.…

图像中部分RGB矩阵可视化

图像中部分RGB可视化 今天室友有个需求就是模仿下面这张图画个示意图: 大致就是把图像中的一小部分区域的RGB值可视化了一下。他居然不知道该怎么画,我寻思这不直接秒了。 import cv2 as cv import numpy as np import matplotlib.pyplot as pltclass …

书生·浦语大模型全链路开源体系 学习笔记 第三课

huggingface-cli: command not found 按照该文档解决即可 https://github.com/huggingface/huggingface_hub/issues/1079 具体如下: 1、确保环境已将安装huggingface-cli 2、版本需要旧版,pip install huggingface_hub0.20.1 3、再按如下执行 # T…

【Helm 及 Chart 快速入门】02、Helm 基本使用

目录 一、Helm 基本使⽤ 1.1 搜索 chart 应⽤ 1.2 部署 chart 应⽤ 1.3 删除 chart 应⽤ 1.4 定制参数部署应⽤ 1.5 chart 应⽤升级 1.6 chart 应⽤回滚 一、Helm 基本使⽤ 1.1 搜索 chart 应⽤ 使⽤ helm search repo 关键字可以查看相关 charts: […

基于SSM的在线电影票购买系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的在线电影票购买系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring…

mysql基础-常用函数汇总

目录 1. 查询技巧 2. 时间函数 2.1 now() 2.2 current_date() 2.3 时间差timestampdiff()与datediff() 2.4 其他时间函数 3. 字符函数 3.1 截取函数 3.2 分割函数 3.3 left与right函数 3.4 其他函数 4. 数字函数 5. …

Java web设计:在线微友圈网站

项目背景 微友圈是一个基于Java Web开发的社交网络平台,旨在为用户提供一个轻松互动、分享生活和交流观点的在线社区。随着社交网络的普及,人们更加渴望与朋友、家人以及其他志同道合的人保持联系并分享彼此的生活点滴。微友圈的目标是打造一个简洁、高…

string的模拟实现

string的模拟实现 msvc和g下的string内存比较成员变量构造函数与析构函数拷贝构造函数赋值拷贝c_str、size和capacity函数以及重载[]、clear、expand_capacity迭代器与遍历reservepush_back、append、insert字符串比较运算符erase<<流提取 >>流插入resizefindsubst…

RabbitMQ发布确认

1.单个确认 单个确认发布是一种同步确认发布方式&#xff0c;也就是发布一个消息后只有它被确认发布&#xff0c;后续的消息才能继续发布。 缺点:发布速度特别慢,因为若是没有确认发布的消息会阻塞所有后续消息的发布 package com.hong.rabbitmq5;import com.hong.utils.Rabb…

mac怎么拼图?Mac拼图技巧分享

mac怎么拼图&#xff1f;在Mac上拼图是一种令人愉悦的创意表达方式&#xff0c;可以让你将多张图片巧妙地融合在一起&#xff0c;创造出令人惊叹的艺术品。本文将向你介绍在Mac上进行拼图的几种方法&#xff0c;帮助你轻松实现这一目标。 一、使用Mac内置的预览功能进行拼图 M…