【CV-Learning】线性分类器(SVM基础)

article/2025/10/6 11:54:28

数据集介绍(本文所用)

CIFAR10数据集

包含5w张训练样本、1w张测试样本,分为飞机、汽车、鸟、猫、鹿、狗、蛙、马、船、卡车十个类别,图像均为彩色图像,其大小为32*32。

图像类型(像素表示)

  1. 二进制(0/1)

  2. 灰度图像
    一个像素由一个比特(Byte)表示,取值为0-255。
    颜色程度:黑(0)---->----->---->白(255)

  3. 彩色图像
    一张图像有红、绿、蓝三个深度,即三个通道。每个通道的一个像素都是由一个比特(Byte)表示,取值为0-255。三个深度的图像结合起来才能表示一张彩色图像。比如:图像的像素为500500,则需要500500*3的矩阵才能表示。
    颜色程度:黑(0)---->----->---->红(255)

    Ps:大多数分类算法都要求输入向量,将图像矩阵转换成向量。
    在这里插入图片描述
    故本文所用数据集的每张图片转换为向量是3072(32323)维列向量。

线性分类器

定义:线性分类器是一种线性映射,将输入的图像特征映射为类别分数
特点:形式简单,易于理解
拓展:通过层级结构(神经网络)或者高维映射(支撑向量机)可以形成功能强大的非线性模型。在小型样本情况下,常用支撑向量机;在大型样本情况下,常用神经网络。

线性分类器的决策

决策规则:
在这里插入图片描述
决策步骤:

  1. 图像表示成向量
  2. 计算当前图片每个类别的分数
  3. 按类别得分判定当前图像
    分类器的矩阵表示:
    在这里插入图片描述

线性分类器的权值向量

在这里插入图片描述

线性分类器的决策边界

在这里插入图片描述

损失函数

为了找到最优的分类模型,还需要损失函数与优化算法的帮忙。损失函数搭建了模型性能与模型参数(W,b)之间的桥梁,指导模型参数优化。

损失函数定义

损失函数是一个函数,用于度量给定分类器的预测值与真实值的不一致程度,其输出通常是一个非负实值
其输出的非负实值可以作为反馈信号来对分类器参数进行调整,以降低当前示例对应的损失值,提升分类器的分类效果。
损失值就是模型性能的描述。
在这里插入图片描述

多类支撑向量机损失

在这里插入图片描述
在这里插入图片描述

Ps:限制条件中**+1**是为了减小边界附近噪声的影响
L函数举例说明
在这里插入图片描述
计算出多个L后要求取平均值!

问题解答

  1. 多类支撑向量机损失Li的最大/最小值会是多少?
    答:最大值为无穷,最小值为0
  2. 如果初始化时w和b很小,损失L是多少?
    答:此时,Sij和Syi都很小且Sij-Syi约为0。Li和L均等于样本数量减一。该情况可以用于检测算法的正确性。
  3. 考虑所有类别(包括j=yi), 损失L,对最优参数的选择是否有影响?
    答:无影响。
  4. 在总损失L计算时,如果用求和代替平均,对最优参数的选择是否有影响?
    答:无影响。
  5. 假设存在一个W使损失函数L=0,这个W是唯一的吗?
    答:不唯一。

正则项与超参数

什么是正则项损失

防止模型在训练集上学习得太好(过拟合),可以在L上加上一个正则损失,正则项让模型有了偏好,可以在多个损失函数为0的模型参数中选出最优的模型参数,所以损失函数L可以唯一。
在这里插入图片描述

L2正则项

在这里插入图片描述

什么是超参数

开始学习过程之前设置值的参数,而不是学习得到。
超参数一般都会对模型性能有着重要的影响。
在这里插入图片描述

常用的正则项损失

在这里插入图片描述

优化算法

利用损失函数的输出值作为反馈信号来调整分类器参数,以提升分类器对训练样本的预测性能。优化目标是找到使损失函数L达到最优的那组参数W。

梯度下降算法

一种简单高效的迭代优化算法。
在这里插入图片描述

  1. 数值法
    计算量大,得到近似值,不准确。
    在这里插入图片描述
  2. 解析法
    精确值,速度快,但是导数推导容易出错。
    在这里插入图片描述
    问:数值梯度有什么作用?
    求梯度时一般使用解析梯度,而数值梯度主要用于解析梯度的正确性校验(梯度检查)。

