SVM原问题与对偶问题

目的:求出我们的f(X),它代表着我们X映射到多维的情况,能够帮我们在多维中招到超平面进行分类。

1.优化问题:

1.1推荐好书:
在这里插入图片描述
1.2 优化理论中的原问题:

原问题和限制条件如下:
在这里插入图片描述
这是一个泛化性非常强的条件,为什么?
因为,我们在f函数前面加-就等于它的最大化了,包括限制条件也是,普适性非常强
在这里插入图片描述

1.3我们将原问题对应到对偶问题:

首先定义一个函数L:(本质上就是一个拉格朗日乘数,目的是在一些限制条件下求出极值)。
然后明确变量:w,α,β 三种。
α向量:跟我们原问题中的gi(w)维度一样,i属于1~N,那么α属于N维向量。
β向量:跟原问题中的hi(w)维度一样,属于N维向量。
在这里插入图片描述
1.4 接下来就是对偶问题的定义:

inf: 求里面那个括号的最小值。
具体操作: 在限定α,β的条件下(每确定一个α和β),遍历所有的w求得最小值,然后再根据外面的α和β求得θ的最大值。
限定条件: α的每一个分量>=0
在这里插入图片描述
1.5 对偶问题和原问题的关系:

目的
在这里插入图片描述
提供下界保证
对偶问题给原问题提供下界保证

根据以下的w如果是原问题的解,【原问题的解(也就是上述的极小值)】,a和β*为对偶问题的解。

在这里插入图片描述
证明原问题和对偶问题的关系

首先明确f(w*)中的w为原问题中的解,f为原问题。
其次既然w
满足原问题中的解,那么限制条件就满足。
然后我们将带入w的原问题的限制条件带入对偶问题的公式中则有:
对偶问题的定义
gi(w
)为原问题中的限制条件,>=0.
hi(w*)为原问题中的限制条件,=0.
最后将对偶问题的限制条件αi,>=0.得出结果:
f(w*)>=θ(α*,β*)的证明结果

G:原问题和对偶问题的间距(本质上也是证明了原问题和对偶问题之间的关系)

在一些特定的情况下,G=0,原问题=对偶问题(也就是我们的强对偶定理)
在这里插入图片描述

1.6 由原问题和对偶问题的关系衍生到强对偶定理:

在这里插入图片描述

这样意味着什么呢? 说明对偶问题的解就是原问题的解,在公式上的结论如下:

原问题=对偶问题的结论
说明αi或者gi必定等于0(这也就是KKT条件,解决强对偶问题的条件)
在这里插入图片描述
演化为强对偶问题后,我们就能利用对偶问题去处理原问题的解。

2.如何将原问题化解为对偶问题

2.1 首先是明确定义:

首先,我们利用强对偶问题解决原问题,前提条件是原问题函数是一个凸函数。

然后明确定义,原问题f(w):求最大d那个。
其次是限制条件:对样本进行分类【yi(标签值)[权重向量通过函数映射到高维的X]+偏置】。
在这里插入图片描述

2.2 为什么原问题的函数一定要凸函数?

因为我们通过凸函数能够得到一个唯一的极值!【结论】,我们利用数学的方式给予证明【过程】:

在这里插入图片描述
我们将一个关于凸函数几何的问题转换成一个多维问题的解释【代数形式的定义】:
在这里插入图片描述

2.3 如何减少偏差?

目的:对比原题的最小化和约束条件,我们需要修改为标准形式。
1、首先得到减少误差后的对偶函数限制条件: 我们将左边的 gi(w) 转变为右侧的两条限制条件。
如何减少误差
**2、然后是对偶问题的转化:**我们带入对偶问题函数 L(w),将 w 转换为 w,α,β参数带入得:
原对偶函数
3、在减少误差环境下的新对偶函数:
在减少误差环境下的新对偶函数
4、如何减少对偶问题的函数:

