Lagrange与KKT的简易解释

2023-11-20 16:10
文章标签 解释 lagrange 简易 kkt

本文主要是介绍Lagrange与KKT的简易解释,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文将以梯度下降法的方式来解释Lagrange和KKT。

关键词:梯度下降法、等高线

基础定义

Lagrange

求解等式约束下的最优化问题

\min_x f(x), s.t. h_k(x)=0, k=1,2,...,m

Lagrange函数:L(\lambda_{1,2,...,m} ,x) = f(x) + \sum_{i=1}^m\lambda_i\cdot h_i(x)=f(x)+\lambda\cdot h(x) (1)

方程组\{\frac{\partial L}{\partial x}=0, \frac{\partial L}{\partial \lambda_1}=0 , \frac{\partial L}{\partial \lambda_2}=0, ... , \frac{\partial L}{\partial \lambda_m}=0\}的解是原问题的可能的最优解

KKT

求解不等式约束下的最优化问题

\min_x f(x) \\ s.t. h_k(x)=0, k=1,2,...,m \\ g_t(x)=0, t=1,2,...,n

Lagrange函数:L(\lambda, \mu ,x) = f(x) + \sum_{i=1}^m\lambda_i\cdot h_i(x) + \sum_{j=1}^n\mu_j\cdot g_j(x) \\=f(x)+\lambda\cdot h(x)+\mu\cdot g(x), \; \mu_j\geq0 (2)

方程组\{h_i(x)=0, g_j(x)\leq 0, \mu_j\geq0, \frac{\partial L}{\partial x}=0, \mu_j\cdot g_j=0\},即KKT条件,的解是原问题的可能的最优解

解释

梯度的定义

\lim_{\Delta x}\frac{f(x+\Delta x)-f(x)}{\Delta x}=\nabla f{f(x+\delta x)-f(x)}= {\delta x} \cdot \nabla f

等式约束

因为在最小化f(x)的同时必须要满足等式约束h(x)=0,即x的更新\delta x要满足{h(x+\delta x)-h(x)}=0= {\delta x} \cdot \nabla h,即\delta x必须要正交与h的梯度\nabla h,而要想f(x)的取得最小则更新\delta x必须无法再减小f(x)的值,即要满足{f(x+\delta x)-f(x)}=0= {\delta x} \cdot \nabla f,即\delta x必须要正交与f的梯度\nabla f,所以最小点处有\nabla h\nabla f平行,即\nabla f + \lambda \cdot \nabla h = 0 = \partial_x L,当然还要满足约束h(x)=0。

不等式约束

不等式约束的情况比等式约束复杂些,分以下两种情况讨论:

最小点处于约束空间之内

此时,不等约束相当于没有约束,此时最小化f(x),则有\nabla f + \lambda \cdot \nabla h = 0;当然,由于最小点可能有多个,仍需不等约束进行过滤,即最小点需满足\{\nabla f + \lambda \cdot \nabla h = 0=\nabla f+\lambda \cdot \nabla h+\mu \cdot \nabla g= \partial_x L, \mu = 0; \;\; h(x)= 0, g(x)\leq 0 \}

最小点不在约束空间之内

由于约束g(x)是个有上界的函数,约束下的最小点必然是在约束的上界处即g(x)=0处(由于此时f与g的梯度方向相反,所以有要求\mu\geq0),即不等约束退化为等式约束,同等式约束的分析,即此时有\{\nabla f + \lambda \cdot \nabla h + \mu \cdot \nabla g = 0= \partial_x L, \; \mu \geq 0, \; g(x) = 0, \; h(x)= 0 \}

综合

综合上述两种情况,即有\{\nabla f + \lambda \cdot \nabla h + \mu \cdot \nabla g = 0= \partial_x L, \; \mu \cdot g(x) = 0, \; \mu \geq 0, \; g(x) \leq 0, \; h(x)= 0 \},即KKT条件。

KKT的证明

 

参考资料

1. https://zhuanlan.zhihu.com/p/99945521

2. https://www.zhihu.com/question/23311674

3. https://www.cnblogs.com/sddai/p/5728195.html

 

 

 

这篇关于Lagrange与KKT的简易解释的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

嵌入式技术的核心技术有哪些?请详细列举并解释每项技术的主要功能和应用场景。

