cs231n笔记:线性分类器

cs231n线性分类器学习笔记,非翻译,根据自己的学习情况总结出的内容:

线性分类

  本节介绍线性分类器,该方法可以自然延伸到神经网络和卷积神经网络中,这类方法主要有两部分组成,一个是评分函数(score function):是原始数据和类别分值的映射,另一个是损失函数:它是用来衡量预测标签和真是标签的一致性程度。我们将这类问题转化为优化问题,通过修改参数来最小化损失函数。

  首先定义一个评分函数,这个函数将输入样本映射为各个分类类别的得分,得分的高低代表该样本属于该类别可能性的高低。现在假设有一个训练集,每个样本都有一个对应的分类标签yi,这里i=1,2....N,并且y∈ 1…K,这里,N代表样本个数,样本的维度为D,共有K个类别。定义评分函数:,该函数是原始样本到分类分值的一个映射。

  线性分类器:先介绍最简单的线性映射:,在公式中,每一个输入样本都被拉成一个长度为D的列向量,其中W和b都是参数,参数W被称为权重(weights)大小为K x D 和,参数b为偏置向量(bias vector)大小K x 1,它影响输出结果,但是并不和原始样本产生关联。卷积神经网络样本到分类分值的方法和上面一样,但是映射函数f(x)将更加的复杂,参数也更多。

解释线性分类器

  线性分类器各维度的值与权重相乘,从而得到分类分值。如下图:首先将这张猫咪的图片拉伸成一个列向量,与矩阵W相乘,然后得到各个分类的值,可以看出得

到的评分中,猫的评分很低,则这个矩阵W并不好。我们还可以将样本看做高维空间中的一个样本点,整个数据集就是一个空间点的集合,每个点都有一个标签,则每个分类类别的分值就是这个空间中一条线性函数的函数值

偏置和权重的合并技巧:分类的评分函数为,分开处理参数W、b有点麻烦,一般常用方法是将W和b合并到同一个矩阵中,同时xi这个向量要增加一个维度,数值为1。具体见下图:

左边是先做矩阵乘法然后做加法,右边是权重矩阵增加一个偏置列,输入向量维度增加1,然后做矩阵乘法。这样的好处是只用学习到一个权重矩阵。

损失函数 loss function

  评分函数的参数是矩阵W,数据(xi,yi)是给定的不能修改,我们可以通过修改参数矩阵W来调整,来使评分函数与真实的类别一致,即:真实类别的评分应该是最高的。我们使用损失函数(loss function)来衡量对结果的不满意程度。当评分函数与真实结果相差越大时,损失函数的值也就越大。

多类别支持向量机损失(Muliticlass SVM Loss)

  损失函数的类别有很多种,首先介绍多类别SVM损失函数,SVM的损失函数要SVM在正确类别上的得分要比不正确类别上的得分高出一个Δ,针对第i个样本的损失函数为:

称为合页损失函数(hinge loss),其中:为第j个类别的得分,yi是正确类别的标签。举例:假设有3个类别,s=[13,-7,11]。其中第一个类别是正确类别,假设Δ的值为10,损失函数(为两部分的和:

第一部分的值为0,第二部分的值为8。SVM的损失函数想要正确分类类别yi的分数要比不正确分类的分数高,而且至少要高一个Δ(可以这样写sj+Δ <=syi),如果不满足这一点,就需要计算损失值。更加形象化的如图所示

“SVM的损失函数想要正确分类类别yi的分数要比不正确分类的分数高,而且至少要高一个Δ”,如果其他类别分数进入红色区域,甚至更高,那么就需要计算损失,否则损失为0。我们的目标是找到一些权重,它们既能够这样的要求,又能让损失值尽可能的小。

 正则化(Regularization):上面损失函数有一个问题,假设一组数据和权重W能够对每个样本正确分类,即:对所有i都有Li=0;问题在于这个W并不唯一,例如W能使损失值都为0,当λ>1时,任何λW都能使损失值为0。所以我们希望向特定的权重W添加某些偏好,来消除不确定性,可以通过添加正则化惩罚(regularization penalty)来完成,常用的正则化项是L2范式,它通过对所有参数进行逐元素平方惩罚来抑制较大的权重:

上面式子仅包含权重W,不包含样本,将W所有元素平方求和。给出完整的多分类SVM的损失函数,包含两部分:数据损失,即所有样本的平均损失和正则化损失:

展开

其中N代表训练样本的个数,λ表示正则化项的权重,它的确定需要动过cross-validation。

  L2的一个最大的性质是对大数值权重的惩罚,提升泛化能力,这就消除了某一个维度对整体分值影响过大的影响。eg:输入向量x=[1,1,1,1],有两个权重向量w1=[1,0,0,0],w2=[0.25,0.25,0.25,0.25],那么w1Tx = w2Tx = 1,两个权重向量得到相同的分值1,根据L2惩罚来看W2更好,因为它的正则化损失值更小。W2惩罚倾向于更小更分散的的权重向量,这样就能鼓励分类器将所有维度上的特征都使用起来。通常只对权重w 进行正则化,而不正则化偏置b。

代码:无正则化部分的损失函数,非向量化和半向量化损失的代码实现

这地方插入代码,明天插入

超参数delat和λ对损失函数中的数据损失正则化损失之间权衡,权重W的大小对于分类分值有着直接的影响,对w进行缩小,那么分类之间的差值也会变小,反之亦然。权重的大小就能控制差异的变大或缩小,因此delta 为1或100是没有意义的。因此真正的权衡是我们允许权重变大到何种程度(λ来进行控制)。

softmax分类器

  softmax可以理解为逻辑回归泛化到多分类问题中,SVM分类器输出f(xi,w)作为每个分类的评分(未标准化的,可能难以理解)。与SVM不同的是softmax输出的是归一化后的概率,更加的直观,可以从概率上给出解释。在softmax分类器中映射函数保持不变,但将这些评分值看做每一类别未归一化的对数概率

时间: 2024-10-22 10:07:37

cs231n笔记:线性分类器的相关文章

『cs231n』线性分类器最优化

最优化策略 1.差劲的方案,随机搜索 bestloss = float('inf') # 无穷大 for num in range(1000): W = np.random.randn(10, 3073) * 0.0001 loss = L(X_train, Y_train, W) if loss < bestloss: bestloss = loss bestW = W scores = bsetW.dot(Xte_cols) Yte_predict = np.argmax(score, ax

cs231n笔记 (一) 线性分类器

线性分类器用作图像分类主要有两部分组成:一个是假设函数, 它是原始图像数据到类别的映射.另一个是损失函数,该方法可转化为一个最优化问题,在最优化过程中,将通过更新假设函数的参数值来最小化损失函数值. 从图像到标签分值的参数化映射 该方法的第一部分就是定义一个评分函数,这个函数将图像的像素值映射为各个分类类别的得分,得分高低代表图像属于该类别的可能性高低.下面会利用一个具体例子来展示该方法.现在假设有一个包含很多图像的训练集 $x_i \in \mathbb{R}^D$,每个图像都有一个对应的分类

【Python 代码】CS231n中Softmax线性分类器、非线性分类器对比举例(含python绘图显示结果)

1 #CS231n中线性.非线性分类器举例(Softmax) 2 #注意其中反向传播的计算 3 4 # -*- coding: utf-8 -*- 5 import numpy as np 6 import matplotlib.pyplot as plt 7 N = 100 # number of points per class 8 D = 2 # dimensionality 9 K = 3 # number of classes 10 X = np.zeros((N*K,D)) # da

机器学习基础笔记(2):最简单的线性分类器

监督学习多用来解决分类问题,输入的数据由特征和标签两部分构成.我们由浅入深地介绍一些经典的有监督的机器学习算法. 这里介绍一些比较简单容易理解的处理线性分类问题的算法. 线性可分&线性不可分 首先,什么是线性分类问题?线性分类问题是指,根据标签确定的数据在其空间中的分布,可以使用一条直线(或者平面,超平面)进行分割.如下图就是一个线性分类问题.这样的问题也叫做线性可分的. 当然,也存在着许多线性不可分的情况,例如下图所示 解决线性不可分问题往往相对复杂,我们从简单的线性可分问题开始探讨. 最简单

模式识别(Pattern Recognition)学习笔记(七)——线性分类器及线性判别函数

1.为什么要设计分类器? 回顾下前面学习的统计决策,也就是贝叶斯决策,它可以简单被划分为两步,首先根据样本进行PDF估计,然后根据估计出的PDF来求分类面,因此又经常被叫做两步贝叶斯决策.如果我们能够很好地估计出PDF模型,也总可以利用贝叶斯来实现两类甚至多类的最优分类,但是很多实际情形中,想要精准的估计出PDF模型,并非易事,尤其当样本存在高维特征空间,以及样本数量并不足够多的情况,本质上来说,模式识别的真正目的并非估计PDF模型,而是在特征空间中想方设法找到各类的分界线或分界面.因此,如果可

SVM学习笔记-线性支撑向量机

最大间隔超平面 线性分类器回顾 当数据是线性可分的时候,PLA算法可以帮助我们找到能够正确划分数据的超平面hyperplane,如图所示的那条线. 哪一条线是最好的? 对于PLA算法来说,最终得到哪一条线是不一定的,取决于算法scan数据的过程. 从VC bound的角度来说,上述三条线的复杂度是一样的  Eout(w)≤Ein0+Ω(H)dvc=d+1 直观来看,最右边的线是比较好的hyperplane. 为什么最右边的分隔面最好? 对于测量误差的容忍度是最好的.例如对于每

SVM入门(二)线性分类器Part 1

线性分类器(一定意义上,也可以叫做感知机) 是最简单也很有效的分类器形式.在一个线性分类器中,可以看到SVM形成的思路,并接触很多SVM的核心概念.用一个二维空间里仅有两类样本的分类问题来举个小例子.如图所示 C1和C2是要区分的两个类别,在二维平面中它们的样本如上图所示.中间的直线就是一个分类函数,它可以将两类样本完全分开.一般的,如果一个线性函数能够将样本完全正确的分开,就称这些数据是线性可分的,否则称为非线性可分的. 什么叫线性函数呢?在一维空间里就是一个点,在二维空间里就是一条直线,三维

SVM入门(三)线性分类器Part 2

上回说到对于文本分类这样的不适定问题(有一个以上解的问题称为不适定问题),需要有一个指标来衡量解决方案(即我们通过训练建立的分类模型)的好坏,而分类间隔是一个比较好的指标.    在进行文本分类的时候,我们可以让计算机这样来看待我们提供给它的训练样本,每一个样本由一个向量(就是那些文本特征所组成的向量)和一个标记(标示出这个样本属于哪个类别)组成.如下:Di=(xi,yi).xi就是文本向量(维数很高),yi就是分类标记.    在二元的线性分类中,这个表示分类的标记只有两个值,1和-1(用来表

深度学习中得数学,高效计算基础与线性分类器

深度学习说到底就是要调节网络中得权重,使网络的分类结果更接近于训练值.这个重复迭代的过程又是一个线性回归的问题.在这种可能会用到高数,线性代数,概率论中的知识. 一.数学基础提一提. 1.高数中得知识. 高数中最重要的就是微积分了,那在深度学习中出现最多的一个概念就是梯度.什么是梯度呢?要说导数,学过高数的肯定都知道.其实梯度就是当把标量x变成向量X时,对X求导就是梯度.那为什么要用梯度呢?因为梯度等于0在凸函数中往往代表着一个极小值点.我们要求得就是损失函数的极小值,这正是我们需要的.梯度是指