数学学习——最优化问题引入、凸集、凸函数、凸优化、梯度、Jacobi矩阵、Hessian矩阵

文章目录

  • 最优化问题引入
  • 凸集
  • 凸函数
  • 凸优化
  • 梯度
  • Jacobi矩阵
  • Hessian矩阵

最优化问题引入

例如:有一根绳子,长度一定的情况下,需要如何围成一个面积最大的图像?这就是一个最优化的问题。就是我们高中数学中最常见的最值问题。

最优化问题的一般形式是:
m i n ​ f ( x ) x ∈ C min​f(x) \\ x \in C minf(x)xC
其中, f f f是目标函数, A A A是约束条件, x x x是参数值。要求解最优化问题,就是要找到一个可行解 x ∗ x^∗ x,使得对于所有的 x ∈ A x\in A xA,都有 f ( x ∗ ) ≤ f ( x ) f(x^∗)≤f(x) f(x)f(x)

最优化问题的三个基本要素是:

  • 目标函数:用来衡量结果的好坏
  • 参数值:未知的因子,需要通过数据来确定
  • 约束条件:需要满足的限制条件

凸集

定义:集合 C C C中任意两点的线 C C C中,则称集合 C C C为凸集,也即满足 ∀ x , y ∈ C , 0 ≤ 0 ≤ 1 \forall x,y\in C,0≤0≤1 x,yC,001 8 x + ( 1 − ) y ∈ C 8x+(1-)y\in C 8x+(1)yC的集合称为凸集。

凸集合就是一个集合中的任意两点之间的线段都属于这个集合,而非凸集合就是不满足这个条件的集合。

凸集合:
在这里插入图片描述
非凸集合:
在这里插入图片描述

凸函数

定义:凸函数是一种定义在凸集上的实值函数,满足任意两点连成的线段上的函数值不大于两点的函数值的加权平均。也就是说,如果 f f f是凸函数,那么对于任意 x x x y y y在定义域内,以及任意 θ θ θ ( 0 , 1 ) (0,1) (0,1)之间,有
f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y) f(θx+(1θ)y)θf(x)+(1θ)f(y)
这个不等式称为凸函数的凸性条件。如果不等式中的等号只在 x = y x=y x=y时成立,那么 f f f严格凸的。如果不等式反向成立,那么 f f f凹函数。如果 f f f既是凸函数又是凹函数,那么 f f f仿射函数

二维空间的凸函数:

import numpy as np
import matplotlib.pyplot as plt# 定义凸函数 f(x) = x^2
def f(x):return x**2# 生成x轴的数据
x = np.linspace(-5, 5, 100)# 计算y轴的数据
y = f(x)# 画出函数图像
plt.plot(x, y)# 设置坐标轴标签和标题
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('Convex Function')# 显示图像
plt.show()

在这里插入图片描述

三维空间的凸函数:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np# 定义凸函数 f(x,y) = x^2 + y^2
def f(x, y):return x**2 + y**2# 生成x和y轴的数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)# 将x和y轴数据转换为网格矩阵
X, Y = np.meshgrid(x, y)# 计算z轴的数据
Z = f(X, Y)# 创建3D图像对象
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')# 画出函数图像
ax.plot_surface(X, Y, Z)# 设置坐标轴标签和标题
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('f(x,y)')
ax.set_title('Convex Function')# 显示图像
plt.show()

在这里插入图片描述
二维空间的非凹非凸函数:

import numpy as np
import matplotlib.pyplot as plt# 定义非凹非凸函数 f(x) = sin(x) + cos(2x)
def f(x):return np.sin(x) + np.cos(2*x)# 生成x轴的数据
x = np.linspace(-5, 5, 100)# 计算y轴的数据
y = f(x)# 画出函数图像
plt.plot(x, y)# 设置坐标轴标签和标题
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('Non-convex Function')# 显示图像
plt.show()

在这里插入图片描述

