超详细斯坦福CS231n课程笔记(第三课)——损失函数和优化损失函数

损失函数和优化损失函数

1. 损失函数SVM

在线性分类中,分类函数为f(x)= Wx + b,这时,可以用一个函数把W当作输入,然后看一下得分,定量地估计W的好坏,这个函数被称为损失函数。

 

在这个例子中,猫目前的分类不对,车子分类对了,从这个W来说青蛙的图片是彻底地分类错了,因为青蛙的分数甚至比其他类别的都要低。通常来说我们有N个样本,其中x是算法的输入,在图像分类问题中,x其实是图片每个像素点所构成的数据集,y是你希望算法预测出来的东西,我们通常称之为标签或者目标。

我们把损失函数计做Li,我们有了这个关于x的预测函数后,这个函数就是通过样本和权重矩阵W给出的y的预测,最终的损失函数L就是整个数据集中N个样本的损失函数总和的平均数。

 

我们的计算方式是,除了真实的分类Yi以外,对所有的分类Y都做加和,也就是说我们在所有错误的分类上做和,比较正确分类的分数和错误分类的分数,如果正确分类的分数比错误分类的分数高,比错误分类的分数高出某个安全的边距,我们把这个边距设为1,如果真实的分数很高,或者说真实分类的分数,比其他任何错误分类的分数都要高很多,那么损失为0,接下来把图片对每个错误分类的损失加起来,就可以得到数据集中这个样本的最终损失,然后还是一样的对整个训练集取平均。

 

猫是正确的分类,所以我们要对汽车和青蛙类都要做一遍运算,来看汽车,车子的分数5.1减去猫的分数3.2再加上1,我们比较猫和车的时候,我们会得到一些损失,因为车的分数比猫还高,这是不好的,对这个样本来说,我们得到了2.9的损失值,接下来我们比较猫和青蛙的分数,猫是3.2,青蛙的分数为-1.7,所以猫的得分超出青蛙得分1分以上,这表明两个类别的损失项为0,训练样例的多分类支持向量机损失函数,是对每一类这样的类别构成的损失项的加和,也就是2.9加上0,即2.9,这也一定程度上表明2.9是我们分类器对于这一个训练样例训练得多好的一个量化指标。

 

 

 

最终,我们对于整个训练数据集的损失函数,是这些不同样例损失函数的平均值,这一定程度上就是我们的量化衡量,5.3反应了我们的分类器在数据集上有多不好。

 

2. 正则化

 

事实上,我们可能会更喜欢分类器可能是预测的,这条绿色的曲线,而不是这个非常复杂的蓝线,以及我们通常解决的方式,这是正则化的概念,所以在这里我们要为损失函数添加一个附加项,除了数据丢失之外,我们通常会添加一个项到损失函数里,这个项称为正则项,鼓励模型以某种方式选择更简单的W,这里实际上也体现了奥卡姆剃刀的理念,也就是科学发现最基本的思想就是,要让一个理论的应用更广泛,也就是说,如果你有许多个可以解释你观察结果的假设,一般来讲,你应该选择最简约的,因为这样可以在未来,将其用于解释新的观察结果,我们运用这种直觉的方式,基于这一思想并运用于机器学习中,我们会直接假设正则项,这通常记为R,这样一来,标准损失函数就有了两个项:数据丢失项正则项。这里有一些超参数lamuda,用来平衡这两个项。

 

3. Softmax

 

回想一下多类别SVM损失函数的背景,针对那些得分,我们并没有一个解释,当我们进行分类时,我们的模型函数F,给我们输入了10个数字,这些数字代表了这些类别的得分,针对多类别的SVM,我们并没有对这些得分做过多的解释,我们只是说我们想要真实的分数,正确分类的得分,应该要比不正确的类别得分要高才好,除此之外我们并没有解释这些得分真正的意涵,但对于softmax,我们将赋予这些得分一些额外的含义,并且我们会用这些分数,针对我们的类别,去计算概率分布,所以当我们谈论分数时,我们将用这个所谓的softmax损失函数,我们将其指数化以便结果都是正数,接着我们利用这些指数的和来归一化它们,当我们将分数经过softmax函数处理后,我们得到了概率分布,对于所有类别我们都有了相应概率,每个概率都介于0和1之间,所有类别的概率和等于1。

 

 