我们需要寻找到能得到使L最小化结果的参数 w,γ,b
在这里插入图片描述
考研的知道,多元函数求极值【对变量求偏导令其为0即可求解】:
对参数求偏导图
然后我们将求偏导的式子代入回原式的 θ(α,β) 函数中,得:
带入原式子后的结果
发现我们用对偶问题不知不觉消掉了函数:
在这里插入图片描述
最后得到结论θ(α,β):

在这里插入图片描述
5.限制条件为什么是这个?
结合之前的对偶函数限制条件:
在这里插入图片描述
和之前推导减少误差后的θ函数公式的过程可得:
减少误差后的θ函数的限制条件
6.明确新函数的未知与已知:

kernel核函数都给定了,而α是未知变量

在这里插入图片描述

3.回到我们之前的测试流程求参数:

在这里插入图片描述
我们只要知道整个整体的情况,就 不需要知道单个升维函数,如下图所示,我们直接将W的转置代入如上测试函数中,得:
在这里插入图片描述
可以发现,我们无需函数,只要kernel核函数即可。这样我们的WT9(x)函数就出来了。

那么如何求b?

我们可以把所有αi(不等于0和C的)带入b的式子中求b,得到所有b的值后,然后求b的平均值。
求出b的值

4.总结

1. 训练流程:
1.输入训练数据
2.求的 θ(α) 函数(SMO函数进行求解)
3.算 b
会发现整个训练流程只出现了Kernel而没有那个升维函数。——> 把无限维的fai函数变成有限的计算
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/332386.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础(八):计算机基础概论

本篇博客简单介绍计算机的基础知识,为后续学习做个铺垫。 目录 一、计算机的基本组成 1.1 计算机组成五大部件 1.1.1 运算器(Arithmetic Logic Unit,ALU) 1.1.2控制器 (Control Unit,CU) …

网络工程师---第三十八天

ISIS: ISIS含义:中间系统到中间系统IS-IS。 ISIS特点:①内部网关协议IGP(Interior Gateway Protocol),用于自治系统内部; ②IS-IS也是一种链路状态协议,使用最短路径优先SPF算法进…

【spring】@ResponseBody注解学习

