【论文阅读】Dimensionality Reduction by Learning an Invariant Mapping

18 篇文章 0 订阅

1.背景

对比学习算是比较早就已经提出了一种技术。其中,早期比较有名的一篇文章就是Lecun等在《Dimensionality Reduction by Learning an Invariant Mapping》(简称 DrLIM)文章中提出的对比学习,它主要是通过NN(非线性function)+对比学习任务实现降维,不过当前主要用于作为多任务的一个任务提升模型效果。

这篇文章提出的一段时间以来,对比学习的研究主要集中在CV领域。尤其是最近,自监督学习的兴起,CV领域的一些知名学者又对此做了新的探索,带起了对比学习研究的新一波热潮,比如:

  • Kaiming 等提出的这篇名为《Momentum Contrast for Unsupervised Visual Representation Learning》(简称:MoCo),以及MoCo V2
  • Hinton等提出的这篇名为《A Simple Framework for Contrastive Learning of Visual Representations》(简称:SimCLR)等等。

近两三年以来,Transformer在NLP领域取得巨大成功的原因,CV领域受此启发,在CV领域也尝试引入Transformer,其中,目标检测任务已取得成功。顺着互相借鉴的思路,NLP领域也有不少人尝试将对比学习应用在NLP领域。本人对此也做了尝试,本篇将简单介绍一种对比学习loss: DrLIM中提出的 Contrastive Loss及其在NLP中的应用。

2. Contrastive Loss

2.1 介绍
2.1.1 已有方法简介

已有方法非常之多,最有代表性的两类方法为:Principal Component Analysis(PCA) 和Multi-Dimentional Scaling(MDS)。

  • PCA:将输入映射到一个方差最大化的子空间
  • MDS:最大程度的保留输入样本对的距离

在此基础上,有一些非线性谱方法被提出,这些方法涉及到了一些特殊矩阵求解特征值的问题,比如:ISOMAP、Local Linear Embedding(LLE)、Laplacian Eigenmaps。

1)这些方法的共同点,都主要包含如下三步:

  • ①定义一个每个节点与它邻居的列表,即邻接关系;
  • ②使用这些邻接关系计算一个gram矩阵;
  • ③求解该矩阵的特征值。

2)不同点在于 如何求解这个gram矩阵。

但是一个新的节点加入时,他们都没有考虑:

  • 是不是可以不用重新计算整个embedding
  • 是不是可以不用考虑新节点与训练节点的关系

ps:GNN节点特征初始化也是采用如上步骤构造的

另外,Schoelkopf等人在PCA的基础上提出了PCA核方法,它的主要思路就是将输入映射到高维空间,然后抽取主成分,第一步是用点积表示PCA计算,第二步用核隐式计算高维映射。这里的核方法选择对embeddings的表示影响很大,所以,之后有Weinberger等人研究如何学习这个核矩阵。

2.1.2 已有方法的问题

DrLIM就是在这样的背景下提出的,通过以上介绍,我们可以知道这些降维方法都存在如下两个致命的问题:

  • 样本与输入空间中的距离测度相关:对样本的距离表示限制比较严格。
  • 当新样本与训练数据关系未知时,就不能够准确映射该样本。
2.1.3 DrLIM的优点
  • 仅需要样本间样本的相邻关系。(这样的关系可以来自于先验知识、人工标签、任何其他距离量度等)
  • 对输入的非线性变换保持不变。(非线性变换可以是光影变换,几何畸变等)
  • 没有先验知识的情况下,可以用于映射在训练中没有出现过的样本。
  • 在输出空间上,映射的结果是较平滑的,而且是一致的。
ps: 
1)此处优点从本方法设计即可看出,另外,实验也充分表明了这些优点。
2)此处涉及到的降维方法非最新方法,如有需要请自行搜集最新的review或paper。
2.2 原理

简而言之,Contrastive Loss其原理就是是最大化不同类别之间的距离,最小化相同类别之间的距离,实现降维

2.2.1 形式化表示

不同于传统的loss计算所有样本的总和,本loss计算的是样本中的样本对的总和。

  • 样本对距离函数

