深度度量学习-论文简评

更新时间:2023-05-07 08:50:33 阅读: 评论:0

深度度量学习-论⽂简评
缘起:
有⼈说起深度度量学习,就会觉得这⾥⾯⽔⽂多,或者觉得鱼龙混杂,参见曾经上了知乎热榜的⼀个问题:
如何看待研究⼈员声称近13年来在 deep metric learning 领域的进展实际并不存在?
作为在这个坑⾥摸爬了⼀段时间,也发了两三篇顶会的从业⼈员.我的看法是,有的⽂章确实是纯粹的⽔⽂,有些⽂章还是挤挤的话,还是有些营养的.与其去嘲笑别⼈,不如从别⼈的亮点中获得启发.这⾥我以随笔的形式,不定时的分享我对这个领域的⼀些⽂章的思考,破开⽂章的层层包装,直达本质,让读者不被它们的层层套路所误导,迷失⽅向,甚⾄有了⼀些偏见,从⽽更加快速地对DML领域有个我认为的清晰正确的见解.
如果⼤家遇到⼀些有意思的⽂章,也可以在评论⾥告诉我,我可以去看看,并写下我的感想. 
总览
我认为,metric learning的⽅法有两⼤分⽀:pair-bad 和 proxy-bad.pair-bad是基于真实的样本
对,⽐如contrastive loss, triplet loss, N-pair loss和MS loss等,⽽proxy-bad是利⽤proxy去表⽰类别的特征,或者样本特征,⽐如说softmax, Proxy-NCA 等.proxy是⼀个⾮常宽泛的概念,在softmax中,它是fc层的列;在memory的⽅法中,它是存储在memory中的特征.
pair-bad的⽅法的好处在于简单准确,准确的意思是你的feature是从当前模型前向出来的,可以精确的表⽰当前的模型;缺点在于计算量⼤,信息局限,pair-bad只可以利⽤当前mini-batch的信息,不能看到模型在整体的数据的表现,⼀直在做局部的优化.
那么,proxy的好处在于可以有global的信息,但是,缺点是什么?proxy是基于历史信息,或者是⽹络⼀步步学过来的,未必能够准确的表达当前模型.
论⽂点评
1.MS Loss(CVPR-2019)
⾸先要说的是⾃⼰的⽂章,MS Loss, 虽然⽂章的名字是⼀个loss,但是我认为我的这个⽂章最值得的看点,可以成为⼀种思考所有pair bad loss⽅法的⽅法是GPW:
这个GPW (general pair weighting)的意思就是,⽆论你的loss的形式有多么花哨,⽆论你故事讲得有多么的骚,⼀切不过是⼀个对于pairwi similarity的加权求和罢了,⽽这个权重恰恰是⼀阶导数,详细的请看论⽂.在论⽂中,我们⽤GPW之⼑解剖了⽬前市⾯上常见的⼏种loss functions:
表格1.⼏种loss对于负样本对的权重
建议读⽂章,仔细体会这个想法,最好能够⽤两种形式写出写出binomial loss,并验证结果的⼀致性,从⽽更加深刻的理解这个思路,以后遇到pair-bad loss的论⽂就可以⼀眼看穿本质,不会被天花乱坠的故事迷了⽅向.
另外,MS⾥⾯讲的SNP multi-similarity的故事,理论和实验其实都不算扎实全⾯,并不能完全验证,只是⼀个实验结果还不错的⼀个反向思考结果,或者说是⼀个可以近乎⾃圆其说的story.
2.lifted structure loss (CVPR-2016)
SOP数据从这⾥来,这个⽂章是⽐较早的deep metric learning论⽂.
⽂章的想法就⼀句话总结:过去 contrastive loss的训练是这样的:先配好样本对在送进去⽹络,这种太浪费了,⼀个mini-batch⼤⼩为n,结果只有n/2对样本.他的做法是:任意两两配对,样本的个数直接平⽅( n*(n-1)/2 ).当然,这个现在⼤家都这么做啦.
这个⽂章的实验效果是很低的:
原因有⼆:
1.当时的调参技术还⽐较拙劣.
2.后来我也复现了这个loss,按照论⽂⾥的设置,效果是真的不⾏.故事讲的不错,loss设计的是真的有点菜(没有对特征normalize并且没有调temperature).
3.Sampling Matters in embedding learning (ICCV-2017)
Sampling Matters in Deep Embedding Learning
这个⽂章的作者也算是个⼩有名⽓的⼤佬了,现在应该是跟着kaiming的.但是我认为这篇论⽂,其实题⽂是不太符合的.这个⽂章我⾄少读了五六遍,并且看了作者公布的代码,并与同⾏进⾏了⼀些讨论,⾃⼰复现也做了⼀些实验.我的感想这个⽂章应该改个名字:Margin Matters.
⽂章前⾯讲了⼀波很好的⾼维空间中向量分布的故事,统计,数学显得专业,但是,distance weighted sampling这个点,真的是理论上有点扯,效果上也很崩盘.那⽂章最后咋效果很好呢,原因在于两点:
1.当时⼤家的baline都⽐较低,看了作者代码,真的是调参⽐较努⼒的,带了⼀些tricks,另外别⼈⽤googlenet,他⽤了resnet. 不是说resnet⼀定好,但是确实⽹络不同,还是有很⼤不同的.
2.⽂章提出了margin(就是对相似度卡阈值),且这⾥的margin 是动态的学习的.其实这个是提点的关键.所以,我说吗,可以改名字叫做Margin Matters哈.
说回来,为什么觉得⽂章⽅法的动机不对,distance weighted sampling说pair 的距离分布是不均匀的,所以要变成均匀的,所以要丢弃⽐较多的那部分.因为多所以就要丢弃样本对,这个逻辑不是很成⽴,实验也说明了这个点.我认为更合理的说法还是easy, hard那⼀套,有些样本对简单,对当前
模型训练意义⼩;有些样本对难,可以对模型的训练有很⼤的促进作⽤.这种完全没必要⼀定⾮⽤⽋采样的⽅法变成balance的分布,扔掉那么多的多样本对,会丢失很多信息的.通过加权的⽅式完全可以解决得轻松舒服.
4. BIER (ICCV-2017 Oral)
思路很直接,为了解决⾼维空间特征的冗余,所以,把⾼维空间拆开,通过gradient boosting 还有对抗训练使得每个⼦空间的学习出来的特征尽量不同,那么从集成学习的思路去想,这样⼦把他们拼到⼀起后的空间,⾃然效果提升⼤.
metric learning 当时在顶会中的oral论⽂还是挺少的.这个⽂章真的做得很好,很扎实.想法也是很好的.我个⼈很喜欢.建议精读,与其把时间浪费在没有营养的⽔⽂,不如从这个⽂章多多体会.后来作者扩充了这个⽂章,被PAMI接收.
另外,这⾥对loss梯度的分析,还有使⽤的binomial deviance loss是对我MS Loss论⽂有很⼤的启发.我的MS loss 可以认为就是把binomial 和lifted structure loss拼起来了.
5. Proxy-NCA (ICCV-2017)
狗⼤户的⽂章,在当时可以认为效果爆表,不过爆表有⼀⼤部分的原因在于从他开始把googlenet换到
了inceptionBN, ⽽且也不怎么调baline. 就⽤了过去的很低的,另外,狗⼤户真的有钱爱调参,最后选出来的参数还有优化器怎么看都是暴⼒调的.
⽅法的话,其实是softmax或者NCA的⼀个换装.不过,⽂章还是很有亮点的:这⾥提出的proxy的概念真的是棒,我当时理解了很久.
6.Divide and Conquer (CVPR-2019)
Divide and Conquer the Embedding Space for Metric Learning
同BIER,去拆分了空间,不同的是这⼉为了使得每个⼦空间学的不相似,采⽤的⽅法是:类似于集成学习中的数据扰动策略(参见西⽠书
P188)的⽅法,对每个⼦空间采⽤不同的数据去学习,从⽽使得每个分⽀学得尽量不同.
7.softtriple(ICCV-2019)
SoftTriple Loss: Deep Metric Learning Without Triplet Sampling
出⾃达摩院.讲的故事是多中⼼/类别,其实⼤家如果看过CUB数据,就会发现类内区别确实⼤,所以
⽂章把softmax拓展为多中⼼的形式,⽅法上未必是多么创新:这个和proxy-nca的多中⼼时其实是很近似的,或者说proxy就是把softmax 拓展到了单中⼼,多中⼼,甚⾄多个类别共享中⼼的⼴义形式.
⽂章的⽂笔我认为很不错,introduction写的很好,对传统的metric learnning做了简略的回顾,并且对deep metric learning这⼏年的发展做了个很好的总结.尤其是关于batch size那⼀⼩部分,写得我感觉很恰当.是很好的⼊门导⼊.

本文发布于:2023-05-07 08:50:33,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/546931.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:学习   样本   模型   特征   数据   效果
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图