KTT条件

2023-05-16

以下都是个人理解,刚刚有点理解,所以可能表达不清楚……但是又想把一些理解表达出来,故写了这篇


上篇文章说了,拉格朗日乘子法,可以在等式约数的条件下,求得某函数f的极大或极小值,但是,等式约束只是不等式约束中的特例,如果我们遇到了不等式约束,该怎么办呢?(其实理解了拉格朗日乘子法后,KTT就贼NM简单了)

本文不打算怎么放图了,感觉完全可以接着上一篇继续搞!

首先,对于等式约数,我们可以看成我们自变量可以取的点组成的几条线,也就是约束函数在某高度上的等高线。不过约束换成了不等式约束以后,此时约束就可能由“线”变成了面。

但是,看上去需要考虑的取值变多了,其实不然:
其实把约束由等式变为不等式,对于每个不等式约束,我们要处理的也只有两种情况:

  1. 要优化函数的极小值点就在约束内
  2. 要优化函数的极小值点在约束外

第一种情况最好处理——直接无视掉,因为:既然极小值都在约束内了,那么这个约束就如同虚设一般。
第二种情况呢?都已经知道极值在约束外头了,那就不可能往约束里面找了,所以我们至于要考虑约束的边界,其实就是那条熟悉的等高线……所以对于第二种情况,我们可以转化为等式约束的求极值,也就是用前一章所说的东西解决、、、

但是还有问题:我怎么知道极小值是在约束内还是约束外……

其实这个问题挺好解决的,不过首先我们需要把所有的约束条件都统一一下,比如统一改成 g ( x , y , . . . ) &lt; = 0 g(x,y,...)&lt;=0 g(x,y,...)<=0的形式,至于为什么、、、一会就清楚了

先看看约束吧,比如对于一个约束 g ( x , y ) &lt; = 0 g(x,y)&lt;=0 g(x,y)<=0,我们先看看它的边界,也就是 g ( x , y ) = 0 g(x,y)=0 g(x,y)=0,随机取一个满足条件的 ( x , y ) (x,y) (x,y),求 g ( x , y ) g(x,y) g(x,y)在这里的梯度。由于我们的约束都统一过,所以不难想象,这时的梯度向量的方向肯定是指向约束外而不是约束内
在这里插入图片描述
比如图中浅红色区域代表 g ( x , y ) = x 2 + y 2 − 4 &lt; = 0 g(x,y) = x^2+y^2-4&lt;=0 g(x,y)=x2+y24<=0,黑圆就是约束边界,箭头是梯度向量,根据约束来看,边界的高度(值)都是0,如果继续顺着梯度走,那么肯定会跳出约束范围,所以梯度指向为约束外。

然后我们再考虑要优化函数在约束边界任意一点的梯度方向,如果梯度方向和约束的梯度方向夹角都小于90度,也就是都指向约束外面,则要优化函数的极小值一定在约束内(该约束可以忽略),反之则在约束外。

OK,现在我们可以来看看怎么求得极值了、
F ( x , y , . . . ) = f ( x , y , . . . ) + ∑ λ i g i ( x , y , . . . ) F(x,y,...) = f (x,y,...)+ \sum \lambda_i g_i(x,y,...) F(x,y,...)=f(x,y,...)+λigi(x,y,...)

首先,不等式约束可以间接为等式约束,并且可行解一定在约束边界上
则有 ▽ f + ∑ λ i ▽ g i = 0 \bigtriangledown f + \sum \lambda_i \bigtriangledown g_i = 0 f+λigi=0,也就是我们上一篇说的梯度共线。
不过需要满足: λ i g i = 0 \lambda_i g_i=0 λigi=0

解释如下:
上面说了,对于某个约束,可行解可能落在约束内,也可能落在约束外。
如果落在约束内,则这个约束可以忽略掉,此时令 λ i = 0 \lambda_i=0 λi=0约去这个约束;而如果可行解在约束外,此时我们要考虑的是约束边界,此时有 g ( x , y , . . . ) = 0 g(x,y,...) = 0 g(x,y,...)=0
总结一下就是 λ i g i = 0 \lambda_i g_i=0 λigi=0