定义 X 1 , X 2 ∈ I X_1,X_2∈I X1,X2I分别为输入的样本对的向量;

定义 Y Y Y为样本对的标签,当 Y = 1 Y=1 Y=1表示样本对不相似,反之亦然;

定义可学习的 D w D_w Dw为样本对的距离函数,即:

D W ( X 1 ⃗ , X 2 ⃗ ) = ∣ ∣ G W ( X 1 ⃗ ) − G W ( X 2 ⃗ ) ∣ ∣ 2 D_W(\vec{X_1},\vec{X_2})=||G_W(\vec{X_1})-G_W(\vec{X_2})||_2 DW(X1 ,X2 )=GW(X1 )GW(X2 )2

  • 样本对loss计算

定义相似样本对的loss为 L S L_S LS,不相似的为 L D L_D LD,则有,某一样本对的loss为:

L ( W , ( Y , X 1 ⃗ , X 2 ⃗ ) i ) = ( 1 − Y ) L S ( D W i ) + Y L D ( D W i ) L(W,(Y,\vec{X_1},\vec{X_2})^{i})=(1-Y)L_S(D_W^{i}) + YL_D(D_W^{i}) L(W,(Y,X1 ,X2 )i)=(1Y)LS(DWi)+YLD(DWi)

L S 和 L D L_S和L_D LSLD应该满足这样一个条件:

当最小化 L L L时,如果样本对相似,则 D W D_W DW得到一个较小的值;如果样本对不相似, D W D_W DW得到一个较大的值,如下图所示:

上图我们可以将其看做是一个普通的凸函数: f ( x ) = x 2 f(x)=x^2 f(x)=x2,则有:

  • 对于相似样本对的距离: D W = f ( x ) = x 2 D_W=f(x)=x^2 DW=f(x)=x2,如上图的红色虚线,这时就可以在导数为0(loss最小处)的原点取到较小值。
  • 对于不相似样本对的距离: D W = f ( x ) = ( x − m ) 2 D_W=f(x)=(x-m)^2 DW=f(x)=(xm)2,如上图的蓝色实线,这时就可以在导数为0与坐标轴交点为m(loss最小处)处取到较大值,当大于m不再优化。

根据以上思考,所有样本对的loss则被表示为,也即 Contrastive Loss

L ( W , Y , X 1 ⃗ , X 2 ⃗ ) = ( 1 − Y ) 1 2 ( D W ) 2 + ( Y ) 1 2 m a x ( 0 , m − D W ) 2 L(W, Y, \vec{X_1}, \vec{X_2})=(1-Y)\frac{1}{2} (D_W)^2 + (Y)\frac{1}{2}{max(0, m - D_W )}^2 L(W,Y,X1 ,X2 )=(1Y)21(DW)2+(Y)21max(0,mDW)2

2.2.2 与弹簧模型类比

为了便于理解,这里以弹簧模型为例,如下图:

  • 拉力弹簧(图上半部分):弹簧的静止长度为0,任意正位移X都使弹簧两个端点间产生拉力
  • 斥力弹簧(图下半部分):弹簧的静止长度为m,当X小于m 时,弹簧两个端点相互排斥
2.2.3 算法
  • 第1步,为训练集中任意样本 X i X_i Xi生成相似样本集和不相似样本集

    • a).用先验知识找到这样一个集 S X i ⃗ = { X j ⃗ } j = 1 p S_{\vec{X_i}} = \{\vec{X_j}\}_{j=1}^p SXi ={Xj }j=1p,这里 X j ⃗ \vec{X_j} Xj X i ⃗ \vec{X_i} Xi 相似
    • b).样本 X i X_i Xi构造相似集和不相似集:
      • 如果 X j ⃗ ∈ S X i ⃗ \vec{X_j}∈S_{\vec{X_i}} Xj SXi 则加入相似集,并且 Y = 1 Y=1 Y=1
      • 如果 X j ⃗ ∉ S X i ⃗ \vec{X_j}∉S_{\vec{X_i}} Xj /SXi 则加入不相似集,并且 Y = 0 Y=0 Y=0
  • 第2步,重复直到收敛

    • a).对每一对样本 ( X i ⃗ , X j ⃗ ) (\vec{X_i}, \vec{X_j}) (Xi ,Xj ),如下操作:
      • 如果 Y = 0 Y=0 Y=0,更新 W W W,降低 D W ( X i ⃗ , X j ⃗ ) = ∣ ∣ G W ( X i ⃗ ) − G W ( X j ⃗ ) ∣ ∣ 2 D_W(\vec{X_i},\vec{X_j})=||G_W(\vec{X_i})-G_W(\vec{X_j})||_2 DW(Xi ,Xj )=GW(Xi )GW(Xj )2
      • 反之亦然
