深度学习与CV教程(3) | 损失函数与最优化

2022-05-27 12:51:17 浏览数 (2)

  • 作者:韩信子@ShowMeAI
  • 教程地址:http://www.showmeai.tech/tutorials/37
  • 本文地址:http://www.showmeai.tech/article-detail/262
  • 声明:版权所有,转载请联系平台与作者并注明出处
  • 收藏ShowMeAI查看更多精彩内容
Loss Functions and Optimization; 深度学习与计算机视觉; Stanford CS231nLoss Functions and Optimization; 深度学习与计算机视觉; Stanford CS231n

本系列为 斯坦福CS231n《深度学习与计算机视觉(Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频可以在 这里 查看。更多资料获取方式见文末。

引言

在上一篇 深度学习与计算机视觉教程(2) - 图像分类与机器学习基础 内容中,我们对线性分类器做了一些介绍,我们希望线性分类器能够准确地对图像进行分类,要有一套优化其权重参数的方法,这就是本篇ShowMeAI要给大家介绍到的损失函数与最优化相关的知识。

本篇重点

  • 损失函数
  • 数据损失与正则损失
  • SVM 损失
  • Softmax损失
  • 优化策略
  • 梯度计算方法
  • 梯度下降

1.线性分类:损失函数

1.1 损失函数的概念

回到之前讲解过的小猫分类示例,这个例子中权重值 W 非常差,因为猫类别的得分非常低(-96.8),而狗(437.9)和船(61.95)比较高。

损失函数与最优化; 线性分类器; 损失函数的概念; 3-1损失函数与最优化; 线性分类器; 损失函数的概念; 3-1

我们定义损失函数(Loss Function)(有时也叫代价函数 Cost Function目标函数 ObjectiveL 来衡量对预估结果的「不满意程度」。当评分函数输出结果与真实结果之间差异越大,损失函数越大,反之越小。

对于有 N 个训练样本对应 N 个标签的训练集数据 (x_{i},y_{i})),损失函数定义为:

L=frac{1}{N} sum_{i=1}^NL_i(f(x_i,W), y_i)
  • 即每个样本损失函数求和取平均。目标就是找到一个合适的 W 使 L 最小。
  • 注意:真正的损失函数 L 还有一项正则损失 R(W),下面会有说明。

损失函数有很多种,下面介绍最常见的一些。

1.2 多类支持向量机损失 (Multiclass Support Vector Machine Loss)

SVM 的知识可以参考ShowMeAI的图解机器学习教程中的文章支持向量机模型详解,多类 SVM 可以看作二分类 SVM 的一个推广,它可以把样本数据分为多个类别。

1) 数据损失(data loss)

SVM 的损失函数想要 SVM 在正确分类上的得分始终比不正确分类上的得分高出一个边界值 Delta

我们先看一条数据样本(一张图片)上的损失函数 L_i 如何定义,根据之前的描述,第 i 个数据 (x_{i},y_{i}) )中包含图像 x_i 的像素和代表正确类别的标签 y_i。给评分函数输入像素数据,然后通过公式 f(x_i, W) )来计算不同分类类别的分值。

这里我们将所有分值存放到 s 中,第 j 个类别的得分就是 s 的第 j 个元素: s_j = f(x_i, W_j)。针对第 i 条数据样本的多类 SVM 的损失函数定义如下:

L_i = sum_{jneq y_i} max(0, s_j - s_{y_i} Delta)

直观来看,就是如果评分函数给真实标签的分数比其他某个标签的分数高出 Delta,则对该其他标签的损失为 0;否则损失就是 s_j - s_{y_i} Delta。要对所有不正确的分类循环一遍。

下面用一个示例来解释一下:

损失函数与最优化; 多类支持向量机损失; 损失<!--这里原本应该有有一个/div-->
<!-- 额外新增 占位 -->
<action class=

0 人点赞