凸函数成立的一阶与二阶条件

2024-03-13 18:48

本文主要是介绍凸函数成立的一阶与二阶条件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 1、凸函数成立的一阶条件
      • 2、凸函数成立的二阶条件

   本文主要是针对凸函数成立的一阶和二阶充要条件进行描述和简单证明。

1、凸函数成立的一阶条件

【定理1】对于函数 J : Ω → R J:\Omega \rightarrow \mathbb{R} J:ΩR J J J为凸函数,当且仅当 ∀ x , y ∈ Ω \forall \bf{x},\bf{y}\in \Omega x,yΩ,有
J ( y ) ≥ J ( x ) + ▽ J ( x ) T ( y − x ) . J({\bf y})\ge J({\bf x})+\triangledown J({\bf x})^{\rm T}(\bf{y}-\bf{x}). J(y)J(x)+J(x)T(yx).

【证明】
(1)必要性证明。
z = t y + ( 1 − t ) x = x + t ( y − x ) {\bf z}=t {\bf y}+(1-t){\bf x}={\bf x}+t(\bf y-x) z=ty+(1t)x=x+t(yx),由于 J J J为凸函数,因此
J [ x + t ( y − x ) ] ≤ t J ( y ) + ( 1 − t ) J ( x ) , J[{\bf x}+t({\bf y-x})]\le tJ({\bf y})+(1-t)J({\bf x}), J[x+t(yx)]tJ(y)+(1t)J(x),进一步有
J ( y ) ≥ J ( x ) + lim ⁡ t → 0 J [ x + t ( y − x ) ] − J ( x ) t , J({\bf y})\ge J({\bf x})+\lim_{t\rightarrow 0}\frac{J[{\bf x}+t({\bf y-x})] -J({\bf x})}{t}, J(y)J(x)+t0limtJ[x+t(yx)]J(x),
J ( y ) ≥ J ( x ) + ▽ J ( x ) T ( y − x ) . J({\bf y})\ge J({\bf x})+\triangledown J({\bf x})^{\rm T}(\bf{y}-\bf{x}). J(y)J(x)+J(x)T(yx).

(2)充分性证明。
z = θ y + ( 1 − θ ) x {\bf z}=\theta {\bf y}+(1-\theta){\bf x} z=θy+(1θ)x,将
J ( x ) ≥ J ( z ) + ▽ J ( z ) T ( x − z ) J({\bf x})\ge J({\bf z})+\triangledown J({\bf z})^{\rm T}(\bf{x}-\bf{z}) J(x)J(z)+J(z)T(xz) J ( y ) ≥ J ( z ) + ▽ J ( z ) T ( y − z ) J({\bf y})\ge J({\bf z})+\triangledown J({\bf z})^{\rm T}(\bf{y}-\bf{z}) J(y)J(z)+J(z)T(yz)分别乘以 1 − θ 1-\theta 1θ θ \theta θ,则有
θ J ( y ) + ( 1 − θ ) J ( x ) ≥ J ( z ) + θ ▽ J ( z ) T [ θ y + ( 1 − θ ) x − z ] = J ( z ) \theta J({\bf y})+(1-\theta)J({\bf x})\ge J({\bf z})+\theta \triangledown J({\bf z})^{\rm T}[\theta {\bf y}+(1-\theta) {\bf x}-{\bf z}]=J({\bf z}) θJ(y)+(1θ)J(x)J(z)+θJ(z)T[θy+(1θ)xz]=J(z)由此可以得到
J [ θ y + ( 1 − θ ) x ] ≤ θ J ( y ) + ( 1 − θ ) J ( x ) . J[\theta {\bf y}+(1-\theta){\bf x}]\le \theta J({\bf y})+(1-\theta)J({\bf x}). J[θy+(1θ)x]θJ(y)+(1θ)J(x).

2、凸函数成立的二阶条件

【定理2】对于函数 J : Ω → R J:\Omega \rightarrow \mathbb{R} J:ΩR J J J为凸函数,当且仅当 ∀ x ∈ Ω \forall {\bf x} \in \Omega xΩ,其Hessian矩阵 ▽ 2 J ( x ) \triangledown^2J({\bf x}) 2J(x)半正定。

【证明】