4. Softmax VS SVM

 

在多分类SVM损失函数中,当样本中有车,那么车的分值就会比其他不正确的分值要高,即使车的分值稍微有所变化,也并不会对结果产生根本改变,因为对SVN损失函数来说,唯一关心的是正确的分值要比不正确分值高出一个安全边际。但是,softmax这种方式就不同了,softmax的目标是将概率质量函数(离散分布值)等于1,所以,你给正确分类再高的分值,同时给不正确分类再低的分值,softmax依然会在正确的分类上,积累更多的概率质量,正确的阶级向无穷大迈进,并持续将这一分值推向无穷大,并将不正确分类的分值推向负无穷。

 

我们如何才能真正发现这个W使损失最小化?这时就要用到梯度下降。

5. 梯度下降

 

x可能是整个向量,所以我们需要有多元(多参数)这个概念,在多元情况下生成的导数,就叫做梯度。

5.1 数值计算法梯度下降

梯度下降类比:

img

 怎么达到谷底。。

  一维求导:

img

  多维时,分别对分量求导。具体步骤如下所示:

  img   img

  上述计算了2个分量的偏导。按照此方法求其余分量偏导。代码结构如下图:

img

  显然,这种方式计算比较繁琐,参数更新比较慢。

5.2 解析法梯度下降

数值计算法梯度下降使用逐一对w进行微量变化,并求导数的方式步骤繁琐,并且产生了很多不必要的步骤。

解析法梯度下降是直接对w分量求偏导的方式:

 

img

  img

  对于SVM:

img

  对于softmax:

img

在这里插入图片描述 数值梯度不好用,解析梯度好用 但是数值梯度是很好的调试工具,梯度检查就是使用数值梯度作为单元测试来检测解析梯度的正确性

 

步长是一个超参数,其也叫做学习率,训练网络时是第一个要检查的超参数,其他的比如模型的大小以及正则化会晚点再做

我们定义数据的损失值是所有训练集损失值的平均值,但实际上N会很大,那么计算该损失值的计算成本会很高,需要很长一段时间来跟新W。所以实际操作中我们往往使用随机梯度下降法,它并非计算整个训练集的误差和梯度值。而是在每次迭代时选取一小部分训练样本成为minibatch(小批量),利用minibatch来估算误差总和以及实际梯度。每次迭代minibatch都是随机选取的。

6. 图像识别两步走策略

线性分类器就是将图像的原始像素取出,然后直接传入线性分类器,但是这样做效果并不好,所以在深度神经网络大规模运用之前,常用的方法就是首先计算原始图片的各种特征代表,比如说是可能与图片形象有关的数值,然后将不同的特征向量组合到一起,得到图像的特征表述,最后将这一特征表述传入到线性分类器,而不是将原始像素传入到线性分类器。

 

这样做的动机就是 对于左侧图片的点的分布不能用一个线性决策边界来划分点的种类。但是我们采用一个特征转换(此处使用极坐标转换),得到一个转换特征,就可以把一个复杂的数据集转化成线性可分的。

7. 常见的图像特征

在这里插入图片描述 颜色直方图,获取每个像素值对应的光谱,计算每个像素点出现的次数,从全局上告诉我们图像中的有哪些颜色

方向梯度直方图,将图像按八个像素区分为八份,计算每个像素值的主要边缘方向。

词袋,首先获得一推图像,然后从这些图像中进行小的随机块的采样,然后采用k均值等方法将他们聚合成簇,从而得到不同的簇中心,这些簇中心可能代表了图像中不同类型的视觉单词

这些视觉单词就像一个码本,用这些视觉单词对图像进行编码,看这些视觉单词在图像中出现过多少次

传统方式与神经网络处理图像问题有哪些不同点

神经网络不需要提前对图像提取特征,而是直接从图像中学习特征。

参考博文:

https://www.cnblogs.com/wangxiu/p/5668659.html

https://www.pianshen.com/article/23751313154/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值