拉格朗日乘数法和KKT条件的直观解释

article/2025/10/3 8:37:59

拉格朗日乘数法和KKT条件的直观解释

标签(空格分隔): 机器学习

linbin 2018-05-10


Abstract

在SVM的推导中,最优化问题是其中的核心,这里我们简单介绍下最优化问题,特别是带有约束的最优化问题,并且引入拉格朗日乘数法和广义拉格朗日乘数法,介绍并且直观解释了KKT条件,用于解决带约束的最优化问题。

最优化问题

我们在高中,包括在高数中都会经常遇到求解一个函数的最小值,最大值之类的问题,这类问题就是属于最优化问题。比如给出下列一个不带有约束的最优化问题:
(1.1)
其中的

3x2+4x+5 3 x 2 + 4 x + 5
我们称为目标函数(objective function)。这样的问题,直接利用罗尔定理(Rolle’s theorem)求出其鞍点,又因为其为凸函数而且可行域是整个R,求出的鞍点便是最值点,这个是对于无约束最优化问题的解题套路。
如果问题带有约束条件,那么就变得不一样了,如:
(1.2)

因为此时的约束条件是仿射函数(affine function),所以可以利用换元法将x表示为y的函数,从而将目标函数变为无约束的形式,然后利用罗尔定理便可以求出最值点了。
然而如果约束条件一般化为g(x,y)=c,那么x就不一定可以用其他变量表示出来了,这个时候就要利用拉格朗日乘数法(Lagrange multipliers )了。

拉格朗日乘数法(Lagrange multipliers)

我们先一般化一个二元最优化问题为(2.1)形式:

(2.1)

将目标函数f(x,y)和等式约束条件g(x,y)=c画出来就如下图所示:

其中的f(x,y)虚线为等高线,而红线为g(x,y)=c这个约束函数曲线与f(x,y)的交点的连线在x−y平面的映射。其中,假设有d3>d2>d1, d1点为最小值点(最优值点)。从直观上可以发现,在g(x,y)=c与f(x,y)的非最优化交点A,B,C,D上,其f(x,y)和g(x,y)的法线方向并不是共线的,注意,这个相当关键,因为如果不是共线的,说明g(x,y)=c与f(x,y)的交点中,还存在可以取得更小值的点存在。对于A点来说,B点就是更为小的存在。因此,我们从直觉上推论出只有当g(x,y)=c与f(x,y)的法线共线时,才是最小值点的候选点(鞍点)。推论到多元变量的问题的时候,法线便用梯度表示。于是,我们有原问题取得最优值的必要条件:

(2.2)其中的λ表示两个梯度共线。
可以简单的变形为

让我们去掉梯度算子,得出

这个时候λ取个负号也是不影响的,所以式子(2.4)通常写作:

看!我们得出了我们高数中经常见到的等式约束下的拉格朗日乘数函数的表示方法。

多约束的拉格朗日乘数法

以上,我们讨论的都是单约束的拉格朗日乘数法,当存在多个等式约束时(其实不等式约束也是一样的),我们进行一些推广。先一般化一个二元多约束最小化问题:

对于每个目标函数和约束配对,我们有:

将上式相加有:

定义多约束的拉格朗日函数为:

因为λi是常数,表示共线的含义而已,所以乘上一个常数

1N 1 N
也不会有任何影响,我们仍然用λ i表示,因此式子(2.8)变成:

这就是多约束拉格朗日乘数法的函数表达形式

一个计算例子

让我们举一个单约束的拉格朗日乘数法的计算例子,例子来源于引用3。
给出一个最大化任务:

图像如:

广义拉格朗日乘数法(Generalized Lagrange multipliers)



为了接下来的讨论方便,我们将N设为3,并且去掉等式约束,这样我们的最小化问题的广义拉格朗日函数就变成了:

绘制出来的示意图如下所示:

引用

  1. 拉格朗日乘子法如何理解? 知乎
  2. 《统计学习方法》 豆瓣
  3. 《【直观详解】拉格朗日乘法和KKT条件》 微信公众号
  4. 《解密SVM系列(一):关于拉格朗日乘子法和KKT条件》 CSDN
  5. Karush–Kuhn–Tucker conditions wikipedia
  6. 拉格朗日乘数法和KKT条件的直观解释

http://chatgpt.dhexx.cn/article/RkjolP70.shtml

相关文章

[Math Algorithm] 拉格朗日乘数法

https://www.cnblogs.com/maybe2030/p/4946256.html 阅读目录 1. 拉格朗日乘数法的基本思想2. 数学实例3. 拉格朗日乘数法的基本形态4. 拉格朗日乘数法与KKT条件 拉格朗日乘数法(Lagrange Multiplier Method)之前听数学老师授课的时候就是一知半解&…

每天五分钟机器学习算法:拉格朗日乘数法和KKT条件

KKT条件 当我们要求一个函数的极值,同时还有两种类型的约束条件,一种约束条件是等式约束,另外一种约束是不等式约束: x是一个变量(n维,n个样本),我们想要找到使得f(x)最大的x,还要满足上面的约束。此时KKT条件就出来说话了,如果要想让x满足这个条件下的f(x)的最大…

拉格朗日乘数法及python实现拉格朗日乘数法

