当前位置: 首页 > 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.dtcms.com/a/309365.html

相关文章:

  • 测试平台如何重塑CI/CD流程中的质量协作新范式
  • LLM Prompt与开源模型资源(1)提示词工程介绍
  • 全新发布|知影-API风险监测系统V3.3,AI赋能定义数据接口安全新坐标
  • HTML无尽射击小游戏包含源码,纯HTML+CSS+JS
  • Redis 中 ZipList 的级联更新问题
  • Dockerfile详解 笔记250801
  • fingerprintjs/botd爬虫监听
  • Ajax笔记
  • SD-WAN在煤矿机械设备工厂智能化转型中的应用与网络架构优化
  • ansible.cfg 配置文件的常见配置项及其说明
  • AI量化模型解析黄金3300关口博弈:市场聚焦“非农数据”的GRU-RNN混合架构推演
  • 【立体标定】圆形标定板标定python实现
  • MySQL学习从零开始--第六部分
  • PyTorch 分布式训练全解析:从原理到实践
  • 数据仓库、数据湖与湖仓一体技术笔记
  • 第三章 网络安全基础(一)
  • OPENGLPG第九版学习 - 纹理与帧缓存 part2
  • linux中posix消息队列的使用记录
  • Java与Kotlin中“==“、“====“区别
  • 解锁 Grok-4 —— 技术架构、核心能力与API获取指南
  • 梯度下降的基本原理
  • 如何改变Jupyter的默认保存路径?
  • 电子邮箱域名解析原理
  • Scene as Occupancy
  • 深入剖析Spring IOC容器——原理、源码与实践全解析
  • Charles中文版抓包工具详解 实现API调试提效与流量分析优化
  • 肖特基二极管MBR0540T1G 安森美ON 低电压 高频率 集成电路IC 芯片
  • Linux 系统监控脚本实战:磁盘空间预警、Web 服务与访问测试全流程
  • 嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)
  • 60 GHz DreamHAT+ 雷达已被正式批准为“Powered by Raspberry Pi”产品