嵌入式技术的核心技术包括处理器技术、IC技术和设计/验证技术。 1. 处理器技术    通用处理器:这类处理器适用于不同类型的应用,其主要特征是存储程序和通用的数据路径,使其能够处理各种计算任务。例如,在智能家居中,通用处理器可以用于控制和管理家庭设备,如灯光、空调和安全系统。    单用途处理器:这些处理器执行特定程序,如JPEG编解码器,专门用于视频信息的压缩或解压。在数字相机中,单用途

请解释Java Web应用中的前后端分离是什么?它有哪些好处?什么是Java Web中的Servlet过滤器?它有什么作用?

请解释Java Web应用中的前后端分离是什么?它有哪些好处? Java Web应用中的前后端分离 在Java Web应用中,前后端分离是一种开发模式,它将传统Web开发中紧密耦合的前端(用户界面)和后端(服务器端逻辑)代码进行分离,使得它们能够独立开发、测试、部署和维护。在这种模式下,前端通常通过HTTP请求与后端进行数据交换,后端则负责业务逻辑处理、数据库交互以及向前端提供RESTful

OpenStack:Glance共享与上传、Nova操作选项解释、Cinder操作技巧

目录 Glance member task Nova lock shelve rescue Cinder manage local-attach transfer backup-export 总结 原作者:int32bit,参考内容 从2013年开始折腾OpenStack也有好几年的时间了。在使用过程中,我发现有很多很有用的操作,但是却很少被提及。这里我暂不直接

OpenStack实例操作选项解释:启动和停止instance实例

关于启动和停止OpenStack实例 如果你想要启动和停止OpenStack实例时,有四种方法可以考虑。 管理员可以暂停、挂起、搁置、停止OpenStack 的计算实例。但是这些方法之间有什么不同之处? 目录 关于启动和停止OpenStack实例1.暂停和取消暂停实例2.挂起和恢复实例3.搁置(废弃)实例和取消废弃实例4.停止(删除)实例 1.暂停和取消暂停实例

海龟绘图简易教程|Turtle for Python

turtle 是 python 内置的一个比较有趣味的模块,俗称 海龟绘图,它是基于 tkinter 模块打造,提供一些简单的绘图工具,海龟作图最初源自 20 世纪 60 年代的 Logo 编程语言,之后一些很酷的 Python 程序员构建了 turtle 库,让其他程序员只需要 import turtle,就可以在 Python 中使用海龟作图。 原文链接|海龟绘图简易教程 1. 基本

Zuul详细解释

Zuul 是 Netflix 开源的 API 网关,广泛用于微服务架构中。它作为系统的前置网关,主要功能包括路由、负载均衡、限流、安全性管理等。Zuul 最常见的应用场景是作为反向代理,它接收所有来自客户端的请求,并将请求转发给后端的微服务,从而屏蔽了微服务的复杂性。Spring Cloud 集成了 Zuul,使其成为 Spring Cloud 微服务生态系统中的一个重要组件。 为什么使用 Zu

GetWay详细解释

Spring Cloud Gateway 是 Spring Cloud 提供的一款全功能 API 网关,作为微服务架构中的流量管理工具,提供了统一的入口来处理来自客户端的所有请求。它具有以下功能:路由请求、限流、熔断、监控、认证与授权等。 Spring Cloud Gateway 的设计基于 Spring 5.0 和 Spring Boot 2.0,并与 Spring WebFlux 深度集成,

rtklib.h : RTKLIB constants, types and function prototypes 解释

在 RTKLIB 中,rtklib.h 是一个头文件,包含了与 RTKLIB 相关的常量、类型和函数原型。以下是该头文件的一些常见内容和翻译说明: 1. 常量 (Constants) rtklib.h 中定义的常量通常包括: 系统常量: 例如,GPS、GLONASS、GALILEO 等系统的常量定义。 时间常量: 如一年、一天的秒数等。 精度常量: 如距离、速度的精度标准。 2. 类型

使用jetty和mongodb做个简易文件系统

使用jetty和mongodb做个简易文件系统 - ciaos 时间 2014-03-09 21:21:00   博客园-所有随笔区 原文   http://www.cnblogs.com/ciaos/p/3590662.html 主题  MongoDB  Jetty  文件系统 依赖库: 1,jetty(提供http方式接口) 2,mongodb的java驱动(访问mo