什么是损失函数?

损失函数(Loss Function) 也可称为代价函数 (Cost Function)或误差函数(Error Function),用于衡量预测值与实际值的偏离程度。一般来说,我们在进行机器学习任务时,使用的每一个算法都有一个目标函数,算法便是对这个目标函数进行优化,特别是在分类或者回归任务中,便是使用损失函数(Loss Function)作为其目标函数。机器学习的目标就是希望预测值与实际值偏离较小,也就是希望损失函数较小,也就是所谓的最小化损失函数。

损失函数是用来评价模型的预测值

与真实值

的不一致程度,它是一个非负实值函数。通常使用

来表示,损失函数越小,模型的性能就越好。

一、Zero-one Loss(0-1损失)

0-1 loss 是最原始的loss,它是一种较为简单的损失函数,如果预测值与目标值不相等,那么为1,否则为0,即:

0-1损失可用于分类问题,但是由于该函数是非凸的,在最优化过程中求解不方便,有阶跃,不连续。0-1 loss无法对x进行求导,在依赖于反向传播的深度学习任务中,无法被使用,所以使用不多。

二、Hinge Loss

Hinge loss主要用于支持向量机(SVM)中,它的称呼来源于损失的形状,定义如下:

其中y=+1或−1,f(x)=wx+b,当为SVM的线性核时。如果分类正确,loss=0,如果错误则为1-f(x),所以它是一个分段不光滑的曲线。Hinge loss被用来解 SVM 中的间隔最大化问题。

三、softmax-loss(多类别)

其中

是softmax函数计算的类别概率。softmax loss 被广泛用于分类问题中,而且发展出了很多的变种,有针对不平衡样本问题的weighted softmax loss、focal loss,针对蒸馏学习的soft softmax loss,促进类内更加紧凑的L-softmax Loss等一系列改进。

强调一下:softmax函数与softmax-loss函数是不一样的,千万,千万别记混了。

softmax函数最常用作分类器的输出,来表示

个不同类上的概率分布。

softmax公式如下:

使用softmax分类的前提:类别之间都是相互独立的。

softmax分类的本质:将特征向量做归一化处理(输出总是和为1),将线性预测值转换为类别概率。

四、Logistic-loss(二分类的交叉熵损失函数)

关于 Logistic-loss的具体细节,请参考我之前的文章-温故知新——逻辑回归(Logistic Regression)。

Logistic 不使用平方损失的原因:平方损失会导致损失函数是非凸的,不利于求解,因为非凸函数会存在许多的局部最优解。

五、交叉熵,cross entropy(多分类)

cross entropy loss用于度量两个概率分布之间的相似性。

其中

为样本的真实标签,取值只能为0或1;

为预测样本属于类别

的概率;

为类别的数量。

六、softmax cross entropy

其中

表示样本

属于类别

的概率(真实标签,只能为0或1);

表示softmax预测的样本

属于类别

的概率;

是类别数;

是样本总数。如果概率是通过softmax计算得到的,那么就是softmax cross entropy。

七、triplet loss

triplet-loss是深度学习中的一种损失函数,用于训练差异性较小的样本,如人脸等。数据包括锚(Anchor)示例、正(Positive)示例、负(Negative)示例,通过优化锚示例与正示例的距离小于锚示例与负示例的距离,实现样本的相似性计算。也就是说通过学习后,使得同类样本的 positive 更靠近Anchor,而不同类的样本Negative则远离Anchor。

如上图所示,triplet是一个三元组,这个三元组是这样构成的:从训练数据集中随机选一个样本,该样本称为Anchor,然后再随机选取一个与Anchor (记为x_a)属于同一类的样本和不同类的样本,这两个样本对应的称为Positive (记为x_p)和Negative (记为x_n),由此构成一个(Anchor,Positive,Negative)三元组。

有了上面的triplet的概念, triplet loss就好理解了。针对三元组中的每个元素(样本),训练一个参数共享或者不共享的网络,得到三个元素(样本)的特征表达,分别记为:

通过Triplet Loss的学习后,使得Positive 和Anchor(同类)特征表达之间的距离尽可能小,而Anchor和Negative(不同类)特征表达之间的距离尽可能大,并且要让x_a与x_n之间的距离和x_a与x_p之间的距离之间有一个最小的间隔

。公式表示就是:

其中距离用欧式距离度量,

也称为margin(间隔)参数。设置一个合理的 margin 值很关键,这是衡量相似度的重要指标。简而言之,margin 值设置的越小,loss 很容易趋近于 0 ,但很难区分相似的图像。margin 值设置的越大,loss 值较难趋近于 0,甚至导致网络不收敛,但可以较有把握的区分较为相似的图像。

