CS231n-2017 第3讲 损失函数与优化

一. 损失函数

1. 基本概念

为了评估现有的模型的好坏,需要一个定量指标。这就是损失函数起作用之处。
对于由 N N 个样本组成的数据集{(xi,yi)}Ni=1 { ( x i , y i ) } i = 1 N ,定义总体损失函数为各个样本造成的损失的平均

L=1NiLi(f(xi,W),yi) L = 1 N ∑ i L i ( f ( x i , W ) , y i )

2. SVM的损失函数

多分类的支持向量损失函数可定义如下:

Li=jyi{0sjsyi+1ifsyisj+1otherwise=jyimax(0,sjsyi+1) L i = ∑ j ≠ y i { 0 i f s y i ≥ s j + 1 s j − s y i + 1 o t h e r w i s e = ∑ j ≠ y i max ( 0 , s j − s y i + 1 )

即当正确分类的得分比错误类别的得分高出一个安全边际1的时候,认为没有损失。

这个损失函数最大值为无穷大,最小值为 0 0 。当初始化时,所有分类得分大致相同,损失函数约为C1 C − 1 。当正确分类的得分稍微变化时,由于安全边际的存在,损失函数大致不变。

3. 正则化

在上述场景下,如果我们找到一个使损失函数为 0 0 W W ,那么 2W 2 W 也会使损失函数为0。那么如何选择参数呢?一个准则是参数越简单越好,采用的做法是添加正则项限制模型复杂度。

L=1NiLi(f(xi,W),yi)+λR(W) L = 1 N ∑ i L i ( f ( x i , W ) , y i ) + λ R ( W )

4. SoftMax分类器(多类别逻辑回归)

不预测得分,预测每个类别的概率。需要保证输出非负,且求和归一化,即SoftMax操作。

P(Y=k|X=xi)=eskjesj P ( Y = k | X = x i ) = e s k ∑ j e s j

此时期望正确类别的概率接近于1。在这种场景下,可采用交叉熵作为损失函数:

L=logP(Y=yi|X=xi) L = − log ⁡ P ( Y = y i | X = x i )

当初始化时,所有分类的概率值大致相同,此时损失函数约为 logC log ⁡ C

SVM损失函数的对比:在SVM损失函数优化问题中,当找到一个足够小的损失值的时候,算法将不再进行优化,即不再扩大错误分类与正确分类的边际。但在逻辑回归损失函数情形中,算法将持续优化至正确分类的概率足够接近于 1 1

二. 优化算法

采用的优化方法就是梯度下降法。

在实践中,可使用梯度的数值计算方法校验代码的正确性。

如果数据集过于庞大,用所有数据计算梯度的复杂度就很高,因此将数据集划分为小块,针对每一小块计算梯度,这就是随机梯度法。

三. 图像特征提取

CS231n-2017 第3讲 损失函数与优化_第1张图片
图 1. 做特征空间转换后,可能会比较容易区分。


经过特征提取后,一些图像可能就比较容易区分。

获取图像特征的方法有:

  • 直方图。
  • 方向梯度直方图。
  • 词频方法:类比于自然语言处理中的方法,对图像分小块,然后进行聚类,以聚出的类别为码本,对图像进行编码。
  • 使用卷积神经网络,则在分类过程中会自动提取图像特征。

一些有用的链接

  • 梯度下降法可视化,需科学上网。
  • SVM的优化过程可视化。

你可能感兴趣的:(CS231n,CS231n,深度学习,机器视觉)