前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三元组损失

三元组损失

作者头像
月梦@剑心
发布2022-09-14 14:14:16
2.1K0
发布2022-09-14 14:14:16
举报
文章被收录于专栏:月梦·剑心的技术专栏

春恋慕三元组损失(Triplet loss)是一种被广泛应用的度量学习损失,是在研究度量学习时的重点,今天来深入探究一下关于三元组损失的概念和原理。

一、概念

三元组损失(Triplet loss)是一种被广泛应用的度量学习损失,其中的三元也就是Anchor、Negative以及Positive。通过三元组损失的学习后,试图学习到一个特征空间,使得在该空间中Positive和Anchor元之间的距离最小,而使得Negative和Anchor之间的距离最大。其中Anchor为训练数据集中随机选取的一个样本,Positive为和Anchor属于同一类的样本,而Negative则为和Anchor不同类的样本。就是说,通过学习后,同类样本更靠近Anchor,而不同类的样本则远离Anchor(写到这里还不是很确定是使用什么算法计算“靠近”和“远离”,欧氏距离或者....?)。以Triplet loss为训练准则的深度神经网络模型既兼顾了度量学习的朴素性,又拥有神经网络优秀的非线性建模能力,能够在极大程度上简化并且控制模型训练过程。其效果如下图所示:

二、三元组损失目标函数

其中||*||为欧式距离(解答了之前的困惑,使用三元组损失的度量学习时是采用欧氏距离做计算),式子分为三部分(两部分计算欧氏距离,一部分为α),第一部分表示Positive和Anchor之间的欧氏距离度量,第二部分表示Anchor和Negative之间的欧式距离度量,α是指x_a与x_n之间的距离和x_a与x_p之间的距离之间有一个最小的间隔(α就是阈值)。这里距离用欧式距离度量,+表示[]内的值大于零的时候,取该值为损失,小于零的时候,损失为零。

三、三元组损失的优缺点

优点: 相比其他分类损失函数,Triplet loss通常能在训练中学习到更好的细微的特征feature,更特别的是Triplet loss能够根据模型训练的需要设定一定的阈值。带Triplet loss的网络结构在进行训练的时候一般都会设置一个阈值margin,设计者可以通过改变margin的值来控制正负样本的距离。

劣势: 虽然Triplet loss很有效,但也有缺点:三元组的选取导致数据的分布并不一定均匀,所以在模型训练过程表现很不稳定,而且收敛慢,需要根据结果不断调节参数,而且Triplet loss比分类损失更容易过拟合。所以,大多数情况下,我们会把这种方法放在模型的预训练过程中,或者和softmax函数(分类损失)结合在一起使用。

四、阈值的设置

对于阈值margin的设置需要注意选择合适大小的值,理论上来说,较大的margin能够增强模型对不同类样本的区分度,但是如果在训练初期就将margin设置得比较大,则可能会增加模型训练的难度,进而出现网络不收敛的情况。在模型训练初期先使用一个较小的值对网络进行初始化训练,之后再根据测试的结果对margin的值进行适当的增大或缩小,这样可以在保证网络收敛的同时让模型也能拥有一个较好的性能。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概念
  • 二、三元组损失目标函数
  • 三、三元组损失的优缺点
  • 四、阈值的设置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档