对应的目标函数为:

其中+表示[ ]内的值大于零的时候,取该值为损失;小于零的时候,损失为零。

【triplet loss 梯度推导】

我们将上述目标函数记为 L,则有:

在训练Triplet Loss模型时,只需要输入样本,不需要输入标签,这样避免标签过多、同标签样本过少的问题,模型只关心样本编码,不关心样本类别。Triplet Loss在相似性计算和检索中的效果较好,可以学习到样本与变换样本之间的关联,检索出与当前样本最相似的其他样本。Triplet Loss通常应用于个体级别的细粒度识别,比如分类猫与狗等是大类别的识别,但是有些需求要精确至个体级别,比如识别不同种类不同颜色的猫等,所以Triplet Loss最主要的应用也是在细粒度检索领域中。

Triplet Loss的优点:如果把不同个体作为类别进行分类训练,Softmax维度可能远大于Feature维度,精度无法保证。

Triplet Loss一般比分类能学习到更好的特征,在度量样本距离时,效果较好;

Triplet Loss支持调整阈值Margin,控制正负样本的距离,当特征归一化之后,通过调节阈值提升置信度。

八、均方误差(mean squared error,MSE),也叫平方损失或 L2 损失,常用在最小二乘法中。它的思想是使得各个训练点到最优拟合线的距离最小(平方和最小)。均方误差损失函数也是我们最常见的损失函数了,相信大家都很熟悉了,常用于回归问题中。定义如下:

当预测值与目标值相差很大时,梯度容易爆炸,这既是 L2 loss 的最大问题。

九、平均绝对误差(Mean Absolute Error,MAE)是所有单个观测值与算术平均值的绝对值的平均,也被称为 L1 loss,常用于回归问题中。与平均误差相比,平均绝对误差由于离差被绝对值化,不会出现正负相抵消的情况,因而,平均绝对误差能更好地反映预测值误差的实际情况。

由于 L1 loss 具有稀疏性,为了惩罚较大的值,因此常常将其作为正则项添加到其他loss中作为约束。L1 loss的最大问题是梯度在零点不平滑,导致会跳过极小值。

十、Smooth L1损失

原始的L1 loss和L2 loss都有缺陷,比如L1 loss的最大问题是梯度不平滑,而L2 loss的最大问题是容易梯度爆炸,所以研究者们对其提出了很多的改进。

在faster rcnn框架中,使用了smooth L1 loss来综合L1与L2 loss的优点,定义如下:

比较小时,上式等价于L2 loss,保持平滑。在

比较大时,上式等价于L1 loss,可以限制数值的大小。Smooth L1损失能够解决梯度爆炸问题。

十一、center loss

center loss 来自ECCV2016的一篇论文:A Discriminative Feature Learning Approach for Deep Face Recognition。

什么是center loss?一个batch中的每个样本的feature离feature 的中心的距离的平方和要越小越好,也就是类内(intra-class)距离要越小越好。这就是center loss。

其中

表示mini-batch的大小,

表示第

个样本的特征,

表示第

个正确样本的特征中心。

通常在用CNN做人脸识别等分类问题时,我们一般采用 softmax loss,在close-set测试中模型性能良好,但在遇到unseen数据情况下,模型性能会急剧下降。一个直观的感觉是:如果模型学到的特征判别度更高,那么再遇到unseen数据时,泛化性能会比较好。为了使得模型学到的特征判别度更高,论文提出了一种新的辅助损失函数,之说以说是辅助损失函数是因为新提出的损失函数需要结合 softmax loss,而非替代后者,在不同数据及上提高了识别准确率。

在结合使用这两种损失函数时,可以认为 softmax loss 负责增加inter-class距离,center-loss 负责减小intra-class距离,这样学习到的特征判别度会更高。

缺点:最麻烦的地方在于如何选择训练样本对。在论文中,作者也提到了,选取合适的样本对对于模型的性能至关重要,论文中采用的方法是每次选择比较难以分类的样本对重新训练,类似于hard-mining。同时,合适的训练样本还可以加快收敛速度。