三维空间的非凹非凸函数:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np# 定义非凹非凸函数 f(x,y) = sin(x) + cos(2y)
def f(x, y):return np.sin(x) + np.cos(2*y)# 生成x和y轴的数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)# 将x和y轴数据转换为网格矩阵
X, Y = np.meshgrid(x, y)# 计算z轴的数据
Z = f(X, Y)# 创建3D图像对象
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')# 画出函数图像
ax.plot_surface(X, Y, Z)# 设置坐标轴标签和标题
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('f(x,y)')
ax.set_title('Non-convex Function')# 显示图像
plt.show()

在这里插入图片描述

凸优化

凸优化是数学最优化的一个子领域,研究定义在凸集中的凸函数最小化的问题。

凸优化问题可以形式化地写成:
m i n ​ f ( x ) s . t . g i ​ ( x ) ≤ 0 , i = 1 , 2 , ⋯ , m h j ​ ( x ) = 0 , j = 1 , 2 , ⋯ , n ​ \begin{align*} min&​f(x) \\ s.t. &g_i​(x)≤0,i=1,2,\cdots,m\\ &h_j​(x)=0,j=1,2,\cdots,n​ \end{align*} mins.t.f(x)gi(x)0,i=1,2,,mhj(x)=0,j=1,2,,n

其中x为优化变量; f f f为凸目标函数; g i ​ g_i​ gi h j h_j hj​为约束函数,分别表示不等式约束和等式约束;

这个问题的意思是求解最小化目标函数 f ( x ) f(x) f(x),使得x满足不等式约束 g i ​ ( x ) ≤ 0 g_i​(x)≤0 gi(x)0和等式约束 h j ​ ( x ) = 0 h_j​(x)=0 hj(x)=0

一个凸优化问题具备如下性质:

  1. 凸优化的局部极小点就是全局极小点:
  2. 如果目标函数是严格凸函数,则凸优化问题具有唯一的全局极小点:
  3. 凸优化的全局极大点必定能在可行域的边界上达到;

梯度

它表示一个多元函数在某一点沿着最大增长方向的变化率,可以用偏导数来表示。梯度是一个向量,它的方向是函数在该点最大增长的方向,它的大小是在该方向上的增长率。梯度可以用向量微分算子(nabla)来表示。

例如:
∇ f ( x , y ) = ∂ f ∂ x i + ∂ f ∂ y j \nabla f(x,y) = \frac{\partial f}{\partial x}i+\frac{\partial f}{\partial y}j f(x,y)=xfi+yfj

Jacobi矩阵

定义: 雅可比矩阵是一个函数的一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。雅可比矩阵反映了一个函数在给定点的最佳线性逼近,类似于单变量函数的导数。如果函数是从 R n ℝ_n Rn R m ℝ_m Rm的映射,那么它的雅可比矩阵是一个 m × n m \times n m×n的矩阵,可以用以下方式定义:
J = [ ∂ f 1 ∂ x 1 ⋯ ∂ f 1 ∂ x n ⋮ ⋱ ⋮ ∂ f m ∂ x 1 ⋯ ∂ f m ∂ x n ] J = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix} J= x1f1x1fmxnf1xnfm
其中 f i ​ f_i​ fi是函数的第 i i i个分量, x j ​ x_j​ xj是第 j j j个自变量。雅可比矩阵的符号表示为 J f ​ J_f​ Jf或者 ∂ ( f 1 , ⋯ , f m ) ∂ ( x 1 , ⋯ , x m ) \frac{\partial {(f_1,\cdots, f_m)}}{\partial {(x_1,\cdots, x_m)}} (x1,,xm)(f1,,fm)。雅可比矩阵的第 i i i行是由函数 f i ​ f_i​ fi的梯度向量表示的。

举例:

设有函数 F : R 3 → R 4 F:ℝ^3 \to ℝ^4 F:R3R4,其分量为:
w = x + y + z x = x y = y z = z w=x+y+zx=xy=yz=z w=x+y+zx=xy=yz=z
雅可比矩阵是:
J ( F ) = ∣ ∂ w ∂ x ∂ w ∂ y ∂ w ∂ z ∂ x ∂ x ∂ x ∂ y ∂ x ∂ z ∂ y ∂ x ∂ y ∂ y ∂ y ∂ z ∂ z ∂ x ∂ z ∂ y ∂ z ∂ z ∣ J(F) = \begin{vmatrix} \frac{\partial w}{\partial x} & \frac{\partial w}{\partial y} & \frac{\partial w}{\partial z} \\ \frac{\partial x}{\partial x} & \frac{\partial x}{\partial y} & \frac{\partial x}{\partial z} \\ \frac{\partial y}{\partial x} & \frac{\partial y}{\partial y} & \frac{\partial y}{\partial z} \\ \frac{\partial z}{\partial x} & \frac{\partial z}{\partial y} & \frac{\partial z}{\partial z} \end{vmatrix} J(F)= xwxxxyxzywyxyyyzzwzxzyzz
将给定的函数代入上式子,得到:
J ( F ) = ∣ 1 1 1 y x 0 0 z y 0 0 1 ∣ J(F) = \begin{vmatrix} 1 & 1 & 1 \\ y & x & 0 \\ 0 & z & y\\ 0 & 0 & 1 \end{vmatrix} J(F)= 1y001xz010y1

Hessian矩阵

H e s s i a n Hessian Hessian矩阵是一个多元函数的二阶偏导数构成的方阵,用于描述函数的局部曲率。如果函数 f : R n → R f:R^n→R f:RnR在点 x x x处具有连续的二阶偏导数,那么它的 H e s s i a n Hessian Hessian矩阵 H f ​ ( x ) H_f​(x) Hf(x)定义为:
H f ( x ) = [ ∂ 2 f ∂ x 1 2 ( x ) ⋯ ∂ 2 f ∂ x 1 ∂ x n ( x ) ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ( x ) ⋯ ∂ 2 f ∂ x n 2 ( x ) ] H_f(x) = \begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2}(x) & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n}(x) \\ \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n \partial x_1}(x) & \cdots & \frac{\partial^2 f}{\partial x_n^2}(x) \end{bmatrix} Hf(x)= x122f(x)xnx12f(x)x1xn2f(x)xn22f(x)

H e s s i a n Hessian Hessian矩阵和 J a c o b i Jacobi Jacobi矩阵之间的关系是, H e s s i a n Hessian Hessian矩阵等于函数的梯度的 J a c o b i Jacobi Jacobi矩阵。也就是说,如果 f : R n → R f:Rn→R f:RnR,那么
H f ​ ( x ) = J ∇ f ​ ( x ) H_f​(x)=J_{\nabla f}​(x) Hf(x)=Jf(x)
其中 ∇ f \nabla f f表示函数f的梯度, J ∇ f ​ J_{\nabla f​} Jf表示梯度 ∇ f \nabla f f J a c o b i Jacobi Jacobi矩阵。这个关系可以从 H e s s i a n Hessian Hessian矩阵和 J a c o b i Jacobi Jacobi矩阵的定义直接得到。

举例:

有个二元函数是 f ( x , y ) = x 2 + y 2 f(x,y)=x2+y2 f(x,y)=x2+y2。它的梯度是 ∇ f ( x , y ) = ( 2 x , 2 y ) ∇f(x,y)=(2x,2y) f(x,y)=(2x,2y),它的 H e s s i a n Hessian Hessian矩阵是
J ( F ) = ∣ ∂ 2 f ∂ x 2 ( x , y ) ∂ 2 f ∂ x ∂ y ( x , y ) ∂ 2 f ∂ y ∂ x ( x , y ) ∂ 2 f ∂ y 2 ( x , y ) ∣ = ∣ 2 0 0 2 ∣ J(F) = \begin{vmatrix} \frac{\partial^2 f}{\partial x^2}(x, y) & \frac{\partial^2 f}{\partial x \partial y} (x, y)\\ \frac{\partial^2 f}{\partial y \partial x}(x, y) & \frac{\partial^2 f}{\partial y^2} (x, y) \end{vmatrix} = \begin{vmatrix} 2 & 0 \\ 0 & 2 \end{vmatrix} J(F)= x22f(x,y)yx2f(x,y)xy2f(x,y)y22f(x,y) = 2002