拉格朗日乘数法(Lagrange Multiplier Method)基本思想 作为一种优化算法,拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(nk&am…

SVM(一):拉格朗日乘数法详解

目录 what直观理解法高数书上的解法 学习SVM的过程中遇到了这个拉格朗日乘数法,之前学高数的时候也学过,不过看到视频里的直观理解法和高数书上的解法有些不同,于是在这里把这两种方法记录下来,也当做是一次理解的过程。 what 先…

拉格朗日乘数法什么时候考虑端点?解得的点是什么?

问题提出 2013年的真题有一道题是用拉格朗日乘数法只能求出来一个点,当时很费解,因此查阅相关资料后,对这部分的知识做一个小总结。 无条件极值和条件极值 首先,在求无条件极值的时候,我们求的是曲面上的极值点。 例…

拉格朗日乘数法的原理,我用10幅图把它讲清楚

机器学习是一个目标函数优化问题,给定目标函数f,约束条件会有一般包括以下三类: 仅含等式约束仅含不等式约束等式和不等式约束混合型 当然还有一类没有任何约束条件的最优化问题 关于最优化问题,大都令人比较头疼,首先…

java 获取随机数方法,java生成随机数的三种方法

随机数有三种生成方式: 1、通过Math.random()方法 2、通过System.currentTimeMillis()方法获取毫秒数 3、通过Random类 第一种:常用方法Math.random()方法,是获取0-1之间的double类型的小数,在通过int类型墙砖即可 示例&#xff1…

Java生成随机数的方式

目录 Random基础使用优缺点分析 SecureRandom基础使用 总结:持续更新 Random Random 类诞生于 JDK 1.0,它产生的随机数是伪随机数,也就是有规则的随机数。Random 使用的随机算法为 linear congruential pseudorandom number generator (LGC)…

Java 生成随机数的 5 种方式,你知道几种?

点击上方“码农突围”,马上关注 这里是码农充电第一站,回复“666”,获取一份专属大礼包 真爱,请设置“星标”或点个“在看” 作者:专职跑龙套链接:https://www.jianshu.com/p/2f6acd169202 1. Math.random(…

java 生成随机数 (Random函数)

目录 一、Random是什么? 二、使用步骤 1.引入库 2.创建对象 3.生成随机数 4.完整代码 总结 一、Random是什么? 生成随机数函数 二、使用步骤 1.引入库 代码如下: import java.util.Random; 2.创建对象 代码如下: R…

Java中生成随机数的4种方式!

在 Java 中,生成随机数的场景有很多,所以本文我们就来盘点一下 4 种生成随机数的方式,以及它们之间的区别和每种生成方式所对应的场景。 1.Random Random 类诞生于 JDK 1.0,它产生的随机数是伪随机数,也就是有规则的…

谈论SQL注入攻击的重要性

"SQL注入”是一种利用未过滤/未审核用户输入的攻击方法(“缓存溢出”和这个不同),意思就是让应用运行本不应该运行的SQL代码。黑客或者恶搞的用户,利用了程序开发人员在开发的时候没有对SQL进行严格的处理而造成的漏洞&#…

【SQL注入攻击介绍】

目录 前言 本质和危害 分类 注入一般步骤 注入实战 前言 sql注入一直以来都稳居owasp-top10榜首,近年来更是爆出很多的数据库泄露攻击事件,如最近上海某公安存在数据库泄露事件。今天简单的分析以下sql注入的一些特性和方式: owasp-t…

SQL注入攻击与防护

目录 一、SQL注入攻击概述 1.1 SQL注入概念 1.1.1 标准查询过程 1.1.2 SQL注入定义 1.2 SQL注入根本原因 1.3 SQL注入条件 1.4 SQL注入防范 1.4.1 根本原因:过滤不严 1.4.2 安全设计原则:数据与代码分离 1.5 SQL注入流程 1.6 SQL注入分类 1.…

使用日志进行调查 - SQL 注入攻击示例

日志文件是服务器提供的非常有价值的信息。几乎所有服务器、服务和应用程序都提供某种日志记录。日志文件记录在服务或应用程序运行期间发生的事件和操作。 日志文件为我们提供了服务器行为的精确视图以及关键信息,例如何时、如何以及由谁访问服务器。此类信息可以…

Web—SQL注入攻击

文章目录 一、mysql常用语句二、SQL注入概念1. 产生原因2. 攻击分类 三、攻击流程1. 常用检测语句如何识别SQL注入2. Mysql注入常用函数3. 查询数据的核心语法4. 联合查询5. 报错注入6. 布尔盲注7. 时间盲注8. SQL注入爆库语句9. Sqlmap常用命令 四、常见防护手段及绕过方式1. …

DVWA SQL注入攻击

SQL注入原理 SQL注入就是通过SQL命令插入到web表单递交或输入域名页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在WEB表…

sql注入攻击实例mysql_SQL 注入攻击案例

一、检测注入点 二、判断是否存在 SQL 注入可能 三、数据库爆破 四、字段爆破 五、数据库表爆破 六、用户名、密码爆破 七、总结 一、检测注入点 首先,在 http://120.203.13.75:6815/?id=1 目标站点页面发现了 ?id,说明可以通过查询 id=1 的内容来获得页面。 这相当于查询语…

SQL注入攻击实战演示(附源码)

SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。大家也许都听过某某学长通过攻击学校数据库修改自己成绩的事情,这些学长们一般用的就是SQL注入方法。 文章目录: 何谓SQL注入? SQL数据库操…

SQL注入攻击入门

目录 一、SQL注入的原理 SQL注入漏洞的条件 二、SQL注入的危害 三、SQL注入的分类 1、注入点数据类型分类 (1)数字型注入 (2)字符型注入 2、注入点位置分类 3、注入方法分类 (1)布尔型注入 &…