k均值的损失函数_常用的损失函数相关推荐

  1. k均值例子 数据挖掘_数据挖掘的技术有很多种,常用的数据挖掘技术就这13种...

    数据挖掘就是从大量的.不完全的.有噪声的.模糊的.随机的数据中,提取隐含在其中的.人们事先不知道的但又是潜在有用的信息和知识的过程.数据挖掘的任务是从数据集中发现模式,可以发现的模式有很多种,按功能可 ...

  2. k均值例子 数据挖掘_人工智能、数据挖掘、机器学习和深度学习的关系

    一.人工智能 人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器. 实际应用比如:机器视觉,指纹识别,人脸识别,视网膜识别,虹膜识别,掌纹识 ...

  3. k均值例子 数据挖掘_【十大经典数据挖掘算法】k-means

    作者简介: Treant 人工智能爱好者社区专栏作者 博客专栏:https://www.cnblogs.com/en-heng 1.引言 k-means与kNN虽然都是以k打头,但却是两类算法--kN ...

  4. python图片压缩算法_使用K均值算法进行图片压缩

    K均值算法 上一期介绍了机器学习中的监督式学习,并用了离散回归与神经网络模型算法来解决手写数字的识别问题.今天我们介绍一种机器学习中的非监督式学习算法--K均值算法. 所谓非监督式学习,是一种与监督式 ...

  5. 机器学习--K均值聚类

    机器学习--聚类 一.无监督学习 二.KMeans聚类 2.1 概览 2.2 理论介绍 2.2.1 模型 2.2.2 策略 2.2.3 算法 2.3 案例讲解 2.4 Python实现 2.4.1 导 ...

  6. spss聚类分析_SPSS聚类分析 I K均值聚类法案例实操

    - 点击上方"中国统计网"订阅我吧!- 文末领取医疗行业报告 今天想写一下聚类分析方法之一:K-Mean聚类法 01聚类分析模型简介 (1)聚类分析没有过多的统计理论支持,也没有统 ...

  7. k均值图像分割的GPU加速

    图像分割是指把图像分成各具特性的区域并提取出感兴趣目标的技术和过程,是从图像处理到图像分析的关键步骤.K均值聚类算法是目前最受欢迎和应用最为广泛的聚类分析方法之一.K均值聚类算法用于图像分割具有直观. ...

  8. 边框回归的损失函数_一文搞懂常用的七种损失函数

    主要内容: 0-1, Hinge, Logistic, Cross Entropy, Square, Absolute, Huber 简述: 损失函数刻画了模型与训练样本的匹配程度. 分类损失 分类L ...

  9. yolov3损失函数改进_基于改进损失函数的YOLOv3网络

    目标检测具有广阔的发展前景和巨大的商业价值, 已经成为国内外相关从业者的研究热点, 在智能安防.自动驾驶等领域具有广泛应用. 经典的目标检测方法有Dalal于2005年提出的基于HOG特征的检测方法[ ...

  10. python图像分割_基于K均值聚类算法的Python图像分割

    1个K均值算法 实际上,K-means算法是一种非常简单的算法,与算法思想或特定实现无关. 通过以一定方式测量样本之间的相似度,并迭代更新聚类中心,它属于无监督分类. 当聚类中心不再移动或移动差异小于 ...

最新文章

  1. to make target ‘../../lib/aaaaa.so‘, needed by ‘ xxx ‘
  2. C++ lambda表达式
  3. 深入理解计算机系统9个重点笔记
  4. 如何将文字转换成语音?文字转语音哪个工具好
  5. 前端性能优化之防抖-debounce
  6. 操作系统的功能和特征
  7. [NOIP2006] 数列
  8. 数据结构与算法之字符凭拼接最低字典序和数据流中取中位数
  9. 智能家居(工厂模式)
  10. jaxb_JAXB –新手的观点,第1部分
  11. 04-图像的形状绘制
  12. Cocos2d开发1:Xcode与TexturePacker的集成
  13. 院士袁亚湘:莫把数学当语文来教
  14. 用HTML,CSS和JavaScript创建iPhone/iPad应用程序
  15. 关于 in与exist , not in与not exist 的区别
  16. pytorch:测试GPU是否可用
  17. sprutcam 多机器人_Sprutcam工业机器人离线编程系统
  18. 智慧工地:绿色智能 让施工更简单
  19. html制作古诗带图画大全,古诗配画图片大全简单
  20. 2019-2020年目标跟踪论文汇总

热门文章

  1. 计算机 26个英文字母代表数字,数字能量字母对照表-26个英文字母各代表什么数字...
  2. 简单控件学习——Lable/HyperLink
  3. C#计算wgs84大地坐标转换为空间直角坐标
  4. Neo4j图数据库和GDS图算法应用
  5. uiautomatorviewer链接不到android模拟器 报Error while obtaining UI hierarchy XML file: com.android
  6. 测试图片,视频 地址
  7. python爬不同图片分别保存在不同文件夹中的实现
  8. 相机内存卡照片恢复方法
  9. Unity Transform 学习
  10. #pragma clang diagnostic ignored 忽略警告