(1)必要性证明。
根据泰勒级数展开,对于小的实数 λ > 0 \lambda>0 λ>0,我们可以得到
J ( x + λ d ) = J ( x ) + λ ▽ J ( x ) T d + λ 2 2 d T ▽ 2 J ( x ) T d + o ( ∣ ∣ λ d ∣ ∣ 2 ) J({\bf x+\lambda d})=J({\bf x})+\lambda\triangledown J({\bf x})^{\rm T}{\bf d}+\frac{\lambda^2}{2}{\bf d}^{\rm T}\triangledown^2 J({\bf x})^{\rm T}{\bf d}+{\mathcal o}(||\lambda{\bf d}||^2) J(x+λd)=J(x)+λJ(x)Td+2λ2dT2J(x)Td+o(λd2)
由于 J J J为凸函数,根据定理1有
J ( x + λ d ) ≥ J ( x ) + λ ▽ J ( x ) T d J({\bf x+\lambda d})\ge J({\bf x})+\lambda\triangledown J({\bf x})^{\rm T}{\bf d} J(x+λd)J(x)+λJ(x)Td因此, λ 2 2 d T ▽ 2 J ( x ) T d + o ( ∣ ∣ λ d ∣ ∣ 2 ) ≥ 0 \frac{\lambda^2}{2}{\bf d}^{\rm T}\triangledown^2 J({\bf x})^{\rm T}{\bf d}+{\mathcal o}(||\lambda{\bf d}||^2)\ge 0 2λ2dT2J(x)Td+o(λd2)0
将上式除以 λ 2 \lambda ^2 λ2并使得 λ → 0 + \lambda \rightarrow 0^+ λ0+,可以得到对于任意的 d ∈ R n : d T ▽ 2 J ( x ) T d ≥ 0 {\bf d} \in {\mathbb R^n}:{\bf d}^{\rm T}\triangledown^2 J({\bf x})^{\rm T}{\bf d}\ge 0 dRn:dT2J(x)Td0

(2)充分性证明。
J ( y ) = J ( x ) + ▽ J ( x ) T ( y − x ) + 1 2 ( y − x ) T ▽ 2 J ( x ) T ( y − x ) J({\bf y})=J({\bf x})+\triangledown J({\bf x})^{\rm T}({\bf y}-{\bf x})+\frac{1}{2}({\bf y}-{\bf x})^{\rm T}\triangledown^2 J({\bf x})^{\rm T}({\bf y}-{\bf x}) J(y)=J(x)+J(x)T(yx)+21(yx)T2J(x)T(yx)由于Hessian矩阵半正定,因此
J ( y ) ≥ J ( x ) + ▽ J ( x ) T ( y − x ) J({\bf y})\ge J({\bf x})+\triangledown J({\bf x})^{\rm T}({\bf y}-{\bf x}) J(y)J(x)+J(x)T(yx)由定理1可证 J J J为凸函数。


【参考文献】
[1] S.Boyd etc., Convex Optimization.
[2] Yaron Singer, Lecture 10, AM 221: Advanced Optimization.

这篇关于凸函数成立的一阶与二阶条件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco

使用条件变量实现线程同步:C++实战指南

使用条件变量实现线程同步:C++实战指南 在多线程编程中,线程同步是确保程序正确性和稳定性的关键。条件变量(condition variable)是一种强大的同步原语,用于在线程之间进行协调,避免数据竞争和死锁。本文将详细介绍如何在C++中使用条件变量实现线程同步,并提供完整的代码示例和详细的解释。 什么是条件变量? 条件变量是一种同步机制,允许线程在某个条件满足之前进入等待状态,并在条件满

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

notepad++ 正则表达式多条件查找替换

基础语法参考: https://www.cnblogs.com/winstonet/p/10635043.html https://www.linuxidc.com/Linux/2019-05/158701.htm   通常情况下我们查找的内容和要被替换掉的内容是一样的,我们只需要使用正则表达式精确框定查找内容,替换直接输入要替换的内容即可。 但有时会比较复杂,查找的内容,只需要替换其中

FPGA开发:条件语句 × 循环语句

条件语句 if_else语句 if_else语句,用来判断是否满足所给定的条件,根据判断的结果(真或假)决定执行给出的两种操作之一。 if(表达式)语句; 例如: if(a>b) out1=int1; if(表达式)         语句1; else         语句2; 例如: if(a>b)out1=int1;elseout1=int2; if(表达式1) 语句1; els

Kernel 中MakeFile 使用if条件编译

有时需要通过if  else来选择编译哪个驱动,单纯的obj-$(CONFIG_)就不是很方便,下面提供两种参考案例: 案例一: 来源:drivers/char/tpm/Makefileifdef CONFIG_ACPItpm-y += tpm_eventlog.o tpm_acpi.oelseifdef CONFIG_TCG_IBMVTPMtpm-y += tpm_eventlog.o

shell循环sleep while例子 条件判断

i=1# 小于5等于时候才执行while [ ${i} -le 5 ]doecho ${i}i=`expr ${i} + 1`# 休眠3秒sleep 3doneecho done 参考 http://c.biancheng.net/cpp/view/2736.html