2.3 实验

这里采用siamese结构,使用 Contrastive Loss设计了实验的模型结构,做了3组实验,佐证了DrLIM的优点。

2.3.1 实验训练结构

模型输入:样本对
模型输出:是否相似
样本特征表征方法:CNN
loss:contrastive loss

2.3.2 MNIST样本的映射

如下图所示,为测试集降为2维时的分布情况,我们可以看出,尽管测试集中4与9之间的关系没有给出,但是4和9的分布不仅均匀且组织良好。

2.3.3 MNIST样本的平移不变性

如下图所示,对样本中的像素做了水平(-6, -3, +3, and +6 pixels)的相加,我们可以看到5块不同的数据分布,尽管测试集中4与9之间的关系没有给出且对训练集透明,但是4和9的分布仍然分布均匀且组织良好

如下图,对部分样本做了失真处理,使用的是传统的LLE方法进行的降维结果,可以看出下图中测试集中失真的样本集中在输出结果的某一个角落,未失真的没有这个问题。

同理,采用本文的方法,即使失真,表现仍然优秀,如下图所示:

2.3.4 时域与光照映射不变性

数据集:NORB,共有972张,飞机在各种姿势和各种照明下观察半球周围的的图像。
(其中有18个方位角、9个仰角和6个照明条件)
训练样本构造方式:采用基于摄像机时间连续性的模式构造邻域图
ps:如果图像是从相邻的仰角或方位角拍摄的,则它们是相似的,而与照明无关。

  • 如下图所示,圆柱体的周长对应于输入空间中方位角的变化,圆柱体的高度对应于输入空间中的仰角,映射对光照是完全不变的。

  • 为了进行比较,在本实验中,也使用了LLE进行嵌入表示,虽然LLE算法可以使用任意邻域,但该算法通过计算线性重建权值来嵌入样本,严重限制了使用远邻域的效果;如下图所示,图上半部和下半部光照不同,嵌入表示明显不同,说明并没有光照不变这一特性。

3.在文本分类中的应用

在文本分类中,我们可以引入对比学习这一任务,在一般的分类任务的交叉熵loss后面添加一个对比学习loss,代码如下:

# //这里outputs以bert输出为例

 # 1.分类loss.
 loss_1 = F.cross_entropy(outputs.logits, b_labels) 

 # 2.contrastive loss.
 euclidean_distance = F.pairwise_distance(outputs.logits, outputs_neg.logits, p=2) 

# 这里是计算不相似样本的loss
 loss_2 = torch.sum(torch.pow(torch.clamp(self.margin - euclidean_distance, 
 min=0.0), 2)) 

 # 3.两个loss相加
 # 用交叉熵loss替换了原本的相似样本对loss
 loss = loss_1 + loss_2  # * k

4.reference

[1].Dimensionality Reduction by Learning an Invariant Mapping
[2].Momentum Contrast for Unsupervised Visual Representation Learning
[3].A Simple Framework for Contrastive Learning of Visual Representations
[4].FaceNet: A Unified Embedding for Face Recognition and Clustering
[5].https://mp.weixin.qq.com/s/CrEd02pXsc23FAeET0RaWQ
[6].https://zhuanlan.zhihu.com/p/103278453
[7].Reducing the Dimensionality of Data with Neural Networks
[8].https://www.cs.toronto.edu/~hinton/
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值