论文提出了Circle loss,不仅能够对类内优化和类间优化进行单独地处理,还能根据不同的相似度值调整对应的梯度。总体而言,Circle loss更灵活,而且优化目标更明确,在多个实验上都有较好的表现,个人认为是一个很好的工作



来源:晓飞的算法工程笔记 公众号

论文: Circle Loss: A Unified Perspective of Pair Similarity Optimization

Introduction


  论文认为两类基础的深度特征学习方法classification learning(比如softmax)和pair-wise learning(比如triplet loss)均是为了最小化类内相似度\(s_n\)和类间相似度\(s_p\),理想是\((s_n=0, s_p = 1)\)。而大部分常用的损失函数都是将\(s_n\)和\(s_p\)embed成相似度对,然后用各自研究的策略最小化\((s_n-s_p)\)的值。这种策略提升\(s_p\)等同于下降\(s_n\),但其实这种对称的优化方法很容易存在以下问题:

  • 缺乏优化的灵活性。由于基于损失函数同时优化\(s_n\)和\(s_p\),导致\(s_n\)和\(s_p\)的梯度的幅值是一样的。当\(s_n\)和\(s_p\)均很小时,依然会使用较大的梯度惩罚\(s_n\),这是不高效且不合理的。
  • 收敛目标不明确。优化\(s_n-s_p\)通常会遇到决策边界问题\(s_p-s_n=m\)。而这个边界目前是不够明确的,首先图1a中的ABC点均到决策边界的距离相等,但其收敛点却不太一样(梯度正交于\(s_p=s_n\)?)。其次,不同收敛点间的类内和类间相似度差异可能较小,比如样本\(\{s_n, s_p\}=\{0.2, 0.5\}\)和\(\{{s^{'}}_n, {s^{'}}_p\}=\{0.4, 0.7\}\),虽然边际(margin)均为0.3,但\({s^{'}}_n\)和\(s_p\)的差距仅为0.1,这样的收敛状态会影响整体样本的区分性。

  基于上面的发现,论文认为不同的相似分数应该有不同的惩罚力度,首先将\((s_n - s_p)\)转换为\((\alpha_n s_n - \alpha_p s_p)\),\(\alpha_n\)和\(\alpha_p\)是独立的权重因子,分别与\(s_n\)和\(s_p\)线性相关,这样不仅使得\(s_n\)和\(s_p\)能以不同的步伐进行学习,还可以更具相似分数调整幅值。这样的优化策略使得\(\alpha_n s_n - \alpha_p s_p=m\)在\((s_n, s_p)\)空间内呈现圆形,故称为Circle loss。

  Circle loss主要从以下3个方面入手改变深度特征学习的内在特性:

  • 统一损失函数来表示两类基础的深度特征学习方法classification learning(比如softmax)和pair-wise learning(比如triplet loss)。
  • 灵活地优化,由于\(\alpha_n\)和\(\alpha_p\)会随着对应的相似度分数来改变对应的梯度,如图1b的点ABC的梯度是各不一样的。
  • 明确的收敛目标,在圆形的决策边界,circle loss有更倾向的决策状态,如图2b的ABC点,均偏向于更新到点T,原因后面会讲到。

  论文的主要贡献如下:

  • 提出Circle loss,通过有监督地加权不同相似度分数来进行深度特征学习,能够更灵活地优化,并且有明确的收敛目标。
  • Circle loss能够兼容class-level标签和pair-wise标签,通过简单的修改就能变化为triplet loss或softmax loss。
  • 在不同的任务(人脸识别,ReID,细粒度图片检索等)上进行实验证明Cirle loss的优势。

A Unified Perspective


  给予特征空间的单样本\(x\),假设有\(K\)个类内相似分数和\(L\)个类间相似分数关联\(x\),定义相似度分数为\(\{s^i_p\}(i=1,2,\cdots,K)\)和\(\{s^i_n\}(i=1,2,\cdots,L)\)。

  为了最小化每个\(s^j_n\)以及最大化每个\(s^i_p\),统一的损失函数如公式1,其中\(\gamma\)为缩放因子,\(m\)为边际(margin)。公式1迭代每个相似度对来减小\((s^j_n-s^i_p)\),通过简单的修改就能变为triplet loss和classification loss。

Given class-level labels

  在分类层计算样本\(x\)与各类的相似度以及权重向量\(w_i (i=1,2,\cdots,N)\),得到\((N-1)\)个类间相似度\(s^j_n=w^T_j x/(||w_j||\ ||x||)\)以及单个类内相似度\(s_p = w^T_y x/(||w_y||\ ||x||)\)。

  结合公式1,得到公式2的softmax变种AM-Softmax,当\(m=0\)时,公式2能够进一步变化为Normface,当将cosine相似度替换为内积以及设置\(\gamma=1\)时,则为softmax loss。

Given pair-wise labels

  计算mini-batch中样本\(x\)与其它样本的相似性,得到类间相似度\(s^j_n=w^T_j x/(||x_j||\ ||x||)\)以及单个类内相似度\(s^i_p = w^T_y x/(||x_i||\ ||x||)\)。

  结合公式1,\(K=|\mathcal{P}|\),\(L=|\mathcal{N}|\),得到带hard mining的triplet loss,\(\sum exp(\cdot)\)用于调节mining的程度,当\(\gamma \to + \infty\)时,就是绝对的hard mining。

Gradient analysis

  公式2和公式3展示了公式1的通用性,目标均是优化\((s_n-s_p)\)。论文假设仅存在单个\(s_p\)和\(s_n\),各种损失函数的梯度进行了可视化,如图2所示,观察到了主流损失函数的几点梯度表现:

  • 在达到决策边界前,\(s_p\)和\(s_n\)的梯度是相同的,这缺乏优化的灵活性。
  • 梯度在收敛前几乎是不变,而在收敛时则突然下降。比如图2的B点相对于A点是更优的,但是两点的梯度几乎一样,这也表明了优化的不灵活。
  • 决策边界平行于\(s_n - s_p=m\)(图2的白线),不同的点\(A\) \(B\)会可能以边界上的不同点\(T\)或\(T^{'}\)为目标,导致收敛目标不明确,如之前所述的。

A New Loss Function


Self-paced Weighting

  为了让每个相似度分数能够根据当前优化状态调整学习的幅度,先忽略公式1的\(m\)并调整为Circle loss,如公式4所示,\(\alpha^j_n\)和\(\alpha^i_p\)为非负权重因子。

  假定\(s^i_p\)的最优值为\(O_p\),\(s^j_n\)的最优值为\(O_n(O_n < O_p)\),则\(\alpha^j_n\)和\(\alpha^i_p\)的计算如公式5,称为self-paced manner,\([\cdot]_+\)为cut-off at zero操作来保证\(\alpha^j_n\)和\(\alpha^i_p\)非负。

  加权是分类loss中的常见操作,所有的相似度分数共享同一个缩放因子\(\gamma\),而Circle loss则根据每个相似度分类的值再进行一次独立的加权,允许不同的学习幅度,能够更加地灵活。

Within-class and Between-class Margin

  在之前的讨论中,主流损失函数的\((s_n-s_p)\)的优化是对称的(减少\(s_n\)等同于增大\(s_p\)),仅需一个边际(margin)即可。而在Circle loss中,\((s_n-s_p)\)的优化是非对称的,因此需要设置独立的边际,如公式6,其中\(\Delta_n\)和\(\Delta_p\)为类间边际和类内边际,目标是\(s^i_p>\Delta_p\)以及\(s^j_n<\Delta_n\),下面探讨边际的设置问题。

  考虑简单的二分类问题,决策边界为\(\alpha_n(s_n - \Delta_n)-\alpha_p(s_p-\Delta_p)=0\),结合公式5和6,决策边界可转换为公式7,其中\(C=((O_n-\Delta_n)^2+(O_p-\Delta_p)^2)/4\),即为Circle loss决策边界为圆的弧,如图1b所示,中心点为\((s_n=(O_n+\Delta_n)/2, s_p=(O_p+\Delta_p)/2)\),半径为\(\sqrt{C}\)。

  Circle loss包含5个参数\((O_p, O_n, \gamma, \Delta_p, \Delta_n)\),论文通过设置\(O_p=1+m\),\(O_n=-m\),\(\Delta_p=1-m\),\(\Delta_n=m\)来减少参数,最终将公式7转换为公式8。基于公式8的决策边界,可以看到其目标为\(s_n \to 0\)和\(s_p \to 1\),参数\(m\)控制决策边界的半径可以看作是松弛因子,即可将Circle loss目标改为\(s^i_p>1-m\)和\(s^i_n<m\)。

The Advantages of Circle Loss

  Circle loss关于\(s^j_n\)和\(s^i_p\)的梯度分别为公式9和公式10,在简单的二分类问题上,梯度的可视化如图2c所示,可以观察到几点梯度表现:

  • Circle loss能够平衡地优化\(s_n\)和\(s_p\),动态地调整惩罚各自的力度。
  • 逐渐衰弱的梯度,如图2c所示,在训练初期,远离决策边际将获得较大的梯度,随着逐渐接近收敛,其梯度逐渐衰减,并且对\(\gamma\)具有鲁棒性。
  • 更明确的收敛目标,如图1b所示,Circle loss更倾向于收敛至点\(T\),因为相对于其他点,点\(T\)的\(s_p\)和\(s_n\)差距最小,加上梯度足够灵活,最容易学习到该状态。因为\(s_p\)和\(s_n\)差距越大,需要将数据划分地更开,更难学习。

Experiment


Face Recognition

Person Re-identification

Fine-grained Image Retrieval

Impact of the Hyper-parameters

Investigation of the Characteristics

  通过观察图4发现:

  • 在初始时,所有的\(s_n\)和\(s_p\)都较小,这是由于高维随机特征倾向于彼此分离。而在训练中,\(s_p\)得到了显著的较大权重,占据了训练,使得相似度快速增加,这证明了Circle loss使用更灵活且平衡的优化手段。
  • 在训练的最后,Circle loss在\(s_p\)和\(s_n\)的收敛上都比AMSoftmax要好。

  论文可视化了收敛后的相似度分布,可以看到,Circle loss以更紧密地方式通过了决策边界,而AMSoftmax则较为稀疏地通过了,这表明Circle loss的优化目标较为明确的,特征空间可分离性更好,这种情况在图5c中更为明显。

CONCLUSION


  论文将classification learning和pair-wise learning进行了统一的表达,并根据目前的损失函数实际存在问题进行了改进,提出了Circle loss,不仅能够对类内优化和类间优化进行单独地处理,还能根据不同的相似度值调整对应的梯度。总体而言,Circle loss更灵活,而且优化目标更明确,在多个实验上都有较好的表现。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

Circle Loss:从统一的相似性对的优化角度进行深度特征学习 | CVPR 2020 Oral的更多相关文章

  1. 从极大似然估计的角度理解深度学习中loss函数

    从极大似然估计的角度理解深度学习中loss函数 为了理解这一概念,首先回顾下最大似然估计的概念: 最大似然估计常用于利用已知的样本结果,反推最有可能导致这一结果产生的参数值,往往模型结果已经确定,用于 ...

  2. [置顶] 炎炎夏日,给你一次极爽的开发体验!——统一开发环境功能升级优化,正式上线V2.0!

    作为中国移动应用运行托管平台(MM应用引擎)的开发部署工具,统一开发环境(UDE)在原HTML5跨平台开发功能基础上优化升级,新增跨平台编译(Android/iOS)和云端托管服务,正式上线2.0版本 ...

  3. NLP︱句子级、词语级以及句子-词语之间相似性(相关名称:文档特征、词特征、词权重)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 关于相似性以及文档特征.词特征有太多种说法.弄 ...

  4. face recognition[翻译][深度人脸识别:综述]

    这里翻译下<Deep face recognition: a survey v4>. 1 引言 由于它的非侵入性和自然特征,人脸识别已经成为身份识别中重要的生物认证技术,也已经应用到许多领 ...

  5. Domain Adaptation (3)论文翻译

    Abstract The recent success of deep neural networks relies on massive amounts of labeled data. For a ...

  6. MAML-Tracker: 目标跟踪分析:CVPR 2020(Oral)

    MAML-Tracker: 目标跟踪分析:CVPR 2020(Oral) Tracking by Instance Detection: A Meta-Learning Approach 论文链接:h ...

  7. 【DMCP】2020-CVPR-DMCP Differentiable Markov Channel Pruning for Neural Networks-论文阅读

    DMCP 2020-CVPR-DMCP Differentiable Markov Channel Pruning for Neural Networks Shaopeng Guo(sensetime ...

  8. CVPR 2020目标跟踪多篇开源论文(上)

    CVPR 2020目标跟踪多篇开源论文(上) 1. SiamBAN:面向目标跟踪的Siamese Box自适应网络 作者团队:华侨大学&中科院&哈工大&鹏城实验室&厦门 ...

  9. Large-Margin Softmax Loss for Convolutional Neural Networks

    paper url: https://arxiv.org/pdf/1612.02295 year:2017 Introduction 交叉熵损失与softmax一起使用可以说是CNN中最常用的监督组件 ...

  10. face recognition[Euclidean-distance-based loss][Center Face]

    本文来自<A Discriminative Feature Learning Approach for Deep Face Recognition>,时间线为2016年.采用的loss是C ...

随机推荐

  1. STC89C52驱动MAX7219LED点阵级联, 文字滚动效果

    级联下的传值方式 级联下, N个MAX7219相当于组成了一个8*N bit宽度的锁存器, 如果需要对第M个7219进行写入, 需要做M次寻址+写入后拉高CS, 才能到达这个7219. 如果仅仅对这个 ...

  2. SpringBoot学习-图文并茂写Hello World

    一. 生成SpringBoot新项目demo 在 https://start.spring.io/ 生成一个新的项目 1. 步骤: 1)Project 选择 Maven Project 2)Sprin ...

  3. goroutine并发

    每一个并非的执行单元叫作一个goroutine.设想这里的一个程序有两个函数,一个函数做计算,另一个输出结果,假设两个函数没有相互之间的调用关系.一个线性的程序会先调用其中的一个函数,然后再调用另一个 ...

  4. ASP.NET Core 跨域

    跨域常见问题: 1.发布到IIS上后跨域问题 解决方法 修改web.config文件 <system.webServer> <httpProtocol> <customH ...

  5. 手写web框架

    重新认识HTTP http请求报文包含三个部分(请求行 + 请求头 + 请求体) 请求行 请求行包含三个内容: method + request-URI + http-version -- 例如 GE ...

  6. 【Azure Redis 缓存】Azure Redis 4.0 被扫描到漏洞,如何修补呢?

    问题描述 在安全级别要求高的公司中,任何系统都会进行安全扫描.比如Azure 云上的Redis服务,也在扫描的范围中,最后发现Redis 4.0存在以下漏洞: CVE-2019-10192:https ...

  7. Ubuntu中安装使用QEMU/KVM/virt-manager运行虚拟机

    本文为原创,原文发布于个人博客网站:Ubuntu中安装使用QEMU/KVM/virt-manager运行虚拟机 有时候我们需要在同一台计算机中使用多种不同操作系统环境,基于已有的同一堆硬件资源来获得不 ...

  8. Rust 开发的高性能 Python 包管理工具,可替换 pip、pip-tools 和 virtualenv

    最近,我在 Python 潮流周刊 中分享了一个超级火爆的项目,这还不到一个月,它在 Github 上已经拿下了 8K star 的亮眼成绩,可见其受欢迎程度极高!国内还未见有更多消息,我趁着周末把一 ...

  9. Netty笔记(2) - 基本实现与异步模型

    示例内容: 服务端监听6668端口 , 客户端连接 并发送信息给服务端 ,服务端收到信息打印 并返回信息给客户端 服务端代码: public class NettyServer { public st ...

  10. CUDA指针数组Kernel函数

    技术背景 在前面的一篇文章中,我们介绍了在C++中使用指针数组的方式实现的一个不规则的二维数组.那么如果我们希望可以在CUDA中也能够使用到这种类似形式的不规则的数组,有没有办法可以直接实现呢?可能过 ...