赞
踩
本系列为 斯坦福CS231n《深度学习与计算机视觉(Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频可以在 这里 查看。更多资料获取方式见文末。
在上一篇 深度学习与计算机视觉教程(2) - 图像分类与机器学习基础 内容中,我们对线性分类器做了一些介绍,我们希望线性分类器能够准确地对图像进行分类,要有一套优化其权重参数的方法,这就是本篇ShowMeAI要给大家介绍到的损失函数与最优化相关的知识。
回到之前讲解过的小猫分类示例,这个例子中权重值 W W W 非常差,因为猫类别的得分非常低(-96.8),而狗(437.9)和船(61.95)比较高。
我们定义损失函数(Loss Function)(有时也叫代价函数 Cost Function 或目标函数 Objective) L L L 来衡量对预估结果的「不满意程度」。当评分函数输出结果与真实结果之间差异越大,损失函数越大,反之越小。
对于有 N N N 个训练样本对应 N N N 个标签的训练集数据 ( x i , y i ) (x_{i},y_{i}) (xi,yi)),损失函数定义为:
L = 1 N ∑ i = 1 N L i ( f ( x i , W ) , y i ) L=\frac{1}{N} \sum_{i=1}^NL_i(f(x_i,W), y_i) L=N1i=1∑NLi(f(xi,W),yi)
损失函数有很多种,下面介绍最常见的一些。
SVM 的知识可以参考ShowMeAI的图解机器学习教程中的文章支持向量机模型详解,多类 SVM 可以看作二分类 SVM 的一个推广,它可以把样本数据分为多个类别。
SVM 的损失函数想要 SVM 在正确分类上的得分始终比不正确分类上的得分高出一个边界值 Δ \Delta Δ。
我们先看一条数据样本(一张图片)上的损失函数 L i L_i Li 如何定义,根据之前的描述,第 i i i 个数据 ( x i , y i ) (x_{i},y_{i}) (xi,yi) )中包含图像 x i x_i xi 的像素和代表正确类别的标签 y i y_i yi。给评分函数输入像素数据,然后通过公式 f ( x i , W ) f(x_i, W) f(xi,W) )来计算不同分类类别的分值。
这里我们将所有分值存放到 s s s 中,第 j j j 个类别的得分就是 s s s 的第 j j j 个元素: s j = f ( x i , W j ) s_j = f(x_i, W_j) sj=f(xi,Wj)。针对第 i i i 条数据样本的多类 SVM 的损失函数定义如下:
L i = ∑ j ≠ y i max ( 0 , s j − s y i + Δ ) L_i = \sum_{j\neq y_i} \max(0, s_j - s_{y_i} + \Delta) Li=j=yi∑max(0,sj−syi+Δ)
直观来看,就是如果评分函数给真实标签的分数比其他某个标签的分数高出 Δ \Delta Δ,则对该其他标签的损失为 0 0 0;否则损失就是 s j − s y i + Δ s_j - s_{y_i}+ \Delta sj−syi+Δ。要对所有不正确的分类循环一遍。
下面用一个示例来解释一下:
https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/868752?site
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。