计算机视觉(三)线性分类器
目录
线性分类器
数据集介绍
分类器设计
图像类型
图像表示
选择分类模型
线性分类器
权值w
分界面/决策边界
损失函数
多类支持向量机损失
正则项
超参数
L2正则项
L1正则项
优化算法(梯度下降)
梯度下降算法
随机梯度下降算法
小批量梯度下降算法
数据集划分
训练数据
测试数据
验证数据
K折交叉验证
数据预处理
线性分类器
数据集介绍
- CIFAR10,5w张训练样本,1w张测试样本,含飞机、汽车、鸟、猫、船、卡车等十个类别图像均为彩色图像,大小为32*32
分类器设计
图像类型
- 二进制:非黑即白,非1即0
- 灰度图:一个像素由一个byte表示,每个像素的取值范围是黑0-255白
- 彩色图:每个点有三个值,即RGB三个通道,每个通道都有三个值,用三个byte表示
图像表示
分类算法中要求图像输入的是向量,那么需要将图像表示成向量
CIFAR10中每一张图像转换为向量是 32*32*3=3072维列向量
选择分类模型
线性分类器
- 通过层级结构(神经网络)或高维映射(支持向量机)可以形成功能强大的非线性模型。
- 线性分类器是一种线性映射,将输入的图像特征映射为类别分数,即3072维的向量转换为类别标签。
- 第i个类的线性分类器的定义:
- x代表输入的d维图像向量,c代表类别个数,wi表示第i个类的权值向量,bi表示偏置,f表示输出的类别分数
- 每个类都有自己的参数w和b
- 分数最高的类别就判定该图像属于哪个类
- 权值矩阵w的行数由类别个数,列数由图像表示x的列决定,因为要与x相乘后得到一个实数
- CIFAR10有10个类别,图像大小为32*32*3=3072,即图像向量x的维度是3072维,权值矩阵w的维度是10*3072,偏置向量b的维度是10*1,得分向量f的维度是10*1
权值w
- 权值看作是一种模版
- 类别模版记录了类别信息,或者说记录数据集中的统计信息/平均信息
- w记录了类别信息的平均值
- 输入图像与评估模版的匹配程度越高,分类器输出的分数越高
分界面/决策边界
- w控制线的方向
- b控制线的偏移
- 箭头方向代表分类器的正方向,沿着箭头方向距离决策面越远分数越高
- w,b会随机给初始值,然后通过损失值和优化函数来不断优化这个初始值
损失函数
- 用于定量表示两个分类器哪个效果更好
- 度量预测值和真实值的差异
- 损失函数搭建了模型性能与模型参数之间的桥梁,指导模型参数优化
- 定义:
- 度量参数w和b
多类支持向量机损失
- 定义:
- 真实类别的预测分数 大于 样本在第j类别的预测分数+1,就是正确的类别
- 正确类别的得分比不正确类别的得分高出1分,就没有损失,否则就有损失,计算所有损失之和,就是总损失值
正则项
- 对于同一个图像的分类器,有多个w可以使损失值为0,不同的w该如何选择?用正则项
- 定义:
- 防止过拟合
- R(W)是一个与权值有关,跟图像数据无关的函数
- lambda是一个超参数,控制正则损失在总损失中所占的比重
超参数
- 在学习之前设置的参数,而不是学习得到的
- 如神经网络中的神经元个数
L2正则项
- 定义:
- w矩阵中的每个元素的平方之和
- 考虑所有维度的特征,权值越分散越平均那么L2的分数越大
- 让模型有偏好
L1正则项
- 定义:
优化算法(梯度下降)
- 参数优化利用损失函数的输出值来调整分类器参数,提升预测值
- 目标:找到使损失函数达到最优的那组参数w
- 方法:损失函数的导数为0 ,可以得到最优w和b
- 但是,L的表达式很复杂,很难从这个等式中直接求解出w,于是有了梯度下降法
梯度下降算法
- 使损失函数L最小,从而得到最优w
- 随机选取一个点,使用负梯度方法,根据步长(学习率)逐步迭代,直至逼近最低点
- 定义:
- 如何计算梯度:
- 数值法(量大不用):一维变量,函数求导
- 解析法:求导
- 当样本数很大时,计算速度慢
随机梯度下降算法
- 定义:
- 随机采集一个样本,更新梯度,再根据梯度计算权值
小批量梯度下降算法
- 设置一个超参数m批量大小,随机采集m个样本,计算损失并更新梯度
- 定义:
- Batch Size:通常取2的幂数作为批量大小
- Epoch:周期,1个周期表示过了一遍训练集中的所有样本,即n*m
- Iteration:迭代,每次迭代更新1次网络结构的参数
数据集划分
训练数据
寻找最优分类器
测试数据
评测泛化能力
如何找到泛化能力最好的超参数,如正则化强度?
验证数据
居于训练和测试之间,lambda在训练集上学习超参数,在验证集上选择超参数,最后在测试集上评估
K折交叉验证
如果数据很少,那么验证集包含的样本很少,无法在统计上代表数据
数据预处理
- *去均值后的数据:中心化,x减均值
- *归一化后的数据:数据差异,归一化到相同的尺度,x减均值再除以方差
- 去相关后的数据:数据的协方差矩阵是对角矩阵,单独考虑x和y
- 白化后的数据: 协方差矩阵是单位矩阵
计算机视觉(三)线性分类器相关推荐
- 【线性分类器】(四)万字长文解释拉格朗日乘子与支持向量机
[线性分类器](一)线性判别 [线性判别器](二)"深度学习"的鼻祖--感知器 [线性分类器](三)线性分类器的松弛求解: LEMS 算法,H-K 算法 文章目录 拉格朗日乘子与支 ...
- 计算机视觉与深度学习第三章:线性分类器
计算机视觉与深度学习 本文按照北京邮电大学计算机学院鲁鹏老师的计算机视觉与深度学习课程按章节进行整理,需要的同学可借此系统学习该课程详尽知识~ 第三章 线性分类器 计算机视觉与深度学习 本节重点 一. ...
- 计算机视觉-图像识别分类线性分类器
目录 图像识别难点:跨越语义鸿沟 基于规则的分类方法 数据驱动的图像分类方法 图像表示: 分类器: 损失函数 优化方法 训练过程 决策 2.设计 线性分类器: 损失函数 示例: 学习目标: 入门计算机 ...
- 【机器学习】SVM学习(三):线性分类器的求解
[机器学习]SVM学习(三):线性分类器的求解 2016-10-10 19:56 239人阅读 评论(0) 收藏 举报 本文章已收录于: 机器学习知识库 分类: 机器学习(37) 目录(?)[+ ...
- SVM学习(三):线性分类器的求解
1.问题的描述 上节说到我们有了一个线性分类函数,也有了判断解优劣的标准--即有了优化的目标,这个目标就是最大化几何间隔,但是看过一些关于SVM的论文的人一定记得什么优化的目标是要最小化||w||这样 ...
- 【计算机视觉与深度学习 北京邮电大学 鲁鹏 视频笔记】1. 线性分类器
视频连接 https://www.bilibili.com/video/BV1V54y1B7K3?p=2&spm_id_from=pageDriver 1. 前言 1.1 数据驱动的图像分类方 ...
- 【计算机视觉与深度学习】线性分类器(一)
目录 从线性分类器开始 线性分类器的定义 线性分类器的决策步骤 线性分类器的矩阵表示 线性分类器的wiT\bm w_i^TwiT如何理解 线性分类器的决策边界 线性分类器的损失函数 损失函数的定义 ...
- 李飞飞计算机视觉笔记(2)--线性分类器损失函数与最优化
文章中的词语解释: 分类器:完整的神经网络 类别分类器:分类器中的某一个输出对应的所有权值(单层全连接神经网络) 损失函数:不包括正则式的损失函数 正则化损失函数:包括正则式的损失函数 多类SVM损失 ...
- cs231n学习记录-理解线性分类器
目录 前言: 内容简介: 一.NN分类器的缺点 二.什么是线性分类器 三.线性分类器的原理 四.从图像到标签分值的参数化映射 五:解释这个"b" 六.将线性分类器看做模板匹配 七. ...
- 高效计算基础与线性分类器
高效计算基础与线性分类器 标签: 深度学习线性分类器 2016-06-29 16:01 131人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: 深度学习笔记(1) 作者同类文章X 版权声明:本 ...
最新文章
- linux eclipse-JAVA_从 Linux 终端编译运行 Eclipse Java 项目
- Reactor实例解析
- Java 数组的 12 个最佳方法
- 艾伟:正则表达式30分钟入门教程
- iOS高效开发必备的10款Objective-C类库
- 微信支付分申请接入流程
- ios url缓存策略——NSURLCache、 NSURLRequest
- 手机号码、获得当前时间,下拉框,填写限制
- RedHat虚拟机Vmware Tools的安装教程
- 台式计算机usb口不识别鼠标,usb鼠标不能识别怎么办解决教程
- 关于WinCE6.0补丁包的一点说明
- Unity2019.2中文更新日志速览版
- SQLite学习手册(目录)
- Custom Components 翻译
- .Net Core应用框架Util介绍(一)转
- 《史蒂夫·乔布斯传》PDF下载
- 【Python笔记】Scipy.stats.norm函数解析
- 万年历c语言程序微博,简易的万年历程序C语言
- 编码的奥秘:两种典型的微处理器
- 企业逼迫员工离职,员工可以收集哪些证据进行维权?
热门文章
- python怎么写入聚类标签_标签传播算法(Label Propagation)及Python实现
- Ribbon 界面介绍(1)
- 各种音视频编解码学习详解之 编解码学习笔记(七):微软Windows Media系列
- 关于使用UE编辑器无法初始化ftp的问题
- 使用Unicode字符集出现乱码问题
- 【版本控制】git学习笔记(一)
- Anaconda安装python包的几种方法
- Undefined class constant ‘SERIALIZER_IGBINARY‘ 解决方法
- 财务自由的日子,我抑郁了
- node.js安装和vue全局安装教程