0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

表示学习中7大损失函数的发展历程及设计思路

深度学习自然语言处理 来源:圆圆的算法笔记 作者:Fareise 2022-07-08 14:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

表示学习的目的是将原始数据转换成更好的表达,以提升下游任务的效果。在表示学习中,损失函数的设计一直是被研究的热点。损失指导着整个表示学习的过程,直接决定了表示学习的效果。这篇文章总结了表示学习中的7大损失函数的发展历程,以及它们演进过程中的设计思路,主要包括contrastive loss、triplet loss、n-pair loss、infoNce loss、focal loss、GHM loss、circle loss。

1. Contrastive Loss

Dimensionality Reduction by Learning an Invariant Mapping(CVPR 2006)提出contrastive loss,模型中输入两个样本,经过相同的编码器得到两个样本的编码。如果两个样本属于同一类别,则优化目标为让两个样本在某个空间内的距离小;如果两个样本不属于同一类别,并且两个样本之间的距离小于一个超参数m,则优化目标为让两个样本距离接近m。损失函数可以表示为:

b2c16bd0-e8a5-11ec-ba43-dac502259ad0.png

Contrastive Loss是后面很多表示学习损失函数的基础,通过这种对比的方式,让模型生成的表示满足相似样本距离近,不同样本距离远的条件,实现更高质量的表示生成。

2. Triplet Loss

FaceNet: A unified embedding for face recognition and clustering(CVPR 2015)提出triplet loss,计算triplet loss需要比较3个样本,这3个样本分别为anchor、position和negtive。其目标为让anchor和positive样本(类别相同)的距离尽可能近,而和negtive样本(类别不同)的距离尽可能远。因此triplet loss设计为,让anchor和positive样本之间的距离比anchor和negtive样本要小,并且要小至少一个margin的距离才不计入loss。

b31439dc-e8a5-11ec-ba43-dac502259ad0.png

b3366f34-e8a5-11ec-ba43-dac502259ad0.png

3. N-pair Loss

Improved Deep Metric Learning with Multi-class N-pair Loss Objective(NIPS 2016)提出N-pairLoss。在之前提出的contrastive loss和triplet loss中,每次更新只会使用一个负样本,而无法见到多种其他类型负样本信息,因此模型优化过程只会保证当前样本的embedding和被采样的负样本距离远,无法保证和所有类型的负样本都远,会影响模型收敛速度和效果。即使多轮更新,但是这种情况仍然会导致每轮更新的不稳定性,导致学习过程持续震荡。

为了解决这个问题,让模型在每轮更新中见到更多的负样本,本文提出了N-pair loss,主要改进是每次更新的时候会使用多个负样本的信息。N-pair loss可以看成是一种triplet loss的扩展,两个的关系如下图,当我们有1个正样本和N-1个负样本时,N-pair loss的计算方式:

b3501f74-e8a5-11ec-ba43-dac502259ad0.png

b3677444-e8a5-11ec-ba43-dac502259ad0.png

扩大负样本数量的问题在于,原来每个batch内只需要计算N*3个样本,现在需要计算N*(N+1)个样本,运算量大幅度提高,难以实现。为了解决这个问题,文中提出将一个batch内不同样本的负样本数据共享,这样只需要计算3*N个样本的embedding即可,实现了效率提升。

b38b6188-e8a5-11ec-ba43-dac502259ad0.png

4. InfoNceLoss

Representation learning with contrastive predictive coding(2018)提出infoNce loss,是对比学习中最常用的loss之一,它和softmax的形式很相似,主要目标是给定一个query,以及k个样本,k个样本中有一个是和query匹配的正样本,其他都是负样本。当query和正样本相似,并且和其他样本都不相似时,loss更小。InfoNCE loss可以表示为如下形式,其中r代表temperature,采用内积的形式度量两个样本生成向量的距离,InfoNCE loss也是近两年比较火的对比学习中最常用的损失函数之一:

b3b6b7ca-e8a5-11ec-ba43-dac502259ad0.png

相比softmax,InfoNCE loss使用了temperature参数,以此将样本的差距拉大,提升模型的收敛速度。

5. Focal Loss

Focal Loss for Dense Object Detection(2018)提出Focal Loss,最开始主要是为了解决目标检测中的问题,但是在很多其他领域也可以适用。Focal Loss解决的核心问题是,当数据中有很多容易学习的样本和较少的难学习样本时,如何调和难易样本的权重。如果数据中容易的样本很多,难的样本很少,容易的样本就会对主导整体loss,对难样本区分能力弱。

为了解决这个问题,Focal Loss根据模型对每个样本的打分结果给该样本的loss设置一个权重,减小容易学的样本(即模型打分置信的样本)的loss权重。在交叉熵的基础上,公式可以表示如下:

