次梯度算法介绍

news2024/11/26 16:23:22

系列文章目录

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


文章目录

  • 系列文章目录
  • 一、次梯度
    • 1 定义
    • 2 存在性
  • 二、次梯度的计算
    • 1 按定义计算
    • 2 常用计算规则
  • 三、最优性条件
    • 1 无约束优化问题
    • 2 约束优化问题
  • 四、次梯度算法
    • 1 迭代格式
    • 2 收敛性
  • 参考资料


我们知道梯度下降法的前提为目标函数 f ( x ) f(x) f(x) 是一阶可微的. 在实际应用中经常会遇到不可微的函数,对于这类函数我们无法在每个点处求出梯度,但往往它们的最优值都是在不可微点处取到的. 次梯度算法不用知道每个点的梯度,转而求其次梯度,能处理函数不可微的情形.

一、次梯度

1 定义

我们知道可微凸函数 f f f 的一阶条件:

f ( y ) ≥ f ( x ) + ∇ f ( x ) T ( y − x ) f(y)\geq f(x)+\nabla f(x)^{\mathrm{T}}(y-x) f(y)f(x)+f(x)T(yx)

类比可微凸函数的一阶条件,可以给出函数(不一定可微)次梯度的定义.设 f f f为适当凸函数, x ∈ d o m f x\in\mathbf{dom}f xdomf.若向量 g ∈ R n g\in\mathbb{R}^n gRn 满足

f ( y ) ≥ f ( x ) + g T ( y − x ) , f(y)\geq f(x)+g^{\mathrm{T}}(y-x), f(y)f(x)+gT(yx),
则称g 为函数 f f f 在点 x x x处的一个次梯度.进一步地,称集合
∂ f ( x ) = { g ∣ g ∈ R n , f ( y ) ≥ f ( x ) + g T ( y − x ) , ∀ y ∈ d o m f } \partial f( x) = \{ g\mid g\in \mathbb{R} ^n, f( y) \geq f( x) + g^{\mathrm{T} }( y- x) , \forall y\in \mathbf{dom}f\} f(x)={ggRn,f(y)f(x)+gT(yx),ydomf}
f f f 在点 x x x 处的次微分.

由以上定义可得:

  1. f ( x ) + g T ( y − x ) f(x)+g^{\mathrm{T}}(y-x) f(x)+gT(yx) f ( y ) f(y) f(y)的一个全局下界.
  2. 如果 f f f是可微的,则 ∇ f ( x ) \nabla f(x) f(x) x x x处的次梯度.

可以看到次梯度的定义包含了可微和不可微的情形,通常不可微点处次梯度不止一个,如下面例所示:

截屏2024-01-03 20.12.16

2 存在性

定理(次梯度存在性)

f f f为凸函数,dom f f f为其定义域,如果 x ∈ intdom ⁡ f x\in\operatorname{int dom}f xintdomf, 则 ∂ f ( x ) \partial f(x) f(x)是非空的.其中 intdom ⁡ f \operatorname{int dom}f intdomf的含义是集合dom f f f的所有内点.

  • 也就是说只要是定义域中的内点,次梯度一定存在.

二、次梯度的计算

1 按定义计算

对于绝对值函数,只有在 x = 0 x=0 x=0处不可微,用定义计算其次梯度:
f ( y ) ≥ f ( 0 ) + g ( y − 0 ) , ∀ y ∈ R ⇒ ∣ y ∣ ≥ g ⋅ y ⇒ − 1 ≤ g ≤ 1 f(y)\geq f(0)+g(y-0),\forall y\in R \\ \Rightarrow |y| \geq g\cdot y \\ \Rightarrow -1\leq g \leq 1 f(y)f(0)+g(y0),yRygy1g1
截屏2024-01-03 20.21.30
在这里插入图片描述

2 常用计算规则

截屏2024-01-03 20.22.52

截屏2024-01-03 20.22.13

截屏2024-01-03 20.23.31

也就是,交点处的次微分为两直线斜率的凸组合

三、最优性条件

1 无约束优化问题

截屏2024-01-03 20.26.08

2 约束优化问题

截屏2024-01-03 20.26.44

KKT条件写出来,再加上第4条(当对偶变量固定时,拉格朗日函数去最小值)。

四、次梯度算法

1 迭代格式

截屏2024-01-03 20.36.01

  • 次梯度算法不是下降方法,即无法保证 f ( x k + 1 ) < f ( x k ) f(x^{k+1})<f(x^k) f(xk+1)<f(xk).

