当前位置: 首页 > news >正文

CS231n-2017 Lecture3线性分类器笔记

图片向量与标签得分向量:

上节讲到,图片可以被展开成一个向量,对于这个向量,假设它有D维,那么它就是D维空间的一个点,又假设我们的标签集合总共有K种,我们可以定义一个K维标签得分向量,每一个维度对应着其相应标签的得分。那么我们就可以想办法建立一个线性映射,将一个图片向量映射成一个标签向量,将其中得分最高的维度所对应的标签作为这张图片的标签,这就是线性分类器的本质

即:

设训练集X 有N个元素,其中x_i\in R^D, 每个x_i 有其对应的标签向量 y_i \in R^K

线性分类器:

对于上述的向量对应关系

则我们可以建立一个线性分类器:

f(x,W) = Wx+b

其中W是一个K \times D的矩阵,被称为权重(权重是提前设定好的,这里我们假设模型已经找到最优权重),b是一个K维向量,被称为偏差向量(这个向量也已经找到了最优)

这个函数会输出对于x映射出来的标签得分预测向量,然后我们可以根据该预测向量的最高得分维度来预测x所对应的图片的标签

偏差与权重的合并技巧:

我们可以将图片向量增加至D+1维,将W也增加至K\times (D+1),将其第D+1列作为原本的b,则可以将函数简化为

f(x,W) = Wx

线性分类器的直观理解:

第一种理解:

对于W的第i行,其每一列的元素分别就是D维图片向量对应像素对第i行对应标签的贡献权重,当权重为正时,就说明该位置(包含了长、宽、颜色三个信息)的像素值对该标签分类是正贡献,且越高越好,权重为负时相反

同时,我们可以将第i行这一行向量映射回图片三维数组,从而得到该标签所对应的图片模版,可以直观地观察到其分类喜好

第二种理解:

对于第i个标签,如果我们将所有令f(x,W) 的第i个分量为0的所有x向量组成一个平面,那么这个平面就是第i个标签的分界面,虽然高维空间不好想象,但我们可以将D维空间当做二维平面来理解,此时分界面必有一边会使得第i个分量的值>0(则这个区域就是第i个标签所属的区域),而另一面会使得第i个分量的值<0(第i个标签所不属于的区域)。那么对于K个标签来说,就会有K个分界面,将D维空间线性划分为K个标签所属的区域,因此我们只需要判断输入图像向量落入哪个区间,即可预测其标签

Loss Function(损失函数):

对于不同的权重矩阵W,我们需要对其给出的预测向量评分,从而评价其预测结果的好坏,这里,我们使用Loss Function作为评分标准,Loss越大时,预测结果越差,Loss越小时,预测结果越好

Multiclass Support Vector Machine Loss(多类支持向量机损失):

这是众多形式Loss中的一种,具体定义式为:

L_i = \sum_{j \ne y_i}{max{(0,s_j-s_{y_i}+\Delta)}}

L=\frac{1}{N}\sum_{i=1}^{N}{L_i}

其中L_i 是对第i个图片向量预测的损失,L 是总损失,y_i 是x_i所对应的标签所对应的维度,j是遍历维度,s_j是预测向量在j维度所对应的预测值,s_{y_i}是预测向量在y_i维度所对应的预测值,\Delta是自定义超参数

max{(0,s_i-s_{y_i}+\Delta)} 的含义就是,我们遍历预测向量的每一维度(除了正确标签所对应的维度),即遍历的都是错误标签所对应的维度,若正确标签得分减去该错误标签得分的差少于\Delta ,则说明预测得分的差距不够大,对Loss作出了一定贡献,否则对Loss的贡献为0

正则化(Regularization):

上面的损失函数会有一个问题,使得分类器能够正确分类数据集内每个数据的W并不唯一,我们希望能向W中某些特定的权重添加一些偏好,对其他权重则不添加,从而来更好地区分每个满足分类Loss为0的W,即向损失函数增加一个正则化惩罚R(W) 部分

通常采用L2范式,即:

R(W) = \sum_k\sum_lW_{k,l}^2

即对W中所有元素平方后求和作为正则化惩罚,它不是数据的函数,仅仅是权重的函数

至此,我们可以给出完整的多类SVM损失函数,由数据损失和正则化损失组成,即

L = \frac{1}{N}\sum_i{L_i}+\lambda R(W)

http://www.dtcms.com/a/287606.html

相关文章:

  • 什么是 Git 的钩子 Hooks?包括哪些内容?
  • picoCTF 2024: [[NoSQL]] Injection - Writeup
  • K8s与Helm实战:从入门到精通
  • 【杂谈】硬件工程师怎么用好AI工具做失效分析
  • 图像缩放的双线性插值算法
  • Keepalived 监听服务切换与运维指南
  • Redis常见线上问题
  • 如何实现电脑自动关机与定时任务管理
  • MySQL 深度性能优化配置实战指南
  • UGUI 性能优化系列:第三篇——渲染与像素填充率优化
  • Redis性能测试全攻略:工具实操与性能优化指南
  • python conda 包管理工具 隔离环境
  • Ubuntu 22.04.3 LTS 安装 MySQL
  • 【数据结构初阶】--双向链表(二)
  • 基于单片机病床呼叫系统/床位呼叫系统
  • 【自用】JavaSE--集合框架(一)--斗地主案例
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现动物分类(C#源码,UI界面版)
  • Python 常见库分类介绍及安装方法
  • 数据库第四次作业
  • 爬虫小知识三:selenium库
  • ElasticSearch:商品SKU+SPU实现join查询,设计及优化
  • 基于Eureka和restTemple的负载均衡
  • gitlab私有化部署
  • 月舟科技近调记录
  • Kotlin内联函数
  • 访问 gitlab 跳转 0.0.0.0
  • Kotlin泛型约束
  • QGIS新手教程10:专题图制作与图层渲染技巧全攻略(含分类与渐变)
  • 【通识】PCB文件
  • Elastic Search 8.x 分片和常见性能优化