非线性优化知识

news2024/11/14 18:06:57

这里列下最小二乘的四种解法的优缺点.

求H
求H
求J和H^
求J,H^和信赖域
求J
求J和H
最小二乘问题
梯度下降法
牛顿法
高斯牛顿法
列文伯格-马夸特法
一阶牛顿
二阶牛顿

最小二乘问题可以使用牛顿法,梯度下降法,牛顿高斯法以及列文伯格-马夸特法来求解,这里一一介绍下其优缺点.

牛顿法(分为一阶牛顿法和二阶牛顿法)

一阶牛顿法的推导过程

  • 求解步骤
    一阶牛顿求根.通过迭代法求解方程根的数值求解方法.其求根的一般步骤是:
1. 选择一个初始猜测值 x₀,这个值应该接近方程的一个根。
2. 根据方程和初始猜测值,计算函数 f(x₀) 和导数 f'(x₀)。
3. 使用以下公式进行迭代计算:
x₁ = x₀ - (f(x₀) / f'(x₀))
4. 将 x₁ 作为新的猜测值,并重复步骤 2 和 3,直到满足停止条件。停止条件可以是达到预定的迭代次数,或者函数值的变化很小(收敛到方程的根)。
5. 最终得到的 x 值就是方程的一个近似根。

牛顿法的迭代公式可以通过使用泰勒展开来推导得出。假设我们要解方程 f(x) = 0,使用牛顿法的迭代公式如下:


1. 选择一个初始猜测值 x₀。
2. 根据初始猜测值 x₀,使用泰勒展开将方程 f(x) 在 x₀ 处展开,考虑到一阶导数:
f(x) ≈ f(x₀) + f'(x₀)(x - x₀)
3. 希望找到一个新的近似解 x₁,使得 f(x₁) = 0。将上述展开式中的 x 替换为 x₁:
0 ≈ f(x₀) + f'(x₀)(x₁ - x₀)
4. 将 x₁ 作为新的近似解,即令 f(x₁) = 0,我们可以解出 x₁:
x₁ = x₀ - (f(x₀) / f'(x₀))

这就是牛顿法的迭代公式。通过不断迭代使用该公式,我们可以逐步逼近方程的根。每次迭代,我们通过计算函数值和导数值来更新当前的近似解。

二阶牛顿法推导

二阶牛顿法(Second-Order Newton’s Method),也称为牛顿-拉夫逊法(Newton-Raphson method),是用于数值求解非线性方程或优化问题的迭代方法。下面是二阶牛顿法的推导过程:

  1. 假设我们要求解方程 f(x) = 0,其中 x 是一个变量。
  2. 初始猜测值:选择一个初始猜测值 x₀。
    泰勒展开:在当前猜测值 x₀ 处对函数 f(x) 进行二阶泰勒展开:
    f(x) ≈ f(x₀) + f’(x₀)(x - x₀) + 0.5 * f’‘(x₀)(x - x₀)²
    其中,f’(x₀) 表示 f(x) 对 x 在 x₀ 处的一阶导数,f’'(x₀) 表示 f(x) 对 x 在 x₀ 处的二阶导数。
  3. 近似根的计算:我们希望找到一个新的近似根 x₁,使得 f(x₁) = 0。将上述展开式中的 x 替换为 x₁:0 ≈ f(x₀) + f’(x₀)(x₁ - x₀) + 0.5 * f’'(x₀)(x₁ - x₀)²
  4. 求解近似根:将上述方程化简为形式为 g(x₁) = 0 的方程,其中 g(x₁) 表示近似根 x₁ 的函数表达式。对 g(x₁) 求导,并令导数为零,可以解出 x₁ 的值。具体计算如下:
    对上述方程两边求导数:
    g’(x₁) = f’(x₀) + f’‘(x₀)(x₁ - x₀)
    令 g’(x₁) = 0,解得:
    x₁ = x₀ - f’(x₀) / f’'(x₀)
  5. 更新猜测值:将 x₁ 作为新的猜测值,重复步骤 2 至 4,直到满足停止条件(例如达到预定的迭代次数或函数值的变化很小)。
    最终得到的 x 值就是方程 f(x) = 0 的一个近似根。

梯度下降法

批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)或者小批量梯度下降(Mini-batch Gradient Descent)

最小二乘定义

假设有误差函数f(x), 则对于目标函数 m i n ( F ( x ) ) = 1 / 2 ∣ ∣ f ( x ) ∣ ∣ 2 min(F(x))=1/2||f(x)||^2 min(F(x))=1/2∣∣f(x)2, 如果容易求导,那么F(x)一阶导为0处可能为解.但实际应用场景复杂时,是很难求一阶导的,这时要用迭代法进行求解.
流程如下:

可以看出,整个迭代过程只和误差函数f(x)有关,企图通过每次局部小的迭代实现目标函数的最小解.下面介绍的迭代法最大的区别就是求解 δ x \delta x δx的不同.
如果用高斯法和梯度下降法求解,需要求H,太过复杂,这里就引出了高斯牛顿法.

高斯牛顿法

针对最小二乘场景目标函数 m i n ( F ( x ) ) = 1 / 2 ∣ ∣ f ( x ) ∣ ∣ 2 min(F(x))=1/2||f(x)||^2 min(F(x))=1/2∣∣f(x)2,如果直接用梯度下降法求解,那就不可避免的求解f(x)的海森矩阵,但是最小二乘问题可以做下简化来避免H矩阵的求解.简化后可以通过求解伪H矩阵来完成优化工作.

列文伯格-马夸特法

在高斯牛顿法基础上引入了信赖域概念.

参考链接:
https://zhuanlan.zhihu.com/p/113946848

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

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

相关文章

前端开发中的单例模式

在前端开发中,单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来获取该实例。 在JavaScript中,可以使用以下几种方式来实现单例模式: 字面量方式: const singleton {// …

JVM 调优测试Jmeter 压测

Jmeter 内存不足了,修个5个线程吧 测试结果: Jmeter配置参数 5个线程,每个线程1秒跑1000次 测试串行吞吐量 -XX:PrintGCDetails -Xmx128M -Xms128M -XX:HeapDumpOnOutOfMemoryError -XX:UseSerialGC -XX:PermSize32M GC回收4次 吞吐量138…

SQL Server 2008每天自动备份数据库

在SQL Server 2008数据库中。为了防止数据的丢失我们就需要按时的来备份数据库了。要是每天都要备份的话,人工备份会很麻烦的,自动备份的话就不需要那么麻烦了,只要设置好了,数据库就会自动在你设置的时间段里备份。那么自动备份要…

ihrm项目结构详解

大体介绍 云服务的三种模式 Iaas:基础设施即服务 Pass:平台即服务 Saas:软件即服务 系统设计 主键id生成策略 lombok data setter getter noArgs(无参构造) 模块搭建 1 企业得增删改查 2 全局异常处理器 3 跨域…

选择排序算法介绍

算法介绍 选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是每次从待排序的元素中选取最小(或最大)的元素,放到已排序部分的末尾,直到全部元素排序完毕。 以下是选择排序的详细步骤&…

【实战】 六、用户体验优化 - 加载中和错误状态处理(下) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理1~234.用useAs…

java实现一个简单的webSocket聊天demo

java实现一个简单的webSocket聊天demo 一、依赖二、配置准备三、demo代码编写四、启动测试五、编写业务 一、依赖 添加pom文件依赖 <!-- websocket--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

IDEA环境配置汇总

1、配置项目编码 2、配置运行看板Services IDEA开启并配置Services窗口 这里已经配置好了&#xff0c;如果没有&#xff0c;就点击&#xff0c;点击Run Configuration Type&#xff0c;选择所需要的&#xff0c;点击即可。 配置spring与docker看板(按照上面的方法来配置&am…

【Python】查询SQL并用柱状图展示

需求&#xff1a; 查询2022年各月订单量&#xff0c;并用柱状图展示 SQL&#xff1a; select date_format(create_time,%Y-%m) as mon ,count(distinct order_id) as ord_cnt from prod.order_info where date_format(create_time,%Y-%m) between 2022-01 and 2022-12 group…

Mac OS装Windows系统开启虚拟化

目录 引言前提macOS开启虚拟化mac下的Windows开启虚拟化双系统开启虚拟化修改启动管理程序开启虚拟化 注意事项 引言 在开发工作中&#xff0c;很多软件需要用到virtual box&#xff0c;但是使用virtual box需要开启虚拟化&#xff0c;而有些苹果笔记本虚拟化是关闭的&#xf…

【GitHub】一条命令快速部署 Kubernetes(k8s) 集群的工具-sealos

Sealos 是一个GitHub上优秀的开源项目&#xff0c;目前项目点赞数已达&#xff1a;10.2k&#xff0c;核心特性&#xff1a; 管理集群生命周期下载和使用完全兼容 OCI 标准的分布式应用定制化分布式应用Sealos Cloud 项目开源协议&#xff1a;Apache-2.0 项目主开发语言&…

NSS [SWPUCTF 2022 新生赛]funny_web

NSS [SWPUCTF 2022 新生赛]funny_web 账号NSS 密码2122693401 私货不去细细研究了&#xff0c;直接看题。 num不等于12345&#xff0c;但是intval&#xff08;num&#xff09;等于12345 ①intval():可以获取变量的整数值intval()中有一个特性&#xff0c;其中若传入1e4&…

tensorboard与torchinfo的使用

目录 1. tensorboard1.1 本地使用1.2 远程服务器使用 2. torchinfoRef 1. tensorboard 1.1 本地使用 只需要掌握一个 torch.utils.tensorboard.writer.SummaryWriter 接口即可。 在初始化 SummaryWriter 的时候&#xff0c;通常需要指定log的存放路径。这个路径默认是 runs/…

Python脚本小工具之文件与内容搜索

目录 一、前言 二、代码 三、结果 一、前言 ​日常工作中&#xff0c;经常需要在指定路径下查找指定类型的文件&#xff0c;或者是指定内容的查找&#xff0c;在window环境中&#xff0c;即可以使用一些工具如notepad或everything&#xff0c;也可以使用python脚本。但在l…

【C++进阶】bitset位图介绍以及模拟实现

文章目录 位图介绍一、位图的引入二、位图的概念 位图模拟实现一、构造函数二、set&#xff0c;reset&#xff0c;test函数三、代码测试四、完整代码 位图介绍 一、位图的引入 先来看下边一道面试题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符…

SAR ADC version2 ——ADC背景介绍

目录&#xff1a; ADC常用指标分类 静态性能&#xff1a;微分非线性&#xff1a;DNL 积分非线性&#xff1a;INL 仿真测试DNL&#xff1a;&#xff08;码密度法&#xff09;&#xff08;code density&…

OpenCV 入门教程:像素访问和修改

OpenCV 入门教程&#xff1a;像素访问和修改 导语一、像素访问1.1 获取图像的大小1.2 访问图像的像素值1.3 修改图像的像素值 二、示例应用2.1 图像反转2.2 阈值化操作 三、总结 导语 在图像处理和计算机视觉领域&#xff0c;像素级操作是非常重要和常见的任务之一。通过像素访…

Python——将F12得到的请求头转换成其对应json格式

问题引入 最近在鼓捣爬虫准备爬爬学校网站&#xff0c;用到pthon的requests库发送get请求时需要提供headers. 需要将请求头转换成json格式的数据。json格式如下所示 headers{"Path":"xxx","User-Agent":"xxx" } 但是从网页上f12复…

21-注册中心与配置中心Nacos

已经使用过了Spring cloud提供的Geteway、openFeign。 1、注册中心与配置中心 1.1、注册中心 相当于通讯录,让应用之间相互认识。 用途: 实例的健康检查。 路由转发:为了控制成本,会对机器做动态扩容,此时IP就不固定了。 远程调用。 1.2、配置中心 动态修改线上的配…

深入解析MySQL视图、索引、数据导入导出:优化查询和提高效率

目录 1. 视图&#xff08;View&#xff09;&#xff1a; 什么是视图&#xff1f; 为什么要使用视图&#xff1f; 视图的优缺点 1) 定制用户数据&#xff0c;聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 …