2 收敛性

假设条件:

截屏2024-01-03 20.41.18

和梯度法不同,若 f ( x ) f(x) f(x)满足上述条件,只有当 α k \alpha_k αk取消失步长时 f ^ k \hat{f}^k f^k才具有收敛性,一个常用的步长取法 α k = 1 k \alpha_k=\frac1k αk=k1.若 ∥ x 0 − x ∗ ∥ ≤ R \|x^0-x^*\|\leq R x0xR ∥ g i ∥ ≤ G \|g^i\|\leq G giG, 可以得到
∣ f ^ k ( x ) − f ∗ ∣ ≤ G R k . |\hat{f}^k(x)-f^*|\leq \frac{GR}{\sqrt{k}}. f^k(x)fk GR.
也就是说次梯度法收敛性为 O ( 1 k ) O(\frac{1}{\sqrt{k}}) O(k 1)的,相较于梯度法更慢,但是可以处理不可微的函数。

参考资料

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

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

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

相关文章

sql关键字——with 子查询,row_number()排名函数,lag()函数用法举例

题目&#xff1a; 查询所有选修"英语"的学生成绩与前一名的分数差距&#xff0c;按照成绩降序排序。 针对以上需求&#xff0c;有两种做法 1.使用lag函数 lag()函数&#xff0c;取当前行的上一列&#xff0c;用法是lag(列&#xff0c;往上取的行数&#xff0c;填充…

使用Python做个可视化的“剪刀石头布”小游戏

目录 一、引言 二、环境准备与基础知识 三、游戏界面制作 四、游戏逻辑实现 五、代码示例 六、游戏测试与优化 七、扩展与改进 八、总结 一、引言 “剪刀石头布”是一种古老的手势游戏&#xff0c;它简单易懂&#xff0c;趣味性强&#xff0c;适合各个年龄段的人参与。…

Excel·VBA二维数组组合函数的应用实例之概率计算

看到一个视频《李永乐老师的抖音 - 骰子概率问题》&#xff0c;计算投出6个骰子恰好出现1、2、3、4、5、6这6个点数的概率 李永乐老师的计算方法是&#xff0c;第1个概率为1即6/6&#xff0c;第2个不与之前相同的概率为5/6&#xff0c;第3个同理概率为4/6&#xff0c;因此该问…

深度学习:大规模模型分布式训练框架DeepSpeed

深度学习&#xff1a;大规模模型分布式训练框架DeepSpeed DeepSpeed简介DeepSpeed核心特点DeepSpeed如何工作&#xff1f;DeepSpeed如何使用&#xff1f;参考文献 DeepSpeed简介 随着机器学习模型变得越来越复杂和庞大&#xff0c;训练这些模型所需的计算资源也在不断增加。特别…

【已解决】Invalid bound statement (not found)

