次梯度算法介绍

系列文章目录

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


文章目录

  • 系列文章目录
  • 一、次梯度
    • 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/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony从入门到放弃(一)

OpenHarmony从入门到放弃&#xff08;二&#xff09; 一、OpenHarmony的基本概念和特性 OpenHarmony是由开放原子开源基金会孵化及运营的开源项目&#xff0c;其目标是构建一个面向全场景、全连接、全智能的时代的智能终端设备操作系统。 分布式架构 OpenHarmony采用分布式…

Elasticsearch基本操作之索引操作

本文说下Elasticsearch基本操作之索引操作 文章目录 概述创建索引创建索引示例重复创建索引示例 查看索引查看所有索引查看单个索引 概述 由于是使用命令来操作Elasticsearch&#xff0c;可以使用kibana&#xff0c;postman和apifox等工具 我使用了apifox来执行命令&#xff0c…

macbook电脑2024免费好用的系统清理优化软件CleanMyMac X4.14.7

CleanMyMac X2024来帮助你找到和删除不需要的文件。CleanMyMac X是一款专业的mac清理软件&#xff0c;它可以智能地扫描你的磁盘空间&#xff0c;找出并删除大型和旧文件&#xff0c;系统垃圾&#xff0c;iTunes垃圾&#xff0c;邮件附件&#xff0c;照片库垃圾等&#xff0c;让…

【InnoDB数据存储结构】第2章节:InnoDB行格式

目录结构 之前整篇文章太长&#xff0c;阅读体验不好&#xff0c;将其拆分为几个子篇章。 本篇章讲解 InnoDB 行格式。 InnoDB 行格式 InnoDB 一行记录是如何存储的&#xff1f; 这个问题是本文的重点&#xff0c;也是面试中经常问到的问题&#xff0c;所以就引出了下文的 …

力扣 验证二叉搜索树 递归

&#x1f468;‍&#x1f3eb; 题目地址 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left,…

vc2017编译从github网站上下载的源码

以ZLmediakit为例 1.下载软件 cmakehttps://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-windows-x86_64.zip Microsoft Visual Studio https://my.visualstudio.com/Downloads?qvisual%20studio%202017&wt.mc_ido~msft~vscom~older-downloads …

测评大通关攻略

天下苦测评已久&#xff0c;今天就让我来聊聊测评这回事。首先我们不单独谈银行的测评&#xff0c;银行的第一次笔试经常是超级多的测评&#xff0c;这个测评需要单独谈。我们今天就先来聊聊大多数公司的测评。&#xff08;本文所用的所有题目均不是本人参加测评所截图的&#…

【数据结构】二叉树的创建和遍历:前序遍历,中序遍历,后序遍历,层次遍历

目录 一、二叉树的定义 1、二叉树的定义 2、二叉树的五种形态 二叉树的子树 &#xff1a; 3、满二叉树与完全二叉树 4、二叉树的性质 5、二叉树的存储结构 1、顺序存储 ​编辑 2、链式存储 二、二叉树的遍历 按照前序序列构建二叉树 1、前 (先) 序遍历(Preorder …

使用Python和Pygame库创建简单的的彩球效果

简介 Pygame是一款强大的游戏开发库&#xff0c;可以用于创建各种有趣的图形效果。为了更好地了解Pygame的功能&#xff0c;今天我们将要做的是在屏幕上随机生成一些彩色的小球&#xff0c;并使它们以不同的速度和方向移动。当小球碰到屏幕边缘时&#xff0c;它们将反弹。 功能…

为什么会去华为 OD?网传的 OD 转华为正编,真的假的?

目录 专栏导读一、为什么会去华为 OD二、华为 OD 的工作内容三、OD 与华为自有员工的对比四、那&#xff0c;到底要不要去华为 OD&#xff1f;五、网传的 OD 转华为正编&#xff0c;真的假的&#xff1f;1、连续两次绩效 A2、通过可信专业级认证 六、最后&#xff0c;真的感谢 …

GitHub上的15000个Go模块存储库易受劫持攻击

内容概要&#xff1a; 目前研究发现&#xff0c;GitHub上超过15000个Go模块存储库容易受到一种名为“重新劫持”的攻击。 由于GitHub用户名的更改会造成9000多个存储库容易被重新劫持&#xff0c;同时因为帐户删除&#xff0c;会对6000多个存储库造成重新劫持的危机。目前统计…

CentOS 7 实战指南:文件或目录的权限操作命令详解

前言 这篇文章详细介绍了文件和目录的常用权限操作命令&#xff0c;并提供了全面的技术解析。通过本文&#xff0c;你将学习如何使用 chmod 和 chown 命令来管理文件和目录的权限&#xff0c;控制用户和用户组的访问权限。无论你是初学者还是有经验的系统管理员&#xff0c;这…

代码随想录刷题笔记(DAY 8)

今日总结&#xff1a;最后一道题解决的比较糟糕&#xff0c;后续会补上新解法&#xff0c;今天还是将中心放在了前端。 Day 8 01. 反转字符串&#xff08;No. 344&#xff09; 题目链接 代码随想录题解 1.1 题目 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。…

如何解决大模型的「幻觉」问题?

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;贝叶斯滤波与Kalman估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能&#xff0c…

【12】ES6:模块化

一、JavaScript 模块化 JavaScript 模块化是一种组织和管理 JavaScript 代码的方法&#xff0c;它将代码分割为独立的模块&#xff0c;每个模块都有自己的作用域&#xff0c;并且可以导出和导入功能。模块化可以提高代码的可维护性、可重用性和可扩展性。 在JavaScript中&…

FCN学习-----第一课

语义分割中的全卷积网络 CVPR IEEE国际计算机视觉与模式识别会议 PAMI IEEE模式分析与机器智能汇刊 需要会的知识点&#xff1a; 神经网络&#xff1a;前向传播和反向传播 卷积神经网络&#xff1a;CNN&#xff0c;卷积&#xff0c;池化&#xff0c;上采样 分类网络&#xff1a…

CCF模拟题 202312-1 仓库规划

问题描述 试题编号&#xff1a; 202312-1 试题名称&#xff1a; 仓库规划 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 输入格式 输出格式 样例输入 4 2 0 0 -1 -1 1 2 0 -1样例输出 3 1 0 3样例解释 Java实现代码&#xff1a; import …

Spring高手之路-Spring Bean、Java Bean和对象的区别与联系

目录 什么是Spring Bean 什么是Java Bean 什么是对象 Spring Bean与Java Bean与对象的联系与区别 联系 区别 什么是Spring Bean 在Spring官方文档中对Bean的解释如下&#xff1a; In Spring, the objects that form the backbone of your application and that are manage…

贪吃蛇C语言实现(有源码)

前言 之前学了一点easyx图形库的使用&#xff0c;掌握一些基本用法后就用贪吃蛇来进行实战了&#xff0c;运行视频放在csdn视频那一栏了&#xff0c;之前的烟花也是。 1.头文件 #define _CRT_SECURE_NO_WARNINGS 1 #include<easyx.h> #include<conio.h> #includ…

odoo17 | 基本视图

前言 我们在上一章中已经看到Odoo能够为给定模型生成默认视图。在实践中&#xff0c;默认视图是绝对不可接受的用于商业应用程序。相反&#xff0c;我们至少应该以逻辑方式组织各种字段。 视图在带有动作和菜单的XML文件中定义。它们是ir.ui.view模型的实例。 在我们的房地产…