ResponseBody介绍 ResponseBody 是一个Spring框架中的注解,主要用于Web开发,特别是在Spring MVC框架中。它的核心作用是改变Spring MVC处理HTTP请求响应的行为,使得从控制器方法返回的数据直接写入HTTP响应体(Response Body&…

多环境和前后多环境实战

文章目录 一.多环境1.1 什么是多环境1.2 多环境分类1.2.1 本地环境(自己的电脑)1.2.2 开发环境(远程开发)1.2.3 测试环境1.2.4 预发布环境1.2.5 正式环境1.2.6 沙箱环境(实验环境) 1.3 如何实现1.3.1 抽象配…

引流500+创业粉,抖音口播工具

在抖音平台运营一个专注于口播的工具号,旨在集结超过500位热衷于创业的粉丝,这需要精心筹划的内容策略和周到的运营计划。首先,明确你的口播工具号所专注的领域,无论是分享创业经验、财务管理技巧还是案例分析,确保你所…

NL6621 实现获取天气情况

一、主要完成的工作 1、建立TASK INT32 main(VOID) {/* system Init */SystemInit();OSTaskCreate(TestAppMain, NULL, &sAppStartTaskStack[NST_APP_START_TASK_STK_SIZE -1], NST_APP_TASK_START_PRIO); OSStart();return 1; } 2、application test task VOID TestAp…

外卖小程序开发指南:从源码开始构建高效的外卖平台

今天,笔者将为您详细讲解如何从源码开始构建一个高效的外卖小程序,帮助您快速进入这一蓬勃发展的市场。 一、需求分析与设计 需求分析包括: 1.用户需求 2.市场需求 3.技术需求 二、前端开发 以下是开发步骤: -使用微信开发…

【论文阅读】Prompt Fuzzing for Fuzz Driver Generation

文章目录 摘要一、介绍二、设计2.1、总览2.2、指导程序生成2.3、错误程序净化2.3.1、执行过程净化2.3.2、模糊净化2.3.3、覆盖净化 2.4、覆盖引导的突变2.4.1、功率调度2.4.2、变异策略 2.5、约束Fuzzer融合2.5.1、论据约束推理2.5.1、模糊驱动融合 三、评估3.1、与Hopper和OSS…

使用梦畅闹钟,结合自定义bat、vbs脚本等实现定时功能

梦畅闹钟-每隔一段时间运行一次程序 休息五分钟bat脚本(播放音乐视频,并锁屏) chcp 65001 echo 回车开始休息5分钟 pause explorer "https://www.bilibili.com/video/BV1RT411S7Tk/?p47" timeout /t 3 /nobreak rundll32.exe use…

变分自动编码器(VAE)深入理解与总结

本文导航 0 引言1 起源1.1 自编码器的任务定义1.2 自编码器存在的问题1.3 VAE的核心思路 2 VAE的建模过程2.1 VAE的任务定义2.2 真实分布 ϕ \phi ϕ是什么,为什么要逼近这个分布的参数,如何做?2.3 “重参数化(Reparameterization…

前端开发工程师——数据可视化

canvas canvas绘制线段 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthd…

渗透工具CobaltStrike工具的下载和安装

一、CobalStrike简介 Cobalt Strike(简称为CS)是一款基于java的渗透测试工具&#xff0c;专业的团队作战的渗透测试工具。CS使用了C/S架构&#xff0c;它分为客户端(Client)和服务端(Server)&#xff0c;服务端只要一个&#xff0c;客户端可有多个&#xff0c;多人连接服务端后…

CST初级教程 六

本篇教程将以差分线为例&#xff0c;实例讲解参数化建模及参数扫描。 一 Project创建 点击New and Recent&#xff0c;再点击New Template 点击MICROVAVES & RF/OTICAL&#xff0c;然后在选中Circuit & Components。 点击对话框中Next按钮&#xff0c;在弹出对话框…

WPF之容器标签之Canvas布局标签

Canvas: 定义一个区域&#xff0c;可在其中使用相对于 Canvas 区域的坐标以显式方式来定位子元素。 实例 可以在子标签使用Canvas属性设置定位 <Canvas Width"500" Height"300"><StackPanel Width"100" Height"100"Backgro…

【C#】未能加载文件或程序集“CefSharp.Core.Runtime.dll”或它的某一个依赖项。找不到指定的模块。

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景错误提示分析原因解决方法Chromium知识点相关文章 背景 最近在使…

c语言:模拟strlen(三种方法)最全版本

1.计数的方法 #include <stdio.h> #include <assert.h> int my_strlen(const char * str)//const的使用优化 {int count0;assert(str)while(*str){count;str;}return count; } 2.用指针的方法&#xff08;指针-指针&#xff09; #include <stdio.h> #incl…

unity开发Hololens 制作滑动框

一定要做到最后一步&#xff0c;才会有效果 1、创建空物体 ,并添加组件 创建空物体 命名ScrollingObjectCollection&#xff0c; 添加组件如下图 下面是各个组件展开的内容 2、在ScrollingObjectCollection 下面创建两个空物体&#xff0c;分别命名Container、Clipping…

MT3040 矩形覆盖

代码&#xff1a; #include <bits/stdc.h> using namespace std; typedef long long ll; const int N 3e5 10; int n, ans, d, w; stack<int> s; // 单调栈 // 如果楼高度类似121&#xff08;凸&#xff0c;两边相等&#xff0c;中间比两边的大&#xff09;&…

学 Python 具体能干什么?

Python 是一种功能强大、用途广泛的编程语言&#xff0c;因其简洁易读的语法和丰富的库生态系统而备受欢迎。学习 Python后&#xff0c;你可以从事以下几方面的工作&#xff1a; 1. Web 开发 Python 有很多流行的 Web 框架&#xff0c;如&#xff1a; Django&#xff1a;一个…