【动手学运动规划】 5.2 数值优化基础:梯度下降法,牛顿法
朕四季常服, 不过八套. — 大明王朝1566 道长
🏰代码及环境配置:请参考 环境配置和代码运行!
上一节我们介绍了数值优化的基本概念, 让大家对最优化问题有了基本的理解.
那么对于一个具体的问题, 我们应该如何求解呢? 这一节我们将介绍几个基本的求解方法, 为了简化问题, 我们会基于无约束凸优化问题来做解释. 因为无约束凸优化问题, 梯度为0的点(极值点), 就是全局最优解.
最优化问题的求解是一个迭代的过程, 从初始点(初始解) x 0 x_0 x0开始, 通过迭代方法(梯度下降法, 牛顿法等)逐步更新 x i x_i xi, 直至逼近最优解 x ∗ x^* x∗.
上图形象的展示了这个迭代的过程, 从初始解start点开始, 逐步迭代至最优解. 在这个1维问题上, 迭代方向只有左和右(-, +), 我们如何确定迭代的方向和步长呢? 或者更高维度的问题里, 如何确定每个维度的方向和步长呢?
接下来我们介绍几个基础的最优化求解方法
5.2.1 梯度下降法(Gradient Descent)
梯度是指函数在某一点上沿着各个方向的偏导数, 梯度代表着当前点函数值增加最快的方向. 定义如下:
∇ f ( x 1 , x 2 , . . . x n ) = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , . . . ∂ f ∂ x n ) \nabla f(x_1,x_2,...x_n)=\left(\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2},... \frac{\partial f}{\partial x_n} \right) ∇f(x1,x2,...xn)=(∂x1∂f,∂x2∂f,...∂xn∂f)
梯度下降法是最常采用的方法之一, 它会沿着梯度下降(相反)的方向逐步调整决策变量. 它的更新公式如下:
x k + 1 = x k − α k ∇ f ( x k ) . x^{k+1}=x^k-\alpha_k \nabla f\left(x^k\right) \text {. } xk+1=xk−αk∇f(xk).
其中 x k x^k xk是第k次迭代x的值, α k \alpha_k αk是第k次迭代的步长.
这张动图可以清晰的展示梯度下降法更新的过程, 每次迭代, 都沿着梯度方向, 更新迭代点.
(1) 梯度下降法的优点
- 实现简单:梯度下降法只需要计算函数的梯度(一阶导数),实现简单,计算量相对较小。
- 广泛适用:对于大多数连续可导的凸函数,梯度下降法都能找到局部最小值。当目标函数是凸函数时,梯度下降法的解是全局解。
- 参数更新方向合理:梯度下降法基于梯度信息选择参数更新方向,这是函数在当前位置的最快下降方向。
(2) 梯度下降法的缺点
- 收敛速度慢:梯度下降法是一阶收敛算法,在接近最小值点时,梯度值会变得很小,导致收敛速度变慢。此外,直线搜索时可能会产生“之字形”下降路径,进一步降低收敛速度。
- 对初始值敏感:不同的初始值可能导致算法收敛到不同的局部最小值。
- 需要手动调整学习率:学习率的选择对算法的收敛速度和效果有很大影响。学习率过大可能导致算法发散,学习率过小则收敛速度过慢。
- 可能陷入局部极值点:如果目标函数不是凸函数而是含有多个极小值点的函数,梯度下降法可能会陷入局部极小点而无法继续下降。
5.2.2 牛顿法(Newton Method)
梯度下降法是一种一阶导数迭代的方法, 收敛速度较慢. 如果利用二阶导数, 是不是能够更快的逼近极值点呢?
牛顿法就是二阶导数迭代的代表, 它综合了一阶和二阶信息, 能够快速收敛. 更新公式如下:
x k + 1 = x k − ∇ 2 f ( x k ) − 1 ∇ f ( x k ) x^{k+1}=x^k-\nabla^2 f\left(x^k\right)^{-1} \nabla f\left(x^k\right) xk+1=xk−∇2f(xk)−1∇f(xk)
其中 ∇ 2 \nabla^2 ∇2是指函数的Hessian矩阵, 是一个由函数的二阶偏导数构成的矩阵,定义如下:
∇ 2 f ( x 1 , x 2 , . . . x n ) = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] \nabla^2 f(x_1,x_2,...x_n)=\left[\begin{array}{cccc}\frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\\frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\\vdots & \vdots & \ddots & \vdots \\\frac{\partial^2 f}{\partial x_n \partial x_1} & \frac{\partial^2 f}{\partial x_n \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2}\end{array}\right] ∇2f(x1,x2,...xn)= ∂x12∂2f∂x2∂x1∂2f⋮∂xn∂x1∂2f∂x1∂x2∂2f∂x22∂2f⋮∂xn∂x2∂2f⋯⋯⋱⋯∂x1∂xn∂2f∂x2∂xn∂2f⋮∂xn2∂2f
∇ 2 f ( x k ) − 1 \nabla^2 f\left(x^k\right)^{-1} ∇2f(xk)−1是Hessian矩阵的逆矩阵, 可以看出牛顿法的计算量很大.
这张图展示了梯度下降法(绿)和牛顿法(红)的对比, 可以看到牛顿法要高效的多.
(1) 牛顿法的优点
- 收敛速度快:牛顿法利用了函数的二阶导数信息(Hessian矩阵),能够在接近最小值点时快速收敛。特别是对于正定二次函数,牛顿法的一步迭代即可达到最优解。
- 对初始值不敏感:相对于梯度下降法,牛顿法对初始值的依赖性较小,更有可能找到全局最优解。
- 全局视野:牛顿法在选择下降方向时,不仅考虑当前位置的梯度,还考虑未来位置梯度的变化趋势,因此具有更强的全局视野。
(2) 牛顿法的缺点
- 计算量大:牛顿法需要计算函数的二阶导数(Hessian矩阵)及其逆矩阵,计算量相对较大
- 对Hessian矩阵要求高:Hessian矩阵必须正定,否则算法可能无法收敛。此外,当Hessian矩阵接近奇异时,算法可能会变得不稳定。
- 函数要求苛刻:牛顿法要求目标函数二阶连续可微,且Hessian矩阵可逆.
因为牛顿法的计算量较大, 为了克服这个问题, 拟牛顿法应运而生. 拟牛顿法不直接去计算Hessian矩阵, 而是通过 近似Hessian矩阵的逆矩阵 来达到类似牛顿法的效果. 常见的拟牛顿法有BFGS等.
下一节我们将使用梯度下降法和牛顿法, 解决Rosenbrock Function, 让大家更直观的看到两种方法的区别.
参考链接
- 刘浩洋. 最优化: 建模, 算法与理论. 高等教育出版社, 2020.
🏎️自动驾驶小白说官网:https://www.helloxiaobai.cn
相关文章:

【动手学运动规划】 5.2 数值优化基础:梯度下降法,牛顿法
朕四季常服, 不过八套. — 大明王朝1566 道长 🏰代码及环境配置:请参考 环境配置和代码运行! 上一节我们介绍了数值优化的基本概念, 让大家对最优化问题有了基本的理解. 那么对于一个具体的问题, 我们应该如何求解呢? 这一节我们将介绍几个基本的求解…...

电子应用设计方案66:智能打印机系统设计
智能打印机系统设计 一、引言 随着科技的不断发展,打印机也在向智能化方向演进。智能打印机不仅能够提供高质量的打印服务,还具备便捷的操作、智能的管理和连接功能。 二、系统概述 1. 系统目标 - 实现高效、高质量的打印输出。 - 支持多种连接方式&am…...
iClient3D for Cesium 实现限高分析
作者:gaogy 1、背景 随着地理信息技术的发展,三维地球技术逐渐成为了许多领域中的核心工具,尤其是在城市规划、环境监测、航空航天以及军事领域。三维地图和场景的应用正在帮助人们更加直观地理解空间数据,提供更高效的决策支持。…...

AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python
支持向量机是AI开发中最常见的一种算法。之前我们已经一起初步了解了它的概念和应用,今天我们用它来进行一次文本情感分析训练。 一、概念温习 支持向量机(SVM)是一种监督学习算法,广泛用于分类和回归问题。 它的核心思想是通过…...
torch.unsqueeze:灵活调整张量维度的利器
在深度学习框架PyTorch中,张量(Tensor)是最基本的数据结构,它类似于NumPy中的数组,但可以在GPU上运行。在日常的深度学习编程中,我们经常需要调整张量的维度以适应不同的操作和层。torch.unsqueeze函数就是…...

【WRF教程第3.1期】预处理系统 WPS 详解:以4.5版本为例
预处理系统 WPS 详解:以4.5版本为例 每个 WPS 程序的功能程序1:geogrid程序2:ungrib程序3:metgrid WPS运行(Running the WPS)步骤1:Define model domains with geogrid步骤2:Extract…...

