【2017年cs231n学习笔记2】Lecture3 损失函数 最优化

来源:互联网 发布:移动硬盘数据同步软件 编辑:程序博客网 时间:2024/06/11 00:24

这节课的主要内容:
1. 定义一个损失函数(loss function),用将训练集代入其中获得的评分来量化W的好坏。
2. 找到一个高效的方法来寻找使损失函数最小的W,(我们称其为最优化optimization)


损失函数

首先我们定义损失函数的一般形式:
对于一个数据集
这里写图片描述
Xi代表输入进入分类器的图像像素数据,Yi代表你希望得出的标签。
我们定义其损失函数的一般形式为:
这里写图片描述
损失函数定义后,我们就需要考虑Li的定以了,这节课介绍了两种Li的形式,第一种是多类支持向量机。

多类支持向量机损失(Multiclass SVM loss)

对于给定的数据xi,yi,和分类器函数s=f(xi,W)
我们定以其Multiclass SVM loss为
这里写图片描述
首先我们知道,xi的类别是yi,即在分类器得到的输出矩阵中,必然有一个元素是对应于yi的评分,我们将其表示为syi即正确的分类,对于输出矩阵中处syi以外的值,我们以sj表示,即错误分类,式子中的1是可变的参数,在这里我们将其设为1(后面会对其讨论)。
对这一公式的直观解释是:如果正确分类的值比错误分类的值还大,则Li取零,若不是则取sjsyi+1
很明显这是符合建立损失函数的目的的:
如果syi很大,说明分类器得出的是正确的,即损失是最小的,自然Li=0
按照上面的理解,其实多类SVM loss可以写成:
这里写图片描述

下面是一个计算Li的例子:
这里写图片描述
相应的可以计算出对于汽车图
这里写图片描述
对于青蛙图:
这里写图片描述
于是损失函数L=1NNi=1Li=(2.9+0+12.9)/3=5.27
那么定义了多类SVM损失之后,我们面临两个问题:
1. 根据其公式,如果我们将W能正确分类所有数据,那么乘以一个系数λ,最终的L的取值是否改变?
-如果本身L=0,很明显是不变的。
2. 两个W,W1每一个元素的值都比较均衡,W2中有个别元素值很大占很大权重,他们得到的分类结果一致,我们必然会选择各个元素值较均衡的那个,那么如何在损失函数中体现W1W2更合适呢?
对于第二个问题的思考,为我们引入了一个概念:正则化

正则化(Regularization)


对于正则化一词的理解:
如果在数据中你有一些特殊值,你要消除特殊值带来的影响,有两种方式,一是不用这些特殊值;二是依然使用这些特殊值,但是使用一个函数来抵消其影响,等于将这些特殊值常规化了,所以叫其正则。


我们通过在L中引入正则化部分来使不均衡W有较大的损失函数,从而消除其不良影响,于是获得如下形式的损失函数形式:
这里写图片描述
如图我们将之前的L称为数据损失,而新加入的项称为正则化,新的损失函数由数据损失和正则化一同构成。
正则化函数R(W)有许多形式:
这里写图片描述

Softmax分类器

除了多类SVM损失以外,还有一个常用的便是Softmax分类器。
在多类支持向量机中,我们对各类进行评分,但是我们并没有为这些评分赋予什么意义,而在softmax中,我们为这些评分赋予了意义,并且我们将使用这些评分来计算类别的概率分布。
其形式为
这里写图片描述
我们可以通过一个例子来感受softmax分类器:
这里写图片描述
很直观也很清晰,所以就不多讲了。

最优化(Optimization)

上面我们讲解了如何衡量W的好坏,那么,怎么得出最好的W呢?这其实就是最优化问题。
首先我们定义了损失函数最小的W是最好的W,所以求W最优化的问题,实际上就是求使损失函数最小的W。
我们能想到的最简单的方式就是把随机选取W并代入损失函数去试,不断更新直到找到好的,很明显,这个方法太花时间,太笨了,实际上结果也不甚理想。
于是我们换了一个思路:
假设我们在山中,我们想去山脚,我们会感受所在地的倾斜程度,然后朝着下坡的方向行走,然后在不断的感受和行走中到达了山脚。
人可以用脚去感受,那么机器呢?我们使用斜率(梯度),我们总是沿着梯度下降的方向行走。
对于确定这个方向我们有两种方式,第一种是按照斜率的定义计算:

df(x)dx=limh0f(x+h)f(x)h

计算过程如图:
这里写图片描述
明显这是愚蠢而耗费时间的
庆幸我们有第二种办法:梯度公式WL
这里写图片描述
我们通过求W的梯度,而后向负梯度方向移动一定的步长,即是向损失函数减少的方向移动了。
当然,在这里,步长的选择也是一个超参数问题
第二种方法也有问题,当步长选择不恰当的时候,可能带来错误的结果,所以我们一般两种方法相结合。

我们还考虑到:图片的数据量太大了,计算起来太耗时间,有没有优化的方法呢?
有:
比如Stochastic Gradient Descent (SGD)随机梯度下降法。
这一方法是在数据集中随机选取一些一定量的数据来计算梯度,从而减少计算量。
比如提取特征值,将图片提取为一定的特征值数据,从而减少计算量,甚至能使分类器形式更简单。

阅读全文
0 0
原创粉丝点击