它的梯度的 J a c o b i Jacobi Jacobi矩阵是
J ( F ) = ∣ ∂ ∂ x ( 2 x ) ∂ ∂ y ( 2 x ) ∂ ∂ x ( 2 y ) ∂ ∂ y ( 2 y ) ∣ = ∣ 2 0 0 2 ∣ J(F) = \begin{vmatrix} \frac{\partial }{\partial x}(2x) & \frac{\partial }{\partial y}(2x) \\ \frac{\partial }{\partial x}(2y) & \frac{\partial }{\partial y}(2y) \end{vmatrix} = \begin{vmatrix} 2 & 0 \\ 0 & 2 \end{vmatrix} J(F)= x(2x)x(2y)y(2x)y(2y) = 2002
可以看出,它们是相等的。

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

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

相关文章

《Java-SE-第二十七章》之常见的锁策略

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…

Maven发布项目到Nexus私服

项目pom配置 在项目pom.xml中文件中的仓库配置&#xff0c;Nexus私服如何搭建在这里不介绍了可自行百度。 <distributionManagement><repository><id>releases</id><name>Nexus Release Repository</name><url>http://私服地址:34…

hive删除数据进行恢复

在实际开发或生产中&#xff0c;hive表如果被误删&#xff0c;如被truncate或是分区表的分区被误删了&#xff0c;只要在回收站的清空周期内&#xff0c;是可以恢复数据的&#xff0c;步骤如下&#xff1a; &#xff08;1&#xff09; 先找到被删除数据的存放目录&#xff0c;…

Linux NUMA架构(非统一内存访问)

NUMA架构 NUMA Architecture| Non Uniform Memory Access Policy/Model | Numa Node Configuration (CPU Affinity) NUMA架构产生的原因 cpu的高速处理功能和内存存储直接的速度会严重影响cpu的性能。传统的计算机单核架构,cpu通过内存总线(内存访问控制器)直接连接到一…

在CSDN学Golang云原生(Kubernetes声明式资源管理Kustomize)

一&#xff0c;生成资源 在 Kubernetes 中&#xff0c;我们可以通过 YAML 或 JSON 文件来定义和创建各种资源对象&#xff0c;例如 Pod、Service、Deployment 等。下面是一个简单的 YAML 文件示例&#xff0c;用于创建一个 Nginx Pod&#xff1a; apiVersion: v1 kind: Pod m…

使用Express部署Vue项目

使用Express部署Vue项目 目录 1. 背景 2. 配置Vue CLI 1.1 安装nodejs 1.2 创建vue-cli 1.3 创建vue项目 1.4 构建vue项目3. 配置Express 2.1 安装express 2.2 创建项目4. 使用express部署vue项目 1&#xff0c;背景 我们想要做一个前后端分离的课程项目&#xff0c;前端…

推荐两款github敏感信息搜集工具(gsil、gshark)

推荐两款github敏感信息搜集工具&#xff08;gsil、gshark&#xff09; - 云社区 - 腾讯云 (tencent.com) github敏感信息泄露是很多企业时常忽视的一个问题&#xff0c;国外有一份研究报告显示&#xff0c;在超过24,000份的GitHub公开数据中&#xff0c;发现有数千个文件中可能…

学习笔记——压力测试案例,监控平台

测试案例 # 最简单的部署方式直接单机启动 nohup java -jar lesson-one-0.0.1-SNAPSHOT.jar > ./server.log 2>&1 &然后配置执行计划&#xff1a; 新建一个执行计划 配置请求路径 配置断言配置响应持续时间断言 然后配置一些查看结果的统计报表或者图形 然后我…

数据中台系列2:rabbitMQ 安装使用之 window 篇

RabbitMQ 是一个开源的消息队列系统&#xff0c;是高级消息队列协议&#xff08;AMQP&#xff09;的标准实现&#xff0c;用 erlang 语言开发。 因此安装 RabbitMQ 之前要先安装好 erlang。 1、安装 erlang 到 这里 下载本机能运行的最新版 erlang 安装包。如果本机没有装过 …

双重for循环优化

