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

数据集介绍(本文所用)

CIFAR10数据集

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

图像类型(像素表示)

  1. 二进制(0/1)

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

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

    Ps:大多数分类算法都要求输入向量,将图像矩阵转换成向量。
    【CV-Learning】线性分类器(SVM基础)_第1张图片
    故本文所用数据集的每张图片转换为向量是3072(32323)维列向量。

线性分类器

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

线性分类器的决策

决策规则:
【CV-Learning】线性分类器(SVM基础)_第2张图片
决策步骤:

  1. 图像表示成向量
  2. 计算当前图片每个类别的分数
  3. 按类别得分判定当前图像
    分类器的矩阵表示:
    【CV-Learning】线性分类器(SVM基础)_第3张图片

线性分类器的权值向量

【CV-Learning】线性分类器(SVM基础)_第4张图片

线性分类器的决策边界

【CV-Learning】线性分类器(SVM基础)_第5张图片

损失函数

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

损失函数定义

损失函数是一个函数,用于度量给定分类器的预测值与真实值的不一致程度,其输出通常是一个非负实值
其输出的非负实值可以作为反馈信号来对分类器参数进行调整,以降低当前示例对应的损失值,提升分类器的分类效果。
损失值就是模型性能的描述。
【CV-Learning】线性分类器(SVM基础)_第6张图片

多类支撑向量机损失

【CV-Learning】线性分类器(SVM基础)_第7张图片
【CV-Learning】线性分类器(SVM基础)_第8张图片

Ps:限制条件中**+1**是为了减小边界附近噪声的影响
L函数举例说明
【CV-Learning】线性分类器(SVM基础)_第9张图片
计算出多个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可以唯一。
【CV-Learning】线性分类器(SVM基础)_第10张图片

L2正则项

【CV-Learning】线性分类器(SVM基础)_第11张图片

什么是超参数

开始学习过程之前设置值的参数,而不是学习得到。
超参数一般都会对模型性能有着重要的影响。
【CV-Learning】线性分类器(SVM基础)_第12张图片

常用的正则项损失

【CV-Learning】线性分类器(SVM基础)_第13张图片

优化算法

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

梯度下降算法

一种简单高效的迭代优化算法。
【CV-Learning】线性分类器(SVM基础)_第14张图片

  1. 数值法
    计算量大,得到近似值,不准确。
    【CV-Learning】线性分类器(SVM基础)_第15张图片
  2. 解析法
    精确值,速度快,但是导数推导容易出错。
    【CV-Learning】线性分类器(SVM基础)_第16张图片
    问:数值梯度有什么作用?
    求梯度时一般使用解析梯度,而数值梯度主要用于解析梯度的正确性校验(梯度检查)。

计算效率

  1. 梯度下降
    【CV-Learning】线性分类器(SVM基础)_第17张图片
    当N很大时,每次计算权值梯度的计算量很大,耗时长,效率低下。
  2. 随机梯度下降
    【CV-Learning】线性分类器(SVM基础)_第18张图片
    单个样本的训练可能会带来很多噪声,虽然不是每次迭代都朝着整体最优方向,但是大量迭代体现规律会使整体向最优方向走。
  3. 小批量梯度下降
    【CV-Learning】线性分类器(SVM基础)_第19张图片
    在论文中,一般用epoch描述迭代样本情况。
    1个epoch需要N/m次迭代,N是样本总数,m是批量大小。

训练过程

数据集划分

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

K折交叉验证

【CV-Learning】线性分类器(SVM基础)_第20张图片
为了使随机性更好,我们可以在每次分折的时候进行数据打乱,这样得到的最终平均分更好,这种方法叫做带有打乱数据的重复K折验证

数据预处理

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

你可能感兴趣的:(计算机视觉,支持向量机,机器学习,人工智能)