当前位置: 首页 > news >正文

python学智能算法(三十))|SVM-KKT条件的数学理解

【1】引言

前序学习进程中,通过类比力的平衡对KKT条件进行了初步的理解。
今天我们更进一步,常使用数学语言进一步解释KKT条件。

【2】带约束的最小优化问题

首先定义一个即将求解的优化问题:
目标函数:最小化f(x)(x∈Rn)f(x)(x\in R^{n})f(x)(xRn)
约束条件:
不等式约束:gi(x)≤0(i=1,2,,...,m)g_{i}(x)\leq0(i=1,2,,...,m)gi(x)0(i=1,2,,...,m),一共m个
等式约束:hj(x)=0(j=1,2,,...,p)h_{j}(x)=0(j=1,2,,...,p)hj(x)=0(j=1,2,,...,p),一共p个
这个时候就仿照之前的拉格朗日函数构造方法,构造出适用的拉格朗日函数:
L(x,λ,μ)=f(x)+∑i=1mλigi(x)+∑j=1pμjhj(x)L(x,\lambda,\mu)=f(x)+\sum_{i=1}^{m}\lambda_{i}g_{i}(x)+\sum_{j=1}^{p}\mu_{j}h_{j}(x)L(x,λ,μ)=f(x)+i=1mλigi(x)+j=1pμjhj(x)
其中:
λi≥0\lambda_{i}\geq0λi0是不等式约束 gi≤0g_{i}\leq0gi0对应的拉格朗日乘子,λi\lambda_{i}λi严格非负;
μj∈R\mu_{j}\in RμjR是等式约束hj(x)=0h_{j}(x)=0hj(x)=0对应的拉格朗日乘子,μj\mu_{j}μj没有符号限制。

【2.1】局部最优解

如果x∗x^{*}x是上述问题的局部最优解,且满足约束规范,则存在乘子λ∗=(λ1∗,...,λm∗)\lambda^{*}=(\lambda_{1}^{*},...,\lambda_{m}^{*})λ=(λ1,...,λm)μ∗=(μ1∗,...,μp∗)\mu^{*}=(\mu_{1}^{*},...,\mu_{p}^{*})μ=(μ1,...,μp),是的以下五个条件同时成立:

【2.1.1】梯度为零条件

拉格朗日函数在x∗x^{*}x处满足:∇xL(x∗,λ∗,μ∗)=0\nabla_{x} L(x^{*},\lambda^{*},\mu^{*})=0xL(x,λ,μ)=0

具体展开来后:
∇f(x∗)+∑i=1mλi∗∇gi(x∗)+∑j=1pμj∗∇hj(x∗)=0\nabla f(x^{*})+\sum_{i=1}^{m}\lambda_{i}^{*}\nabla g_{i}(x^{*})+\sum_{j=1}^{p}\mu_{j}^{*}\nabla h_{j}(x^{*})=0f(x)+i=1mλigi(x)+j=1pμjhj(x)=0
换句话说,目标函数的梯度与约束梯度的加权和相平衡。

【2.1.2】不等式约束可行性

所有不等式约束在x∗x^{*}x处满足:gi(x∗)≤0(i=1,2,...,m)g_{i}(x^{*})\leq0 (i=1,2,...,m)gi(x)0(i=1,2,...,m)也就是解必须严格落在不等式约束定义的可行域内。

【2.1.3】等式约束可行性

所有等式约束在x∗x^{*}x处满足:hj(x∗)=0(j=1,2,...,p)h_{j}(x^{*})=0 (j=1,2,...,p)hj(x)=0(j=1,2,...,p)也就是解必须严格落在等式约束定义的曲面上。

【2.1.4】拉格朗日乘子非负性