项目中有段代码逻辑是个双重for循环&#xff0c;发现数据量大的时候&#xff0c;直接导致数据接口响应超时&#xff0c;这里记录下不断优化的过程&#xff0c;算是抛砖引玉吧~ Talk is cheap,show me your code&#xff01; 双重for循环优化 1、数据准备2、原始双重for循环3、…

Atcoder 做题记录

My OI Blog A R C 155 F \mathbb{ARC \ 155 \ F} ARC 155 F E, F 先咕着&#xff0c;做一些多项式题&#xff0c;这篇题解是我人工翻译的 [1] Double Counting 双重计数 考虑从叶子节点开始&#xff0c;用唯一的方式&#xff08;如果有的话&#xff09;来构造出一棵满足条件的树…

许战海咨询方法论系列白皮书在京隆重发布

新时代&#xff0c;面对剧烈变化的竞争环境&#xff0c;企业如何实现结构性增长&#xff1f; 7月31日&#xff0c;许战海咨询最新研究成果——《主品牌进化战略》、《第二招牌增长战略》、《链主品牌&#xff1a;制造业的竞争之王》三本核心方法论白皮书&#xff0c;重磅发布。…

稍微深度踩坑haystack + whoosh + jieba

说到django的全文检索&#xff0c;网上基本推荐的都是 haystack whoosh jieba 的方案。 由于我的需求对搜索时间敏感度较低&#xff0c;但是要求不能有数据的错漏。 但是没有调试的情况下&#xff0c;搜索质量真的很差&#xff0c;搞得我都想直接用Like搜索数据库算了。 但是…

C++设计模式之过滤器设计模式

C过滤器设计模式 什么是过滤器设计模式 过滤器设计模式是一种行为型设计模式&#xff0c;它允许你在特定的条件下对输入或输出进行过滤&#xff0c;以便实现不同的功能。 该模式有什么优缺点 优点 可扩展性&#xff1a;过滤器设计模式允许您轻松地添加、删除或替换过滤器&a…

CVPR2023新作:源数据集对迁移学习性能的影响以及相应的解决方案

Title: A Data-Based Perspective on Transfer Learning (迁移学习的基于数据的观点) Affiliation: MIT (麻省理工学院) Authors: Saachi Jain, Hadi Salman, Alaa Khaddaj, Eric Wong, Sung Min Park, Aleksander Mądry Keywords: transfer learning, source dataset, dow…

iOS 应用上架的步骤和工具简介

APP开发助手是一款能够辅助iOS APP上架到App Store的工具&#xff0c;它解决了iOS APP上架流程繁琐且耗时的问题&#xff0c;帮助跨平台APP开发者顺利将应用上架到苹果应用商店。最重要的是&#xff0c;即使没有配置Mac苹果机&#xff0c;也可以使用该工具完成一系列操作&#…

算法39:Excel 表列序号

一、需求 给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1&#xff1a; 输入: columnTitle “A” 输出: 1 示例 2&…

Minio在windows环境配置https访问

minio启动后&#xff0c;默认访问方式为http&#xff0c;但是有的时候我们的访问场景必须是https&#xff0c;浏览器有的会默认以https进行访问&#xff0c;这个时候就需要我们进行配置上的调整&#xff0c;将minio从http访问升级到https。而查看minio的官方文档&#xff0c;并…

配置IPv6 over IPv4手动隧道示例

组网需求 如图1所示&#xff0c;两台IPv6主机分别通过SwitchA和SwitchC与IPv4骨干网络连接&#xff0c;客户希望两台IPv6主机能通过IPv4骨干网互通。 图1 配置IPv6 over IPv4手动隧道组网图 配置思路 配置IPv6 over IPv4手动隧道的思路如下&#xff1a; 配置IPv4网络。配置接…

谁是全球最小ARM MCU?

先是从百度上查找的&#xff0c;找了半天&#xff0c;也找到了一部分。 大小基本在一二毫米左右&#xff0c;外设有多有少&#xff0c;但是好多都买不到货。 而且有些特别小众&#xff0c;开发环境压根没接触过。 然后去外面找了一下&#xff0c;竟然有好几个提到了HC32L110&am…