斯坦福CS231学习笔记第三讲——损失函数和优化(1)

前面的课程,以猫咪为例介绍了图像分类问题,机器看到的图像是怎样的(庞大的数字矩阵),以及机器识别图像的困难(光照、角度、背景……),介绍了KNN算法和线形分类器。可知,KNN算法不需要学习超参数ω,而线性分类器择需要对超参数ω进行学习。
在这里插入图片描述衡量学习性能的好坏,需要损失函数来表示,比如上图,若某模板通过学习习得超参数以后,对猫、车、青蛙的预测得分如图所示,可见对于青蛙这一类别的得分是非常不合适的,手动的用人眼可以一眼看出哪个得分低哪个得分高,那么为了自动验证模型学习的超参数是否合适,就需要用一个函数,将超参数作为这个函数的输入,然后看一下得分,定量的估计参数的好坏,这个函数就是损失函数。

简言之,损失函数可以衡量模型通过训练习得的参数是好还是坏,
而要找到一种有效的方式,从ω的可行域里找到ω取什么值是最不坏的情况,这个过程称之为优化。

常见的损失函数形式如下:yi为真实标签,即我们希望模型预测出的结果
在这里插入图片描述
本节主要介绍两种损失函数

一、多分类SVM损失函数

1.计算公式:
在这里插入图片描述

计算过程解释:
在所有错误的分类上求和,比较正确分类的分数和错误分类的分数,
如果正确分类的分数比错误分类的分数高,高出某个安全的边距(假设为1),
如果真实分类的分数很高,比其他任何错误分类的分数都高很多,那么损失为0。
把每个错误分类的损失加起来,就可以得到数据集中这个样本的最损失,对整个训练集取平均。

2.该损失函数图像:
在这里插入图片描述

图像解释:
横轴s_y_i,表示训练集的第i个样本的真实分类的分数
纵轴表示损失loss。
当真实分类的样本数逐渐增加时,损失呈直线下降,达到某阈值时,loss变为0

Q:各个符号的表示是什么意思?
A:
x轴:训练样本真实分类的分数
y轴:loss
S:通过分类器预测出的类的得分,比如猫和狗,S1、S2分别表示预测是猫、预测是狗的得分
y_i:这个样本的正确的分类标签
s_y_i:训练集的第i个样本的真实分类的分数

3.计算过程举例:
如果对第一个训练样本计算多分类SVM损失函数(下图左),要对所有不正确的分类全都循环一遍。可以看出,猫是正确的分类,所以对车和蛙进行计算
在这里插入图片描述
车子的分数5.1减去猫的分数3.2再加上1,比较猫和车的时候会得到一些损失,因为车的分数比猫还高,显然这是不好的;接下来比较猫的分数和青蛙的分数,猫的分数3.2,青蛙的分数-1.7,猫的分数超出青蛙1以上,这表明猫和青蛙这两个类别的损失为0。
训练样本的多分类SVM损失函数是每一对这样的类别构成的损失项的加和。
在这里插入图片描述
同理,对真实分类是汽车(图中)
在这里插入图片描述
对真实分类是青蛙(图右)
在这里插入图片描述
整个训练数据集损失函数:
在这里插入图片描述
5.27反应了我们的分类器在数据集上的分类性能好坏,显然,5.27并不是很好。

4.思考题
Q:计算过程中的+1是为什么?
A:在一定程度上是一个任意的选择,其实就是一个出现在损失函数中的常数,是一个可以任意选择的值,并不需要特别关注,我们重点关注的是真实和错误的差值

在这里插入图片描述
A:汽车的得分只改变一点不会影响损失,因为影响损失的是正确的分数比不正确的 分数差值是否超过1这个界限,图中车的得分比其他都大很多,只改变一点不会影响1的界限,所以损失函数不会改变

在这里插入图片描述
A:最小是0,最大是无穷,参考上文损失函数的图像。

在这里插入图片描述
A:分类的数量-1,因为如果我们对所有不正确的类别遍历了一遍,那么我们实际上遍历了C-1个类别,在这些类别中的每一个,这两个分数差不多相同,就会得到一个值为1的损失项,因为存在边界1,所以得到C-1。同时这是一个有用的调式策略,当第一次迭代得到的损失函数不是C-1时,说明程序有bug。

在这里插入图片描述
A:loss+1。

在这里插入图片描述
A:loss不变,任何的缩放操作都不会有什么影响。

在这里插入图片描述
A:发生改变,与缩放不影响loss的结果不同,平方会改变loss。loss是为了衡量分类器的错误,平方让错误错上加错,通常不需要平方,用线形还是用平方根据自己关心的问题来决定

5.code:
在这里插入图片描述
y表示真实类别的标号,margins储存了所有类别的损失值,公式中真实类别的损失计算是没有的,所以赋值为0.

在这里插入图片描述
A:当loss=0时,ω并不唯一

二、正则化

前文提到,当loss等于0时,ω并不唯一,那么学习模型就会尽可能的去拟合训练数据,但是通常我们侧重的是测试数据,如果学习模型尽可能完美的拟合训练数据,那么在测试数据上的表现可能会差强人意。
在这里插入图片描述
如上图,蓝色的数据点为训练数据,绿色的表示测试数据,如果模型尽可能学习训练数据,拟合了一条蓝色的曲线,用蓝色的曲线去拟合测试数据(绿点)时,显然没有任何一个绿色的点位于蓝色的曲线上,实际上我们希望分类器能够学到的是一条如图所示绿色的线,这样在测试数据上就可以很好的拟合。此时就需要引入正则化,使模型尽可能选择简单的ω。
在这里插入图片描述
基于此,标准损失函数包括两项,data loss 和 regularization,其中λ超参数用来平衡这两项。

Q:这三者之间有什么关系?
A:笼统说,是为了让弯弯的曲线变成一条直的绿线

在这里插入图片描述
常见的正则化有L1、L2,此处没有详细展开说明,不赘述。

加入正则化的目的是为了减轻模型的复杂度,而不是去试图拟合数据。

Q:L2如何去衡量模型的复杂度?
A:我们有一些训练样本x(此处x是一个包含四个一的四维向量),有两个不同的ω,考虑两种不同的可能性,第一种是ω,首元素是1,另外三个元素是0;另外一个ω,每个元素都是0.25。
进行线性分类的时候,实际是讨论的x与ω的点乘结果,在线性分类的语境中,两种ω其实是一样的,因为他们与x的点乘结果是相同的。那么哪种情形下的L2回归性会好一些呢?
每个元素都是0.25的L2回归性会好一些。因为它的范数比较小。

在这里插入图片描述

三、Softmax Classifier(Softmax Loss)

在多分类SVM loss function中,没有对得分有过多的解释,只希望正确分类的分数比不正确分类的分数高。而softmax对分数进行转化处理,通过概率分布的概率,得到正确类别的损失函数。
1.实例:
在这里插入图片描述

2.思考题在这里插入图片描述
A:min:0
max:∞
我们希望正确类别的概率是1,不正确类别的概率是0。
真实类别所对应的的概率log1=0,-log1=0,意味着如果所有分类都做对了,loss=0;不正确类别对应的概率是log0= - ∞,-log0=∞

在这里插入图片描述
A:-lnC。当损失函数采用softmax时可以在第一次迭代进行检查。

四、两种损失函数的比较

在这里插入图片描述
SVM:研究正确分类的分值和不正确分类的分值的边界
softmax:计算一个概率分布,然后查看负对数概率正确的分类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值