报错讯息 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.casey.mapper.SysRoleMapper.getUserRoleCode at org.apache.ibatis.binding.MapperMethod S q l C o m m a n d . < i n i t > ( M a p p e r M e t h o d . j a v a :…

数据库MYSQL no.2

1.加法 加法&#xff1a;在java中有运算和拼接的功能&#xff0c;但是数据库中加号只做运算。 拼接是concat&#xff08;...&#xff0c;...&#xff09; 2. IFNULL ifnull(字段&#xff0c;0) 为null就返回逗号后面的东西0. 3.条件查询&#xff1a; 1.条件表达式 &#…

第84讲:基于各种场景使用mysqldump逻辑备份数据库

文章目录 1.mysqldump备份工具的语法格式2.使用mysqldump进行全库备份3.备份单个库或者多个库的数据4.备份某个库下的单表或者多表的数据5.mysqldump备份数据库时必加的一些参数5.1.基本参数5.2.核心参数 6.mysqldump备份数据库时的一些其他参数 1.mysqldump备份工具的语法格式…

条件随机场 (CRF) 的损失函数以及faiss 的原理介绍

1、条件随机场 (CRF) 的损失函数 条件随机场&#xff08;CRF&#xff09;是一种统计建模方法&#xff0c;常用于结构化预测问题&#xff0c;如序列标注、分词和命名实体识别等。在CRF模型中&#xff0c;损失函数用于衡量模型预测的标记序列与真实标记序列之间的差异。CRF的目标…

C++-模板与容器

1、模板 模板可以让类或者函数支持一种通用类型&#xff0c;这种通用类型在实际运行过程中可以使用任何数据类型。因此程序员可以写出一些与类型无关的代码。这种编程方式也叫“泛型编程”。 通常有两种形式&#xff1a; 函数模板类模板 1.1 函数模板 //模板类型声明 template&…

【基础篇】九、程序计数器 JVM栈

文章目录 0、运行时数据区域1、程序计数器2、JVM栈3、JVM栈--栈帧--局部变量表4、JVM栈--栈帧--操作数栈5、JVM栈--栈帧--桢数据6、栈溢出7、设置栈空间大小8、本地方法栈 0、运行时数据区域 JVM结构里&#xff0c;类加载器下来&#xff0c;到了运行时数据区域&#xff0c;即Ja…

Navicat for Mysql怎么执行创建表的脚本

Navicat for Mysql怎么执行创建表的脚本 Navicat 怎么执行sql文件 Navicat 执行创建表语句 Navicat 执行sql语句 Navicat 怎么创建表语句 1、打开Navicat数据库管理工具&#xff1b; 2、点击菜单栏上的“工具”&#xff0c;选择“命令列界面”&#xff1b; 打开了命令列界面…

Vue学习计划-Vue3--核心语法(三)computed计算属性、watch监听、watchEffect函数

1. computed计算属性 作用&#xff1a;根据已有数据计算出新数据&#xff08;和Vue2中的computed作用一致&#xff09;。 2. watch监视与watchEffect 1. watch 作用&#xff1a;监视数据的变化&#xff08;和Vue2的watch作用一致&#xff09;特点&#xff1a;Vue3中的watch…

Flume基础知识(五):Flume实战之实时监控目录下多个新文件

1&#xff09;案例需求&#xff1a; 使用 Flume 监听整个目录的文件&#xff0c;并上传至 HDFS 2&#xff09;需求分析&#xff1a; 3&#xff09;实现步骤&#xff1a; &#xff08;1&#xff09;创建配置文件 flume-dir-hdfs.conf 创建一个文件 vim flume-dir-hdfs.conf …

一起学docker(六)| Dockerfile自定义镜像 + 微服务模块实战

DockerFile 是什么 Dockerfile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本。 构建步骤 编写Dockerfile文件docker build命令构建镜像docker run运行镜像 Dockerfile构建过程 基础知识 每个保留字指令都必须为大写字母且后面…

逻辑回归(LR)----机器学习

基本原理 逻辑回归&#xff08;Logistic Regression&#xff0c;LR&#xff09;也称为"对数几率回归"&#xff0c;又称为"逻辑斯谛"回归。 logistic回归又称logistic 回归分析 &#xff0c;是一种广义的线性回归分析模型&#xff0c;常用于数据挖掘&#…

『年度总结』逐梦编程之始:我的2023学习回顾与展望

目录 这篇博客&#xff0c;我将回顾2023年编程之旅的起点&#xff0c;同时展望2024年的新征程。 前言 我与Python 我与C语言 第一篇正式博客&#xff1a; 第二篇正式博客&#xff08;扫雷&#xff09;&#xff1a; 指针学习笔记: C语言学习笔记&#xff1a; 我与数据结构…

SCT52A40——120V,4A,高频高压侧和低压侧栅极驱动器,替代UCC27200/UCC27201/MIC4604YM等

• 8-24V宽供电电压 • 驱动高侧和低侧N通道MOSFET • 4A峰值输出源电流和汇电流 • 升压电源电压范围可达120V • 集成阴极负载二极管 • TTL兼容输入&#xff0c;-10V输入 • 45ns传输延迟 • 1000pF负载下7ns上升和4.5ns下降时间 • 2ns延迟匹配时间 • 静态电流252uA • 15…

JDK、JRE、JVM的联系与区别

JDK、JRE、JVM的联系与区别 一、JDK,JRE,JVM定义 JDK(Java Development Kit),包含JRE,以及增加编译器和调试器等用于程序开发的文件。 JRE(Java Runtime Environment)&#xff0c;包含Java虚拟机、库函数、运行Java应用程序所必须的文件。 JVM(Java Virtual Machine)是一个虚…

Vue中的选项式 API 和组合式 API,两者有什么区别

Vue中的选项式 API&#xff08;Option API&#xff09;和组合式 API&#xff08;Composition API&#xff09;是两种不同的组件编写方式&#xff0c;它们各有特点和适用场景&#xff1a; 选项式 API&#xff08;Option API&#xff09;: 传统方法&#xff1a;Vue最初的编程范式…

LeetCode 热题 100——42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…