计算效率

  1. 梯度下降
    在这里插入图片描述
    当N很大时,每次计算权值梯度的计算量很大,耗时长,效率低下。
  2. 随机梯度下降
    在这里插入图片描述
    单个样本的训练可能会带来很多噪声,虽然不是每次迭代都朝着整体最优方向,但是大量迭代体现规律会使整体向最优方向走。
  3. 小批量梯度下降
    在这里插入图片描述
    在论文中,一般用epoch描述迭代样本情况。
    1个epoch需要N/m次迭代,N是样本总数,m是批量大小。

训练过程

数据集划分

数据集=训练集+验证集+测试集
训练集:用于给定的超参数时分类器参数的学习。
验证集:用于选择超参数。
测试集:评估泛化能力。
问:当数据很少,那么可能的验证集包含的样本就很少,从而无法在统计意义上代表数据。此时我们可以提出使用交叉验证的方法。

K折交叉验证

在这里插入图片描述
为了使随机性更好,我们可以在每次分折的时候进行数据打乱,这样得到的最终平均分更好,这种方法叫做带有打乱数据的重复K折验证

数据预处理

  1. 去均值
    x=x-均值;可以减小数据的浮动范围,突出相对差别。
  2. 归一化
    x=(x-均值)/方差;去除量纲的影响。
    在这里插入图片描述
  3. 去相关性
    有时候要只单独讨论x或只单独讨论y,就需要去掉x,y的相关性,x变化,y不会随着变化;让数据独立出来,达到降维的效果。
  4. 白化
    在去相关性的基础上进行归一化操作。
    在这里插入图片描述
    北京邮电大学–鲁鹏–计算机视觉与深度学习

http://chatgpt.dhexx.cn/article/3iOMOnDs.shtml

相关文章

支持向量机通俗导论(理解SVM的三层境界)

支持向量机通俗导论(理解SVM的三层境界) 作者:July 。致谢:pluskid、白石、JerryLead。说明:本文最初写于2012年6月,而后不断反反复复修改&优化,修改次数达上百次,最后修改于2016年1月。 前言 动笔写这个支持向量机(support vector machine)是费了不少劲和…

[机器学习] 支持向量机通俗导论节选(一)

本文转载自:http://blog.csdn.net/v_july_v/article/details/7624837 支持向量机通俗导论(理解SVM的三层境界) 作者: July、pluskid ; 致谢:白石、J erryLead 出处:结构之法算法之道 blog …

机器学习之旅---SVM分类器

本次内容主要讲解什么是支持向量,SVM分类是如何推导的,最小序列SMO算法部分推导。 最后给出线性和非线性2分类问题的smo算法matlab实现代码。 一、什么是支持向量机(Support Vector Machine) 本节内容部分翻译Opencv教程: http://docs.open…

人工智能学习笔记 实验五 python 实现 SVM 分类器的设计与应用