对于 λ i \lambda_i λi还有一些限制,因为要求梯度共线,所以目标函数梯度方向和约束函数的梯度方向只能相同和相反,结合上面所说,只有这两个向量夹角大于90度(此时也就是共线,方向相反),这个约束才有用,故有 λ i &gt; 0 \lambda_i &gt;0 λi>0 ,而刚才说了可行解可能落在约束内有 λ i = 0 \lambda_i =0 λi=0 ,总结一下就是 λ i &gt; = 0 \lambda_i&gt;=0 λi>=0

总的来看:对于
m i n x f ( x , . . . ) s . t . &MediumSpace;&MediumSpace; h i ( x ) = 0 , i = 1 , 2 , 3 , . . . , m . &ThinSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&ThickSpace;&ThickSpace; g j ( x ) ⩽ 0 , j = 1 , 2 , 3 , . . . , n \underset{x}{min} f(x,...) \\ s.t.\: \: h_i(x) = 0 , i = 1,2,3,...,m\\ . \, \: \: \: \: \; \; g_j(x) \leqslant 0 , j = 1,2,3,...,n xminf(x,...)s.t.hi(x)=0,i=1,2,3,...,m.gj(x)0,j=1,2,3,...,n

F ( x , μ , λ ) = f ( x ) + ∑ μ i h i ( x ) + ∑ λ j g j ( x ) F(x,\mu ,\lambda )=f(x) + \sum \mu _i h_i(x) + \sum \lambda _j g_j(x) F(x,μ,λ)=f(x)+μihi(x)+λjgj(x)
解方程:
{ ▽ x F ( x , μ , λ ) = 0 h i ( x ) = 0 &MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace; g j ( x ) ⩽ 0 &MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace; λ j g j = 0 &MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&MediumSpace; λ j ⩾ 0 &MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace; \left\{\begin{matrix} \bigtriangledown_x F(x,\mu ,\lambda ) = 0 \\ h_i(x) = 0\: \: \: \: \: \: \: \: \: \: \: \: \: \\ g_j(x) \leqslant 0 \: \: \: \: \: \: \: \: \: \: \: \: \: \\ \lambda_j g_j = 0 \: \: \: \: \: \: \, \, \, \, \, \, \, \, \, \, \, \, \: \\ \lambda_j \geqslant 0 \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \:\: \end{matrix}\right. xF(x,μ,λ)=0hi(x)=0gj(x)0λjgj=0λj0


例子:
对于 m i n &MediumSpace; min\: min f ( x , y ) = x 2 + y 2 f(x,y) = x^2 + y^2 f(x,y)=x2+y2 s . t . &MediumSpace;&MediumSpace; s.t. \: \: s.t. h ( x , y ) = x + y + 2 ⩽ 0 h(x,y) = x + y + 2 \leqslant 0 h(x,y)=x+y+20
在这里插入图片描述
F = f + λ h F = f + \lambda h F=f+λh
则有
∂ F ∂ x = ∂ f ∂ x + ∂ g ∂ x = 2 x + λ = 0 \frac{\partial F}{\partial x} = \frac{\partial f}{\partial x} + \frac{\partial g}{\partial x} = 2x + \lambda = 0 xF=xf+xg=2x+λ=0
∂ F ∂ y = ∂ f ∂ y + ∂ g ∂ y = 2 y + λ = 0 \frac{\partial F}{\partial y} = \frac{\partial f}{\partial y} + \frac{\partial g}{\partial y} = 2y + \lambda = 0 yF=yf+yg=2y+λ=0
解得 x = y x = y x=y
x + y + 2 = 2 x + 2 ⩽ 0 ⇒ x ⩽ − 1 x + y + 2 = 2x + 2 \leqslant 0 \Rightarrow x \leqslant -1 x+y+2=2x+20x1
且要满足 λ h = 0 \lambda h = 0 λh=0,且 λ = − 2 x \lambda = - 2x λ=2x。故 − 2 x × ( 2 x + 2 ) = 0 -2x \times (2x + 2) = 0 2x×(2x+2)=0
解得 { x = 0 ( 舍 去 ) &MediumSpace;&MediumSpace;&MediumSpace;&MediumSpace; x = − 1 ( 满 足 ) \left\{\begin{matrix} x = 0 (舍去) \:\:\:\: \\ x = -1(满足) \end{matrix}\right. {x=0()x=1()
λ = 2 ⩾ 0 \lambda = 2 \geqslant 0 λ=20
故在 x = − 1 , y = − 1 x = -1, y = -1 x=1,y=1时, f ( x , y ) = ( − 1 ) 2 + ( − 1 ) 2 = 2 f(x,y) = (-1)^2 + (-1)^2 = 2 f(x,y)=(1)2+(1)2=2为所求极小值


参考资料:
约束优化方法之拉格朗日乘子法与KKT条件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KTT条件 的相关文章

  • 详细描述虚拟机安装JDK并配置环境变量的全过程

    Linux虚拟机安装JDK步骤 1 登录虚拟机以后查看防火墙状态 xff0c 要求关闭防火墙 查看防火墙指令 xff1a systemctl status firewalld 禁用防火墙指令 xff1a systemctl disable
  • 多线程经典练习题

    线程练习题 1 用共享资源的方式实现 生产者 仓库 消费者的模式 注意线程安全 线程通信 span class token keyword public span span class token keyword class span sp
  • 目标检测1——YOLO数据标注以及xml转为txt文件脚本实战

    目录 1 数据标注 2 xml批量转为txt文件 1 数据标注 利用Yolov5进行目标检测的过程中 我们需要对数据进行标注 这里我们利用的是labelImg脚本进行数据标注的 labelImg主要用于yolov5数据标注工具 深度学习文档
  • JSON数据清理(详解)

    二 JSON数据清洗 1 JSON数据 仅以两条数据为例 span class token number 1593136280858 span span class token operator span span class token
  • Spark-SQL常用内置日期时间函数

    Spark SQL常用内置日期时间函数 一 获取当前时间 1 current date 获取当前日期时间格式 xff1a yyyy MM dd spark span class token punctuation span span cla
  • Java连接hive

    注意 xff1a 需要开启hive服务 首先建一个maven工程 xff0c 导入依赖包导pom xml span class token tag span class token tag span class token punctuat
  • 基于 Mapnik 的地图服务器

    目录 一 简介二 安装 PostgreSQL 数据库和 PostGIS 扩展三 下载地图样式表和上传地图数据四 将地图数据导入 PostgresSQL五 生成 Mapnik Stylesheet六 安装 mapnik七 地图生成1 安装 E
  • Linux 添加互信

    一 添加主机列表 span class token function vi span etc hosts 添加内容 ip1 hoatnmae1 ip2 hoatnmae2 ip3 hoatnmae3 二 秘钥分发 2 1 生成秘钥 ssh
  • Python升级后 yum 无法正常使用

    问题 xff1a 原因 xff1a 这是因为 yum 采用 Python 作为命令解释器 xff0c 这可以从 usr bin yum 文件中第一行 usr bin python 发现 而 python 版本之间兼容性不太好 xff0c 使
  • CDH开启高可用后,NameNode主备节点切换

    查看nn1的状态 hdfs haadmin getServiceState nn1 span class token comment standby span hdfs haadmin getServiceState nn2 span cl
  • git分支从master切换到main

    git分支从master切换到main 背景 本地当前分支为master xff0c 远程仓库为main xff0c 且远程仓库与本地仓库有 unrelated histories这样的问题 xff0c 如远程仓库有README md但本地
  • Docker学习第三天——Docker网络

    文章目录 摘要Linux 网络命名空间Docker bridge网络容器之间的Link容器的端口映射容器网络之host和none多容器复杂应用的部署多机器通信 摘要 Docker学习之旅第三天 Docker 网络 看完这篇文章将收获dock
  • 大津阈值法(OTSU)功能实现

    具体的公式推导参见冈萨雷斯 数字图像处理 Otsu方法又称最大类间方差法 xff0c 通过把像素分配为两类或多类 xff0c 计算类间方差 xff0c 当方差达到最大值时 xff0c 类分割线 xff08 即灰度值 xff09 就作为图像分
  • cas-server服务端搭建

    1 下载cas服务代码 xff0c https github com apereo cas overlay template tree 5 3 2 使用idea工具打开cas overlay template 5 3包 xff0c 使用ma
  • 自适应阈值canny边缘检测(功能实现)

    学习记录 1 概述 canny边缘检测是一种特别常用且性能优秀的边缘检测算法 xff0c 相比于普通的边缘检测算法 xff0c canny获得的边缘较细且具有连续的边缘轮廓 xff0c 为之后的一系列图像处理带来极大的便利 canny边缘检
  • OpenCV实现图像基础频率域滤波

    写在前面 xff1a 刚开始接触数字图像处理频率域滤波时 xff0c 很是陌生 xff0c 感觉这个技术使用范围很窄 xff0c 不如空域直接处理来的实在 xff0c 最近看书发现有些情况又不得不在频率域中进行操作 xff0c 个人感觉图像
  • OpenCV实现同态滤波

    同态滤波是属于图像增强的一个小算法 xff0c 其原理和代码实现在众多博客中均有提及 xff0c 再此 xff0c 只对学习中一些自认为有用的知识点进行总结 实现和学习过程中的一些总结 xff1a 同态滤波类似于灰度变换 xff0c 都是对
  • OpenCV实现击中击不中变换和形态学细化

    1 击中击不中变换 1 1 HMT概述 形态学Hit or Miss是形状检测基本工具 xff0c 只要结构元设置得当 xff0c 就可以检测一些基本的形状图案 xff0c HMT变换只能作用于二值图像 xff0c 结构元 xff08 核
  • OpenCV综合练习1——水瓶水位线合格检测

    数字图像处理综合练习 水瓶水位线合格检测 马上就要转到学习深度学习的主干线了 xff0c 这也是大势所趋 xff0c 但不能忘本 xff0c 传统图像处理的知识也是非常重要的 xff0c 特此记录一下之前学习时做过的小练习 整个项目的资源放

随机推荐

  • 目标检测学习1——iou计算与非极大值抑制NMS

    刚开始学习目标检测 xff0c 都是在学习一些经典的目标检测框架 xff0c 个人认为在大量阅读和理解别人现成的代码时 xff0c 也要懂得去动手模仿 xff0c 尝试着去修改别人的代码 xff0c 即使是自己抄一遍别人的代码 xff0c
  • OpenCV实现按指定间隔抽取视频中的图像帧

    习惯了C 43 43 语言的OpenCV突然用Python语言OpenCV还是感觉有点不适应 xff0c 但是慢慢在写的过程中 xff0c 觉得Python语言的风格也挺美的 但自己的写的还是很丑 xff0c 晚上回宿舍的剩余时间 xff0
  • 深度估计berHu损失函数和语义分割带权值交叉熵损失函数

    深度估计berHu损失函数和语义分割带权值交叉熵损失函数 最近在做联合深度估计和语义分割的深度学习算法 xff0c 深度估计默认使用的是L1 loss xff0c 语义分割使用的是普通的交叉熵损失函数 xff0c 继续改进模型对于指标的提升
  • 游览器是如何工作的

    游览器是如何工作的 浏览器的主要功能浏览器的主要构成一次网络请求浏览器发生了什么 xff1a 如果请求使用了HTTPS那么流程会有什么不同 xff1f 总结 浏览器的主要功能 浏览器的主要功能是将用户选择得web资源呈现出来 xff0c 它
  • OSG QT 完整附加依赖项(.lib)

    OSG QT 完整附加依赖项 lib 可在VS等需要添加附加依赖项的环境使用 注 xff1a OSG版本 xff1a 3 6 4 xff1b QT版本 xff1a 5 9 8 带d的为debug xff0c 不带d的release省掉了Qt
  • Ubuntu登陆账户后自动运行VNCserver

    问题 xff1a 远程桌面时 xff0c 如果重启远程Ubuntu xff0c 则VNC会话失效 解决 xff1a 一个解决的方法就是用putty将重启的Ubuntu登陆入账户后 xff0c 再开启VNC会话 为了方便 xff0c 可以设置
  • RAP与RARP原理

    ARP与RARP都属于网络层协议 xff0c 但是他们是为了解决链路层的帧转发问题 xff0c ARP的功能是将IP解析成MAC地址 xff0c 而RARP则相反 ARP 地址解析协议 xff08 Address Resolution Pr
  • eyeshot官方样例说明

    Eyeshot 12 例子 1 wings拖动按钮改变机翼的尺寸参数 xff0c 并导出到step文件 2 snaptogrid鼠标画平面 xff0c 类似于CATIA的多段线功能 3 sceneeditor控制灯光点和变换位置 xff0c
  • Python爬虫实现获取股票信息并保存到文件(亲测可运行)

    主要参考了北京理工大学嵩天老师的视频 xff0c 因老师所讲的网址已做更改 xff0c 将获取股票列表信息和股票价格的网站做了更改 xff0c 用到了beautiful soup库 xff0c re库 xff0c requests库 xff
  • 为什么要内存对齐?

    CPU访问非对齐的内存时为何需要多次读取再拼接 xff1f 首先简单说一下何为内存对齐 例如 xff0c 当cpu需要取4个连续的字节时 xff0c 若内存起始位置的地址可以被4整除 xff0c 那么我们称其对齐访问 反之 xff0c 则为
  • 读AQS源码-关于shouldParkAfterFailedAcquire函数的返回值

    先上源码 final boolean acquireQueued final Node node int arg boolean failed 61 true try boolean interrupted 61 false for fin
  • 读AQS源码-关于同步队列与锁的公平性

    先上部分源码 xff1a public final void acquire span class token punctuation span int arg span class token punctuation span span
  • FreeRTOS 正点原子教程学习笔记

    正点原子视频教程 FreeRTOS 教程非常详细 xff09 小知识 如果创建了任务却完全空着 xff0c 没有while xff08 1 xff09 延时 的话 xff0c 整个程序会卡住 xff0c 其他正常的任务无法运行 如果任务里单
  • 数据分析之Matplotlib(一)简介

    Matplotlib简介 Matplotlib是一个Python 2D绘图库 xff0c 可以生成各种硬拷贝格式和跨平台的交互式环境的出版物质量数据 Matplotlib可用于Python脚本 xff0c Python和IPython sh
  • 【2018-AAAI】Spatial As Deep: Spatial CNN for Traffic Scene Understanding

    概述 提出了SCNN语义分割网络 xff0c 将传统的深度逐层卷积推广到特征图中的逐片卷积 xff0c 在同一特征图的行和列上做信息传递 xff0c 可有效识别强先验结构的目标 此外论文还发布了一个大型的车道线检测数据集CULane Dat
  • 安装Code Blocks时出现can‘t find compiler的解决方法

    安装Code Blocks时出现can t find compiler的解决方法 1 首先我们要下载Code Blocks xff0c 我们可以去官方网站下载https www codeblocks org xff0c 或者直接点击该链接跳
  • OSPF网路拓扑结构(rfc2328)

    OSPF网路拓扑结构 xff08 rfc2328 xff09 OSPF rfc文档 xff08 rfc2328 xff09 中的拓扑结构对理解OSPF分区 区域内路由 区域边界路由 自治系统边界路由等基本概念很有帮助 并且整个文档打大部分内
  • Win10下使用WinSCP+PuTTY实现远程文件操作和终端访问

    Win10下使用WinSCP 43 PuTTY实现远程文件操作和终端访问 0 软件安装 安装WinSCP xff0c 参考官网安装PuTTY xff0c 从这个页面下载 1 WinSCP使用技巧 1 1 连接到远程主机 如下图所示 xff0
  • KVM创建的虚拟机创建快照、查看以及恢复

    KVM虚拟机要使用快照功能 xff0c 磁盘格式必须为qcw2如果不满足qcw2 xff0c 可以参考下面的链接进行修改 xff1a https www jianshu com p f6cc295a2108 创建快照方法 xff1a 创建快
  • KTT条件

    以下都是个人理解 xff0c 刚刚有点理解 xff0c 所以可能表达不清楚 但是又想把一些理解表达出来 xff0c 故写了这篇 上篇文章说了 xff0c 拉格朗日乘子法 xff0c 可以在等式约数的条件下 xff0c 求得某函数f的极大或极