【最优化方法】无约束优化问题(函数梯度、下降方向、最优性)

本文主要是介绍【最优化方法】无约束优化问题(函数梯度、下降方向、最优性),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 下降方向
  • 下降方向与梯度关系
  • 例题
    • 偏导数
    • 方向导数
    • 梯度(导数)
    • 下降方向
  • 最优性条件
    • 一阶必要条件
    • 二阶必要条件
    • 二阶充分条件
    • 无约束凸规划的最优性条件

我们把一元方程推广到 n n n 维无约束极小化问题,得到解无约束优化问题

min ⁡ x ∈ R n f ( x ) \min_{x\in\mathbf{R}^n}f(x) xRnminf(x)

下降方向

f ( x ) f(x) f(x) 为定义在空间 R n \mathbf{R}^n Rn 上的连续函数,点 x ˉ ∈ R n \bar{x}\in\mathbf{R}^n xˉRn,若对于方向 s ∈ R n s\in\mathbf{R}^n sRn 存在数 δ > 0 \delta>0 δ>0 使成立
f ( x ˉ + α s ) < f ( x ˉ ) , ∀ α ∈ ( 0 , δ ) , f(\bar{x}+\alpha s)<f(\bar{x}),\:\forall\:\alpha\in(0,\delta), f(xˉ+αs)<f(xˉ),α(0,δ),

则称 s 为 f ( x ) f(x) f(x) x ˉ \bar x xˉ 处的一个下降方向,在点 x ˉ \bar x xˉ 处的所有下降方向的全体记为 D ( x ˉ ) . \mathcal{D}(\bar{x}). D(xˉ).

下降方向与梯度关系

设函数 f ( x ) f(x) f(x) 在点 x ˉ \bar x xˉ 处连续可微,如存在非零向量 s ∈ R n s \in R^n sRn 使成立
∇ f ( x ˉ ) T s < 0 \nabla f(\bar x)^T s < 0 f(xˉ)Ts<0

则称向量 s s s f ( x ) f(x) f(x) x ˉ \bar x xˉ 处的一个下降方向

证明:对于充分小的 α > 0 \alpha > 0 α>0,将 f ( x ˉ + α s ) f(\bar x + \alpha s) f(xˉ+αs) 在点 x ˉ \bar x xˉ 处作 Taylor 展开,有
f ( x ˉ + α s ) = f ( x ˉ ) + α ∇ f ( x ˉ ) T s + o ( ∣ ∣ α s ∣ ∣ ) f(\bar x + \alpha s) = f(\bar x) + \alpha \nabla f(\bar x)^Ts + o(||\alpha s||) f(xˉ+αs)=f(xˉ)+αf(xˉ)Ts+o(∣∣αs∣∣)

α > 0 \alpha>0 α>0 以及 ∇ f ( x ˉ ) T s < 0 \nabla f(\bar{x})^{\mathrm{T}} s<0 f(xˉ)Ts<0 知存在 δ > 0 \delta>0 δ>0, 使对任意 α ∈ ( 0 , δ ) \alpha \in(0, \delta) α(0,δ)
α ∇ f ( x ˉ ) T s + o ( ∥ α s ∥ ) < 0. \alpha \nabla f(\bar{x})^{\mathrm{T}} s+o(\|\alpha s\|)<0 . αf(xˉ)Ts+o(αs)<0.

结合这两式有
f ( x ˉ + α s ) < f ( x ˉ ) , ∀ α ∈ ( 0 , δ ) , f(\bar{x}+\alpha s)<f(\bar{x}), \quad \forall \alpha \in(0, \delta), f(xˉ+αs)<f(xˉ),α(0,δ),

这就证明了 s s s f ( x ) f(x) f(x) 在点 x ˉ \bar{x} xˉ 处的下降方向.
D ( x ˉ ) = { s ∣ ∇ f ( x ˉ ) T s < 0 } \mathcal{D}(\bar{x})=\left\{s \mid \nabla f(\bar{x})^{\mathrm{T}} s<0\right\} D(xˉ)={sf(xˉ)Ts<0}