b3d558d8-e8a5-11ec-ba43-dac502259ad0.png

b41f579e-e8a5-11ec-ba43-dac502259ad0.png

b44595c6-e8a5-11ec-ba43-dac502259ad0.png

其中pt表示,当label为1时模型的预测值,当label为0时1-模型的预测值。通过对这个loss公式的分析可以看出,对于label为1的样本,且模型预测值接近1,这个时候该样本分类正确且容易预测,则第一项权重接近0,显著减小了这种易分类样本的loss权重。当label为0,模型预测值接近1时,属于预测错误,loss的权重也是接近1的,对该样本的loss基本没有影响。

6. GHM Loss

在Focal Loss中强制让模型关注难分类的样本,但是数据中可能也存在一些异常点,过度关注这些难分类样本,反而会让模型效果变差。Gradient Harmonized Single-stage Detector(AAAI 2019)提出了GHM Loss,

首先分析了一个收敛的目标检测模型中,所有样本梯度模长的分布情况。梯度模长衡量了一个样本对模型梯度的影响大小(不考虑方向),反映了一个样本的难以程度,g越大模型因为此样本需要更新的梯度越大,预测难度越大。基于交叉熵和模型输出,梯度模长g定义如下:

b469321a-e8a5-11ec-ba43-dac502259ad0.png

b49ddbdc-e8a5-11ec-ba43-dac502259ad0.png

一个收敛的目标检测模型的梯度模长分布如下,简单样本(即g很小的样本)占绝大多数,这部分样本是我们希望减小其loss权重的;同时还有很多难样本,它们的g非常大,这部分可以被视作异常点,因为它们的梯度不符合大多数样本,对于这部分极难样本也应该减小权重。

b4c0313c-e8a5-11ec-ba43-dac502259ad0.png

为了同时减小易学习样本和异常点样本的权重,文中引入了梯度密度的概念(GD),衡量单位梯度模长的样本密度。这个梯度密度用来作为交叉熵loss中的样本权重,公式如下:

b4f887d0-e8a5-11ec-ba43-dac502259ad0.png

上面右侧的图对比了各种loss对不同梯度模长样本的影响情况,可以看到GHM对于简单样本和困难样本都进行了一定的loss抑制,而Focal Loss只能对简单样本进行loss抑制,普通loss对这两类样本都没有抑制作用。

7. Circle Loss

Circle Loss: A Unified Perspective of Pair Similarity Optimization(CVPR 2020)提出circle loss,从一个统一的视角融合了class-level loss和pair-wise loss。这两种优化目标,其实都是在最小化sn-sp,其中sn表示between-class similarity,即不同类别的样本表示距离应该尽可能大;sp表示within-class similarity,即相同类别的样本表示距离尽可能小。因此,两种类型的loss都可以写成如下统一形式:

b5231888-e8a5-11ec-ba43-dac502259ad0.png

基于sn-sp这种loss存在的问题是,优化过程中对sn和sp的惩罚力度是一样的。例如下面左图中,A点的sn已经很小了,满足要求了,而sp还不够大,sn-sp这种优化方法让sn和sp的更新幅度相同。而更好的方法是多更新一些sp,少更新一些sn。此外,这种loss在优化过程中也会导致模棱两可的情况,导致收敛状态不明确。例如T和T'这两个点,都满足给定margin的情况下的优化目标,但却存在不同的优化点。

b54a1e4c-e8a5-11ec-ba43-dac502259ad0.png

为了解决这个问题,circle loss在sn和sp分别增加了权重,用来动态确定sn和sp更新的力度,实现sn和sp以不同步调学习,circle loss的公式如下。当sn或sp相似度结果距离各自的最优点较远时,会以一个更大的权重进行更新。同时,在这种情况下loss不再是对称的,需要对sn和sp分别引入各自的margin。

b57cc478-e8a5-11ec-ba43-dac502259ad0.png

8. 总结

损失函数是影响表示学习效果的关键因素之一,本文介绍了表示学习中7大损失函数的发展历程,核心思路都是通过对比的方式约束模型生成的表示满足相似样本距离近,不同样本距离远的原则。 审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    45

    文章

    4011

    浏览量

    143368