不等式约束对应的乘子非负:λi∗≥0(j=1,2,...,m)\lambda_{i}^{*}\geq0 (j=1,2,...,m)λi0(j=1,2,...,m)
此时解释起来有一个形象的理解,因为gi≤0g_{i}\leq0gi0严格成立,所以λi∗≥0\lambda_{i}^{*}\geq0λi0就像在唱反调,gig_{i}gi也就是解必须严格落在等式约束定义的曲面上。
不等式约束gi(x)≤0g_{i}(x)\leq0gi(x)0定义了一个可行域,当最优解x∗x^{*}x落在某个约束的边界上,此时存在gi(x∗)=0g_{i}(x^{*})=0gi(x)=0,若xxx稍微偏离x∗x^{*}x且试图进入gi(x)>0g_{i}(x)>0gi(x)>0的区域,也就是尝试进入非可行域,约束就会阻止这种偏离,就像给xxx施加了一个指向可行域内部的“推力”。
目标函数的梯度∇f(x∗)\nabla f(x^{*})f(x)指向f(x)f(x)f(x)增长最快的方向
,对于此处求最小化的目标,我们实际上是希望xxx−∇f(x)-\nabla f(x)f(x)方向移动。如果定义梯度∇f(x∗)\nabla f(x^{*})f(x)是拉力方向,则优化方向是拉力的反方向;
而约束函数gi(x∗)g_{i}(x^{*})gi(x)的梯度指向gi(x)g_{i}(x)gi(x)增长最快的方向,实际上指向了非可行域,所以−∇gi(x∗)-\nabla g_{i}(x^{*})gi(x)才是指向可行域,而在λi∗≥0\lambda_{i}^{*}\geq0λi0的前提下,可以保障−λi∗∇gi(x∗)-\lambda_{i}^{*}\nabla g_{i}(x^{*})λigi(x)面向可行域,所以−λi∗∇gi(x∗)-\lambda_{i}^{*}\nabla g_{i}(x^{*})λigi(x)是推力的方向。

【2.1.5】互补松弛条件

乘子与不等式约束的乘积为零:
λi∗⋅gi(x∗)=0(i=1,2,...,m)\lambda_{i}^{*}\cdot g_{i}(x^{*})=0 (i=1,2,...,m)λigi(x)=0(i=1,2,...,m)
实际上有两种情况:
当约束不起作用,gi(x)≤0g_{i}(x)\leq0gi(x)0,此时必然有乘子为零即λi∗=0\lambda _{i}^{*}=0λi=0

当约束起作用,gi(x)=0g_{i}(x)=0gi(x)=0,此时必然有乘子大于零即λi∗≥0\lambda _{i}^{*}\geq0λi0

【3】总结

从数学的角度重新粗糙解读了KKT条件。

http://www.lryc.cn/news/607136.html

相关文章:

  • Git基础命令大全
  • C语言数据结构(3)单链表专题1.单链表概述
  • 【论文学习】KAG论文翻译
  • Redis 中 ZipList 的级联更新问题
  • 一篇文章读懂AI Agent(智能体)
  • Python LRU缓存应用与示例
  • 三维协同:体育场馆设计与渲染的独特挑战
  • Web开发-PHP应用TP框架MVC模型路由访问模版渲染安全写法版本漏洞
  • Au速成班-多轨编辑流程
  • 在纯servlet项目中,使用@WebFilter定义了多个filter,如何设置filter的优先级
  • 【PHP 构造函数与析构函数:从基础到高级的完整指南】
  • 【音视频】WebRTC 中的RTP、RTCP、SDP、Candidate
  • 2025年Python Web框架之争:Django、Flask还是FastAPI,谁将主宰未来?
  • HarmonyOS】鸿蒙应用开发中常用的三方库介绍和使用示例
  • 流式输出阻塞原因及解决办法
  • 位运算-面试题01.01.判定字符是否唯一-力扣(LeetCode)
  • 第三方采购流程
  • 机械学习中的一些优化算法(以逻辑回归实现案例来讲解)
  • Python----MCP(MCP 简介、uv工具、创建MCP流程、MCP客户端接入Qwen、MCP客户端接入vLLM)
  • 字节跳动招机器人数据算法研究员-Top Seed
  • 机器学习04——初识梯度下降
  • Thymeleaf 模板引擎原理
  • Java多态度(3)
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第二天(CSS)
  • Linux选择
  • van list 重复进入onload
  • 一个强大的向量数据库——Milvus
  • chroma、faiss和milvus三者之间的区别和联系
  • 浏览器无痕模式机制解析:它与正常模式究竟有何不同?
  • 热能小车cad【12张】三维图+设计说明书