TripletsLoss不是解决距离的银色子弹,而是打开度量学习的大门钥匙

前言

“横看成岭侧成峰,远近高低各不同!”,Triplets-loss开启了一扇门,门后面是表征学习和度量学习,还有度量学习中五花八门的loss尺度,真是令人眼花缭乱。那就索性做个笔记,好好整理一下这些知识,理清了以备后用。

表征学习和度量学习

Representation Learning被译为表征(表达)学习,是学习一个特征的技术的集合:将原始数据转换成为能够被机器学习来有效开发的一种形式。避免了手动提取特征的麻烦,允许计算机学习使用特征的同时,也学习如何提取特征;学习不必对集合划分为固定类别,可以随时添加新的类别进行训练学习。语者识别的embedding提取就是典型的表征学习case。Metric Learning被译为度量学习,map data to an embedding space, where similar data are close together and dissimilar data are far apart,这其实和表征学习差不多是一回事,一个倾向于建模方法,一个倾向于评价手段,而度量学习应该是灵活度更高的一门,随便改改就能出论文,在deeplearning时代,姑且肤浅的将表征学习理解成变成向量后的度量学习吧。就解决问题的角度而言,表征学习是建模,抽象到异次元,度量学习是把异次元的东西再量化到三维空间,用“横看成岭侧成峰”来比喻他们作为解决问题(庐山)的两个方面(岭峰)再合适不过了。而用“远近高低各不同”来理解度量学习中各种loss策略,好像也很形象,看来苏轼真的很懂机器学习啊。

回顾度量学习loss损失函数

之前总结了一下度量学习中的loss函数,但分类方法基于自己的理解,与目前主流state of the art方法有差距,学界把loss分成了pair-based和proxy-based两类。pair-based顾名思义是根据成对的两组向量距离来产生的,或者说诞生于Contrastive Loss,那么所有衍生于contrastive loss的方法都属于pair-based大类,最典型的就是triplets-loss。这个方法学的基础是尽量是的同类向量距离最小,异类向量距离最大。优点是数据级的比较和细粒度平衡,缺点则是由于batch数据中有很多天然的soft loss,导致了训练收敛速度越来越慢,这又孕育而生了很多mining方法,但大都是换个角度来解决问题,并没有跳出pair-based框架。而所谓的proxy-based方法,翻译一下暂且叫做代理方法,其实应该是借鉴很古老的KNN等分类方法,是与类别的中心(代理)做距离判定,这样可以使得那些没有用的数据点隐没起来,收敛速度明显提高,而对数据集的要求也比pair-based少,据说对于标签和外部噪声也有较好的鲁棒性,缺点是失去了细粒度的微调,好像在fine-tune上要完败于pair-based(我的理解,没有验证),引用知乎上的一段话来评价proxy-based,proxy是基于历史信息,或者是网络一步步学过来的,未必能够准确的表达当前模型,在2020较新的一篇文章Proxy Anchor Loss for Deep Metric Learning里,介绍了一种方法,叫做Proxy Anchor Loss,就是让anchor作为代理,其他的还是细粒度的数据,论文的图画的很形象,分享一下慢慢细品吧。
在这里插入图片描述

Triplet-loss之门后,还有哪些loss mining方法值得研究

说实话太多了,好像改改就可以发篇文章,这里面水文不少,我就mining几篇看看能收货多少吧。本段参考了知乎的文章深度度量学习-论文简评深度度量学习中的损失函数,之前的quadruplet等研究过的就不列在下面了,太多消化不了。

Lifted Struct loss

Deep Metric Learning via Lifted Structured Feature Embedding是2015年的文章,文中提出的Lifted Struct loss被大量引用。

MS LOSS & GPW

这是知乎上的大神自己的论文Multi-Similarity Loss with General Pair Weightingfor Deep Metric Learning,博文中总结到:loss的形式有多么花哨,一切不过是一个对于pairwise similarity的加权求和。

Distance weighted sampling and the margin based loss