学习来源 【机器学习】基于SVM人脸识别算法的一些对比探究(先降维好还是先标准化好等对比分析)_○( ^皿^)っHiahiahia…的博客-CSDN博客 实验原理 有关svm原理 请移步该篇通俗易懂的博客 机器学习算法(一&#xff0…

Matlab-SVM分类器

支持向量机(Support Vector Machine,SVM),可以完成对数据的分类,包括线性可分情况和线性不可分情况。 1、线性可分 首先,对于SVM来说,它用于二分类问题,也就是通过寻找一个分类线(二维是直线&…

UGUI——RectTransform详解

什么是RectTransform 创建一个UGUI控件时,查看其Inspector面板,原先熟悉的Transform已经被替换成RectTransform,面板也与原先的Transform的面板相去甚远。 先看看Unity官方对RectTransform的描述: Position, size, anchor and pi…

【Unity3D】UGUI之Button

1 Button属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 Button 控件,即可创建 Button 控件,选中创建的 Button 控件,按键盘【T】键,可以调整 Button 控件的大小和位置。创建 Button 控件时,系统会自动给…

UGUI基础

UGUI基础 ##1、UGUI概述 1.1、Unity界面发展史 【老版本界面onGUI】>【GUI插件NGUI】>【新版本界面UGUI】 1.2、UGUI特点 新的UI系统是从Unity4.6开始被集成到Unity编译器中的。Unity官方给这个新的UI系统赋予的标签是:灵活,快速和可视化。 对…

【Unity基础】ugui的案例篇(个人学习)

文章目录 前言案例1、点击游戏物体改变一次颜色,被UI遮挡的情况下点击无效1.动态图演示2.实现方式I.实现方案1 通过射线检测实现 3.源码演示Lua部分代码CSharp部分代码 案例2、圆形图片的制作1.图演示2.实现方式I.实现方案1 使用Mask组件实现II.实现方案2 通过重写G…

Unity UGUI源码解析

前言 这篇文章想写的目的也是因为我面试遇到了面试官问我关于UGUI原理性的问题,虽然我看过,但是并没有整理出完整的知识框架,导致描述的时候可能自己都是不清不楚的。自己说不清楚的东西,别人就等于你不会。每当学完一个东西的时…

UGUI基础学习

目录 TEXT IMAGE ROWIMAGE TEXT fontsize:字体 color:字体颜色 ;inespacing:字行间隔 代码展示: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class TEXTtest : MonoBehaviour {p…

UGUI源码解析——总览

一:图像相关 ——UIBehaviour:UI组件的基类,继承MonoBehaviourUGUI源码解析——UIBehaviour——CanvasUpdateRegistry:图像、布局重建注册器UGUI源码解析——CanvasUpdateRegistry——ICanvasElement:图像、布局重建接…

UGUI 全方位了解

随着 unity3d 4.6 ~ 5.x 新 UI 系统终于与大家见面了。这篇文章将不会介绍如何使用按钮、滚动条之类的UI控件,这些内容可以参考 Unity Manual;这篇文章的重点是,如何理解 UI 系统的设计,以便更好的在实际中使用它。 RectTransfor…

UI框架(UGUI)

整个游戏的工程源码下载链接:点击打开链接 可以参考的写的Demo和本文章来学习 毕竟有些细节问题在文章中不能一一说到 工具:VS2010、Unity5.2.3f 先介绍整个Demo的主面板 其中任务、技能、符文等等都是按钮,点击按钮会生成相应面板 【Pro…

UGUI相关使用

UGUI 文章目录 UGUI1.六大基础组件概述1.1 Canvas组件1.2 CanvasScaler组件1.3 Graphic Raycaster组件1.4 Event System组件1.5 Standalone Input Module组件1.6 RectTransform组件 2.三大基础控件概述2.1 图像控件Image2.2 文本控件Text2.3 RawImage原始图像组件 3.七大组合控…

Unity UGUI系统

UI系统对比 对 UI 系统的选择取决于是为 Unity 编辑器开发 UI,还是为游戏或应用程序开发运行时 UI。 UI 的类型UI 工具包Unity UI(uGUI)IMGUI注意事项运行时(调试)✔ *✔✔这指用于调试用途的临时运行时 UI。运行时(游戏内&…

UGUI 详解

1.RectTransform RectTransform组件 继承自Transform组件,是2D界面中元素的Transform。 对比Transform增加了新的属性分别是:Anchor(锚点)和 Pivot(轴心点)。 属性: localPosition:图…

UGUI学习笔记(八)UGUI不规则响应区域

一、Unity自带的点击策略 在上一篇文章中我们了解到,UI的默认响应区域是UI元素所在的矩形框线内的区域。这也就意味着,当UI的图形为不规则形状时,点击图形的外部也可能会触发事件。 但其实Unity自带了一种不规则区域点击策略。要想使用它&…

[Unity UGUI图集系统]浅谈UGUI图集使用

**写在前面,下面是自己做Demo的时候一些记录吧,参考了很多网上分享的资源 一、打图集 1.准备好素材(建议最好是根据图集名称按文件夹分开) 2、创建一个SpriteAtlas 3、将素材添加到图集中 4、生成图集 到此,我们的图…

Ngui和Ugui的区别

NGUI的元素更新: UIPanel.LateUpdate采用轮询的方式,每帧都会执行,并且每帧都会有UIPanel.UpdateWidgets这个函数的调用,做的事情就是对这些UI元素的位置、缩放等信息的获取,也就是即使没有变化的UI元素,也…