记号:
g ( x ) = ∇ f ( x ) G ( x ) = ∇ 2 f ( x ) g(x) = \nabla f(x) ~~~~~ G(x) = \nabla^2 f(x) g(x)=f(x)     G(x)=2f(x)

例题

偏导数

求函数偏导数
f ( x , y ) = { x y x 2 + y 2 ( x , y ) ≠ ( 0 , 0 ) 0 ( x , y ) = ( 0 , 0 ) f(x,y) = \begin{cases} \large{\frac{xy}{x^2+y^2}} & (x,y)≠(0,0) \\\\ 0 & (x,y)=(0,0) \end{cases} f(x,y)= x2+y2xy0(x,y)=(0,0)(x,y)=(0,0)

先求函数对 x x x 的偏导数 f x f_x fx
f x = y ( x 2 + y 2 ) − 2 x ⋅ x y ( x 2 + y 2 ) 2 = y ( y 2 − x 2 ) ( x 2 + y 2 ) 2 x ≠ 0 f x = f ( x , 0 ) − f ( 0 , 0 ) x = 0 x → 0 , y = 0 f_x = \frac{y(x^2+y^2)-2x·xy}{(x^2+y^2)^2} = \frac{y(y^2-x^2)}{(x^2+y^2)^2} \quad \quad x ≠ 0 \\ f_x = \frac{f(x,0)-f(0,0)}{x} = 0 \quad \quad \quad \quad x \rightarrow 0,y = 0 \\ fx=(x2+y2)2y(x2+y2)2xxy=(x2+y2)2y(y2x2)x=0fx=xf(x,0)f(0,0)=0x0y=0

同理求 f y f_y fy
f y = x ( x 2 + y 2 ) − 2 y ⋅ x y ( x 2 + y 2 ) 2 = x ( x 2 − y 2 ) ( x 2 + y 2 ) 2 y ≠ 0 f y = f ( 0 , y ) − f ( 0 , 0 ) y = 0 y → 0 , x = 0 f_y = \frac{x(x^2+y^2)-2y·xy}{(x^2+y^2)^2} = \frac{x(x^2-y^2)}{(x^2+y^2)^2} \quad \quad y ≠ 0 \\ f_y = \frac{f(0,y)-f(0,0)}{y} = 0 \quad \quad \quad \quad y \rightarrow 0,x = 0 \\ fy=(x2+y2)2x(x2+y2)2yxy=(x2+y2)2x(x2y2)y=0fy=yf(0,y)f(0,0)=0y0x=0

故:
f x = { y ( y 2 − x 2 ) ( x 2 + y 2 ) 2 x ≠ 0 0 x = 0 f y = { x ( x 2 − y 2 ) ( x 2 + y 2 ) 2 y ≠ 0 0 y = 0 f_x = \begin{cases} \large \frac{y(y^2-x^2)}{(x^2+y^2)^2} & x ≠ 0 \\ 0 & x = 0 \\ \end{cases} \quad \quad f_y = \begin{cases} \large \frac{x(x^2-y^2)}{(x^2+y^2)^2} & y ≠ 0 \\ 0 & y = 0 \\ \end{cases} fx= (x2+y2)2y(y2x2)0x=0x=0fy= (x2+y2)2x(x2y2)0y=0y=0

方向导数

求函数 f ( x , y ) = x 2 − x y + y 2 f(x,y)=x^2-xy+y^2 f(x,y)=x2xy+y2 在点 ( 1 , 1 ) (1, 1) (1,1) 沿于 x x x 轴方向夹角为 α \alpha α 的方向射线 l ⃗ \vec{l} l 的方向导数,并问在怎样的方向上此方向导数有:(1)最大值;(2)最小值;(3)等于零?

解:
∂ f ∂ l = f x ( 1 , 1 ) ⋅ c o s α + f y ( 1 , 1 ) ⋅ s i n α = ( 2 x − y ) ∣ ( 1 , 1 ) ⋅ c o s α + ( 2 y − x ) ∣ ( 1 , 1 ) ⋅ s i n α = c o s α + s i n α = 2 s i n ( α + π 4 ) \begin{aligned} \frac{\partial f}{\partial l} & = f_x(1,1)·cos\alpha +f_y(1,1)·sin\alpha \\ & = (2x-y)|_{(1,1)}·cos\alpha +(2y-x)|_{(1,1)}·sin\alpha \\ & = cos\alpha + sin\alpha = \sqrt2sin(\alpha + \frac{\pi}{4}) \end{aligned} lf=fx(1,1)cosα+fy(1,1)sinα=(2xy)(1,1)cosα+(2yx)(1,1)sinα=cosα+sinα=2 sin(α+4π)

故:

(1)当 α = π 4 \alpha = \frac{\pi}{4} α=4π 时,方向导数达到最大值 2 \sqrt 2 2

(2)当 α = 5 π 4 \alpha = \frac{5\pi}{4} α=45π 时,方向导数达到最小值 − 2 -\sqrt 2 2

(3)当 α = 3 π 4 \alpha = \frac{3\pi}{4} α=43π α = 7 π 4 \alpha = \frac{7\pi}{4} α=47π 时,方向导数等于 0 0 0

梯度(导数)

求函数 u = x 2 + 2 y 2 + 3 z 2 + 3 x − 2 y u = x^2 + 2y^2 + 3z^2 + 3x - 2y u=x2+2y2+3z2+3x2y 在点 ( 1 , 1 , 2 ) (1,1,2) (1,1,2) 处的梯度,并在哪些点处梯度为零?

解:
f x = 2 x + 3 , f y = 4 y − 2 , f z = 6 z f_x = 2x+3,f_y=4y-2,f_z=6z fx=2x+3fy=4y2fz=6z ∇ u ( x , y , z ) = ∂ u ∂ x i ⃗ + ∂ u ∂ y j ⃗ + ∂ u ∂ z k ⃗ = ( 2 x + 3 ) i ⃗ + ( 4 y − 2 ) j ⃗ + ( 6 z ) k ⃗ \nabla u(x,y,z) = \frac{\partial u}{\partial x} \vec{i} + \frac{\partial u}{\partial y} \vec{j} + \frac{\partial u}{\partial z} \vec{k} = (2x+3)\vec{i} + (4y-2)\vec{j} + (6z)\vec{k} u(x,y,z)=xui +yuj +zuk =(2x+3)i +(4y2)j +(6z)k ∇ u ( 1 , 1 , 2 ) = ( 2 × 1 + 3 ) i ⃗ + ( 4 × 1 − 2 ) j ⃗ + ( 6 × 2 ) k ⃗ = 5 i ⃗ + 2 j ⃗ + 12 k ⃗ \nabla u(1,1,2) = (2×1+3)\vec{i} + (4×1-2)\vec{j} + (6×2)\vec{k} = 5\vec{i} + 2\vec{j} + 12\vec{k} u(1,1,2)=(2×1+3)i +(4×12)j +(6×2)k =5i +2j +12k

故函数在点 ( 1 , 1 , 2 ) (1,1,2) (1,1,2) 处的梯度为 5 i ⃗ + 2 j ⃗ + 12 k ⃗ 5\vec{i} + 2\vec{j} + 12\vec{k} 5i +2j +12k .

f x = f y = f z = 0 f_x=f_y=f_z=0 fx=fy=fz=0, 得 x = − 3 2 , y = 1 2 , z = 0 x=-\frac{3}{2},y=\frac{1}{2},z=0 x=23y=21z=0,因此函数在点 P 0 ( − 3 2 , 1 2 , 0 ) P_0(-\frac{3}{2},\frac{1}{2},0) P0(23,21,0) 处梯度为零.

下降方向

确定线性函数 f ( x ) = 2 x 1 − x 2 + 3 x 3 f(x) = 2x_1 − x_2 + 3x_3 f(x)=2x1x2+3x3 的所有下降方向。请问这样的下降方向是否同所在点的位置有关?

函数 f ( x ) f(x) f(x) 的梯度为:

∇ f ( x ) = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ∂ f ∂ x 3 ] T = [ 2 − 1 3 ] T \nabla f(x) = {\large \begin{bmatrix} \frac{\partial f}{\partial x_1} & \frac{\partial f}{\partial x_2} & \frac{\partial f}{\partial x_3} \end{bmatrix}}^T= \begin{bmatrix} 2 & -1 &3 \end{bmatrix} ^T f(x)=[x1fx2fx3f]T=[213]T
一个下降方向 s s s,满足 ∇ f ( x ˉ ) T s < 0 \nabla f(\bar x)^T s < 0 f(xˉ)Ts<0,所以我们找到向量 s s s 使得
[ 2 − 1 3 ] [ s 1 s 2 s 3 ] < 0 \begin{bmatrix} 2 & -1 & 3 \end{bmatrix} \begin{bmatrix} s_1 \\ s_2 \\ s_3 \end{bmatrix} < 0 [213] s1s2s3 <0
满足的条件是 s = [ s 1 s 2 s 3 ] s = \begin{bmatrix} s_1 \\ s_2 \\ s_3 \end{bmatrix} s= s1s2s3 满足 2 s 1 − s 2 + 3 s 3 < 0 2s_1 - s_2 + 3s_3 < 0 2s1s2+3s3<0

故满足条件的所有向量 s s s 为线性函数 f ( x ) = 2 x 1 − x 2 + 3 x 3 f(x) = 2x_1 − x_2 + 3x_3 f(x)=2x1x2+3x3 的所有下降方向。

并且,下降方向同所在点的位置无关。

最优性条件

下述所有条件使用 Taylor 展开即可证明

一阶必要条件

f : D ⊂ R n → R 1 f:D\subset\mathbf{R}^n\to\mathbf{R}^1 f:DRnR1 在开集 D D D 上连续可微, 若 x ∗ ∈ D x^*\in D xD f f f 的局部极小点,则
g ( x ∗ ) = 0 g(x^{*})=0 g(x)=0
称满足一阶必要条件 g ( x ∗ ) = 0 g(x^*) = 0 g(x)=0 的点为稳定点(也称为驻点);

稳定点分为三种类型:极大值点、极小值点、鞍点。

二阶必要条件

f : D ⊂ R n → R 1 f:D\subset\mathbf{R}^n\to\mathbf{R}^1 f:DRnR1 在开集 D D D 上二阶连续可徽,若 x ∗ ∈ D x^*\in D xD f f f 的局部极小点,则 g ( x ∗ ) = 0 g(x^{*})=0 g(x)=0 G ( x ∗ ) ⩾ 0 G(x^{*})\geqslant0 G(x)0 为半正定矩阵。

二阶充分条件

f : D ⊂ R n → R 1 f:D\subset\mathbf{R}^n\to\mathbf{R}^1 f:DRnR1 在开集 D D D 上二阶连续可微,则 x ∗ ∈ D x^*\in D xD f f f 的一个严格局部极小点的充分条件是 g ( x ∗ ) = 0 g(x^*)=0 g(x)=0 G ( x ∗ ) G(x^*) G(x) 是正定矩阵

无约束凸规划的最优性条件

​ 设 f : D ⊂ R n → R 1 f:D\subset\mathbf{R}^n\to\mathbf{R}^1 f:DRnR1 在开集 D D D 上连续可微, 则 x ∗ ∈ D x^*\in D xD f f f 的全局极小点 ⇔ g ( x ∗ ) = 0 \Leftrightarrow g(x^{*})=0 g(x)=0

这篇关于【最优化方法】无约束优化问题(函数梯度、下降方向、最优性)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/560578

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