SD ComfyUI工作流 根据图像生成线稿草图
文章目录 线稿草图生成SD模型Node节点工作流程工作流下载效果展示线稿草图生成 该工作流的设计目标是将输入的图像转换为高质量的线稿风格输出。其主要流程基于 Stable Diffusion 技术,结合文本和图像条件,精确生成符合预期的线条艺术图像。工作流的核心是通过模型的条件设置…...

挑战一个月基本掌握C++(第六天)了解函数,数字,数组,字符串
一 C函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上ÿ…...

git中的多人协作
目录 1.1多人协作1.1.1创建仓库1.1.2协作处理1.1.3冲突处理 1.2分支推送协作1.3分支拉取协作1.4远程分支的删除 1.1多人协作 1.1.1创建仓库 新建两个文件夹,不需要初始化为git仓库,直接克隆远程仓库命名testGit1,testGit2 指定本地仓库级别…...
解决新安装CentOS 7系统mirrorlist.centos.org can‘t resolve问题
原因 mirrorlist.centos.org yum源用不了 解决办法就是 # cd /etc/yum.repos.d/ # mv CentOS-Base.repo CentOS-Base.repo_bak # vim CentOS-Base.repoCentOS系统操作 # mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/*.repo_bak # curl -o /etc/yum.repos.d/CentOS-Linux-Ba…...

RK3588 , mpp硬编码yuv, 保存MP4视频文件.
RK3588 , mpp硬编码yuv, 保存MP4视频文件. ⚡️ 传送 ➡️ Ubuntu x64 架构, 交叉编译aarch64 FFmpeg mppRK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGBRk3588 FFmpeg 拉流 RTSP, 硬解码转RGBRK3588 , mpp硬编码yuv, 保存MP4视频文件....

Elasticsearch:什么是查询语言?
查询语言定义 查询语言包括数据库查询语言 (database query language - DQL),是一种用于查询和从数据库检索信息的专用计算机语言。它充当用户和数据库之间的接口,使用户能够管理来自数据库管理系统 (database management system - DBMS) 的数据。 最广…...
均值聚类算法
K-均值聚类算法是一种常用的无监督学习算法,用于将数据集划分为 K 个簇。它基于以下的思想:通过计算数据点与各个簇中心之间的距离来确定数据点所属的簇,并更新簇中心来最小化簇内数据点的平方误差。K-均值算法的步骤如下: 1. 选…...
MySQL 中快速插入大量数据
在 MySQL 中快速插入大量数据(例如 20 万条记录)可以通过多种方法实现。以下是一些优化技巧和步骤,可以帮助你高效地插入大量数据: 1. 禁用索引和约束(如果可能) 在插入大量数据之前,禁用索引和…...

腾讯云智能结构化OCR:以多模态大模型技术为核心,推动跨行业高效精准的文档处理与数据提取新时代
🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大三学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL࿰…...
最大似然检测在通信解调中的应用
最大似然检测(Maximum Likelihood Detection,MLD),也称为最大似然序列估计(Maximum Likelihood Sequence Estimation,MLSE),是一种在通信系统中广泛应用的解调方法。其核心思想是在给…...

SKETCHPAD——允许语言模型生成中间草图,在几何、函数、图算法和游戏策略等所有数学任务中持续提高基础模型的性能
概述 论文地址:https://arxiv.org/pdf/2406.09403 素描是一种应用广泛的有效工具,包括产生创意和解决问题。由于素描能直接传达无法用语言表达的视觉和空间信息,因此从古代岩画到现代建筑图纸,素描在世界各地被用于各种用途。儿童…...
[JAVA备忘录] Lambda 表达式简单介绍
目录 前言 函数式接口 Lambda 表达式使用实例 简单示例 1. 无参数,无返回值 2. 有参数,无返回值 3. 无参数,有返回值 4. 有参数,有返回值 解释: 集合框架 1.forEach:遍历集合 2.排序࿱…...
[python]使用flask-caching缓存数据
简介 Flask-Caching 是 Flask 的一个扩展,为任何 Flask 应用程序添加了对各种后端的缓存支持。它基于 cachelib 运行,并通过统一的 API 支持 werkzeug 的所有原始缓存后端。开发者还可以通过继承 flask_caching.backends.base.BaseCache 类来开发自己的…...

裸机按键输入实验
一、硬件原理分析 按键就两个状态:按下或弹起,将按键连接到一个 IO 上,通过读取这个 IO 的值就知道按 键是按下的还是弹起的。至于按键按下的时候是高电平还是低电平要根据实际电路来判断。前 面几章我们都是讲解 I.MX6U 的 GPIO 作为输出使用…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...