这个概念来自论文Sampling Matters in Deep Embedding Learning,联想到时下米国的热点名言,可以理解为深度度量学习里采样也重要。此文其实揭示了一个本质问题,就是loss计算和loss策略,loss计算就是建立在欧氏距离或者余弦相似度距离基础上的contrastive loss、triplets loss等经典方法,而loss策略则是如何提取batch样本,令计算的loss更加高效,鲁棒以及实现域自适应进而具备zsl的能力。different sampling strategies lead todrastically different solutions for the same loss function,这是本文的论点,虽然有时两者有些纠缠,但确实如文章所讲,一些好的采样策略也许会帮助模型在某些领域达到不错的效果。这篇论文提出了Distance Weighted Margin-Based Loss概念,试图用多维空间球体负面点分布的思考,得出 β \beta β来帮助loss加速收敛。mxnet上有实现的源码可以帮助学习理解,有兴趣可以去找找。

BIER - Boosting Independent Embeddings Robustly

此文对我来说有点超纲,慢慢消化

Divide and Conquer the Embedding Space for Metric Learning

Learning the embedding space,似乎很神,待研究。

No Fuss Distance Metric Learning using Proxies

No Fuss Distance Metric Learning using Proxies提出了代理(proxy)方法,2017年以后为loss划分出一条新通道。Proxy-NCA 全称是Proxy Neighborhood Component Analysis。NCA和PCA/LDA都是经典时代的分类方法,代理proxy有点像二维聚类点的质心,有这个代理(向量?)来代表这个类别,那么其他类别的向量只要判定和这个代理的距离,同类拉近,一类推走,这样做就可以降低计算量,提高分类的鲁棒性。

ProxyNCA与 ProxyNCA++

来自论文ProxyNCA++: Revisiting and RevitalizingProxy Neighborhood Component Analysis,但不知道是不是蹭热度。

Proxy Anchor Loss

Proxy Anchor Loss for Deep Metric Learning这篇文章介绍的一种方法,这种方法只将anchor作为代理,positive和negtive还是单例度的采样。

Improved Deep Metric Learning withMulti-class N-pair Loss Objective

此文提出Multi-class N-pair Loss,以及对负面样本做了很多分析。N-pair-ms loss对Triplet loss的上述问题进行了改进,不同于Triplet Loss使用单个的正负样本,N-pair-ms loss损失函数利用了数据之间的结构信息来学习到更有区别性的表示,其在每次参数更新的过程中同时考虑了query样本与其他多个不同类的负样本之间的关系,促使query与其他所有类之间都保持距离,这样能够加快模型的收敛速度。【1】

SoftTriple Loss

SoftTriple Loss: Deep Metric Learning Without Triplet Sampling提出的思想和proxy很相似,应该在一起研究

Constellation Loss

Constellation Loss: Improving the efficiency of deepmetric learning loss functions for optimal embedding提出了星座图loss,真是好听的名字,图也画的好看,这看上去应该属于pair-based方法,不知道实现起来容易不。
在这里插入图片描述

Ranked list loss

这个概念来自于论文Ranked List Loss for Deep Metric Learning,也是pairwise margin loss,想法在深度度量学习中的损失函数有中文描述。

Deep Metric Learning with Angular Loss

这是百度2017年提出的loss计算方法,较之其他办法有一定的原创性,待查待用。

小结

太多了,到此为止。这些论文未必都要读,但能找到一个突破口就会对眼前的苟且有一个不错的突破了。总体来看,深度度量学习DML仍旧处在百花齐放的发展时期,还没有银色子弹可以解决所有问题,而样本挖掘又是个大宝藏,各路神仙都能在其中淘到金子,发个paper。最前沿的莫过于“难例挖掘”,有一篇知乎的文章《跨越时空的难样本挖掘》,对此有非常深刻的理解,可以作为延伸学习的参考。

参考

深度度量学习中的损失函数
深度度量学习-论文简评
度量学习中的pair-based loss
Proxy Anchor Loss for Deep Metric Learning
Multi-Similarity Loss with General Pair Weightingfor Deep Metric Learning
Deep_Metric
KevinMusgrave/pytorch-metric-learning
Survey of Deep Metric Learning
跨越时空的难样本挖掘

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值