原文标题:表示学习中的7大损失函数梳理

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ASPICE 的起源与发展历程(二)

    ,完成了标准发布以来最大幅度的迭代,将覆盖范围从软件扩展至硬件、机器学习等领域,适配智能网联汽车时代的机电软一体化研发需求。 从盛行时间来看,ASPICE 早期仅在欧洲车企供应链普及,2017 年
    发表于 04-03 15:11

    【「芯片设计基石——EDA产业全景与未来展望」阅读体验】--EDA了解与发展概况

    与创新能力、人才稀缺性。 二.EDA发展概况 EDA的发展历程主要经历四个阶段,分别为CAD(计算机辅助设计)阶段、CAE(计算机辅助工程)、EDA系统设计阶段、当代EDA阶段。 全球EDA市场格局
    发表于 01-19 21:45

    C语言回调函数原来这么简单

    了解开发语言的朋友应该都会对回调函数有所了解,在很多的程序开发语言中都能看到回调的身影。很多场景下,当某个条件成立以后我们**代码执行某些指定的部分,这个时候可以考虑使用回调函数的方式,这样做思路
    发表于 12-30 06:45

    函数指针及指针函数的区别

    用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数函数返回值必须赋给同类型的指针变量。   
    发表于 12-12 06:34

    激活函数ReLU的理解与总结

    。这个激活函数使得代码单元更容易被模型化也更容易解释,只有激活的代码单元携带大量信息。 应用如何选择合适的激活函数 这个问题目前没有确定的方法,需要结合实际应用情况进行选择。 1)深度
    发表于 10-31 06:16

    新思科技在中国30周年的发展历程回顾

    ;为主题,回顾了新思科技与中国半导体产业并肩前行、共同发展历程。他强调,新思科技始终秉持"让明天更有新思"的初心,从技术提供者成长为产业共建者,未来将继续与开发者携手,共同推动科技创新与产业变革。
    的头像 发表于 10-09 11:23 1280次阅读

    移动机器人技术的发展历程

    本白皮书聚焦于移动机器人领域的进展与挑战,重点探讨三个核心主题:机器人运动控制、复杂环境的感知与导航,以及在适应新任务时的模块化与灵活性。此外,文中还重点介绍了机器人系统从简单的固定机械臂到复杂人形机器人的演进历程,强调了具身智能在实现多功能高灵活性机器人中的重要性。
    的头像 发表于 09-29 16:46 3411次阅读

    晶体管的基本结构和发展历程

    随着集成电路科学与工程的持续发展,当前集成电路已涵盖二极管、晶体管、非易失性存储器件、功率器件、光子器件、电阻与电容器件、传感器件共 7 个大族,衍生出 100 多种不同类型的器件,推动集成电路技术
    的头像 发表于 09-22 10:53 1962次阅读
    晶体管的基本结构和<b class='flag-5'>发展</b><b class='flag-5'>历程</b>

    【精选直播】无感FOC控制滑模观测器估算转子角度思路分享

    数学模型回顾3、转子位置角的求取思路4、状态观测器5、滑模观测器6、传统滑模观测器与改进滑模观测器7、滑模观测器的离散化处理8、Q&A:解决你的实战难题!直播福利报名参与
    的头像 发表于 08-05 08:06 1309次阅读
    【精选直播】无感FOC控制<b class='flag-5'>中</b>滑模观测器估算转子角度<b class='flag-5'>思路</b>分享

    宝马集团车载总线技术的发展历程

    在汽车电子架构的演进历程,宝马集团始终扮演着技术先锋的角色。随着城市化进程的加快和技术日益发展,宝马从早期简单的LIN总线到如今高性能的CANFD总线,宝马通过不断创新,推动了车载通信技术的迭代
    的头像 发表于 07-25 14:12 2474次阅读

    求一份CS32A011K8V7的RS485通讯历程

    求一份CS32A011K8V7的RS485通讯历程,邮箱:15317208748@163.com
    发表于 07-17 08:41

    FPGA在机器学习的具体应用

    随着机器学习和人工智能技术的迅猛发展,传统的中央处理单元(CPU)和图形处理单元(GPU)已经无法满足高效处理大规模数据和复杂模型的需求。FPGA(现场可编程门阵列)作为一种灵活且高效的硬件加速平台
    的头像 发表于 07-16 15:34 3097次阅读

    鸿蒙发展历程

    【HarmonyOS 5】鸿蒙发展历程 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、鸿蒙 HarmonyOS 版本年代记 鸿蒙 1.0: 2019
    的头像 发表于 07-07 11:41 2458次阅读

    智能氮气柜的发展历程和前景展望

    智能氮气柜的发展历程大致可以分为早期阶段、自动化控制时期和智能化转型三个阶段。1)早期阶段:最初的氮气柜主要是作为基本的防潮、防氧化存储设备,采用手动或半自动的方式控制氮气的补充,监测手段相对简单
    的头像 发表于 06-03 11:01 706次阅读
    智能氮气柜的<b class='flag-5'>发展</b><b class='flag-5'>历程</b>和前景展望

    为什么中断回调函数不能使用接收中断开启函数

    我看(书是基于stm32f407编写)书上说在串口接收中断回调函数里面不能使用 接收中断开启函数,书上是利用自己创建了空闲中断回调函数,在这里面在进行数据接收以及再次开启接收中断,但是我看网上好例
    发表于 05-28 07:19