Contrastive Multiview Coding(多视角的对比学习编码)

原文题目为:Contrastive Multiview Coding
代码链接:https://github.com/HobbitLong/CMC

引言

本文主要提出了Multiview 的contrastive learning。motivation是现实世界中看待同一个物体具有多个视角,每一个视角都是有噪声和不完整的,但是一些对于该物体很重要的元素,例如physics(物理), geometry(几何), and semantics(语义)通常是在多个视角间共享的,举个例子:(一只狗可以被看到(seen),听到(heard),摸到(felt)),所以作者认为一个powerful representation建模了多个视角下都不变的元素。

基于这个假设,作者提出了多视角下进行contrastive learning来获得multi-view representation,通过contrastive learning,实际上等同于最大化互信息在多个view之间,即让多个view之间最大化共享的信息。
在这里插入图片描述
如上图所示,对于第 i i i个样本,4个 不同视角的representation在朝着嵌入空间中靠近优化,而对于另一个 j j j样本,嵌入空间朝着远离的方向优化。最终的结果是每个样本簇不同分离开来,每个样本簇包含4个不同视角的嵌入representation。上图展示的是NYU RGBD数据的4个view,最终的表示可以是4个视角的representation concatenation。

方法

two-view contrastive learning

给定数据集 V 1 V_{1} V1 V 2 V_{2} V2,包含样本集合 { v 1 i , v 2 j } i = 1 N \{v_{1}^{i},v_{2}^{j}\}_{i=1}^{N} {v1i,v2j}i=1N,我们考虑对比congruent(一致)和incongruent(不一致)样本对,即样本来自联合分布 x ∼ p ( v 1 , v 2 ) x\sim p(v_{1},v_{2}) xp(v1,v2),也就是 x = { v 1 i , v 2 i } x=\{v_{1}^{i},v_{2}^{i}\} x={v1i,v2i}认为是positives,相反的,样本来自边缘分布的乘积 y ∼ p ( v 1 ) p ( v 2 ) y\sim p(v_{1})p(v_{2}) yp(v1)p(v2),也就是 y = { v 1 i , v 2 j } y=\{v_{1}^{i},v_{2}^{j}\} y={v1i,v2j}认为是negatives。

我们定义一个判别函数(也称为critic) h θ ( ⋅ ) h_{\theta}(\cdot) hθ(),对positvie的样本对获得高值,对negative样本对获得低值。遵循先前的设置,选择一个正样本对 x x x,同时采样 k k k个负样本对 { y 1 , y 2 , . . . , y k } \{y_{1},y_{2},...,y_{k}\} {y1,y2,...,yk}进行对比学习:
L c o n t r a s t = − E S [ log ⁡ h θ ( x ) h θ ( x ) + ∑ i = 1 k h θ ( y i ) ] \mathcal{L}_{contrast}=-\mathbb{E}_{S}[\log{\frac{h_{\theta}(x)}{h_{\theta}(x)+\sum_{i=1}^{k}h_{\theta}(y_{i})}}] Lcontrast=ES[loghθ(x)+i=1khθ(yi)hθ(x)]
其中 S = { x , y 1 , y 2 , . . . , y k } S=\{x,y_{1},y_{2},...,y_{k}\} S={x,y1,y2,...,yk},具体的,我们固定一个视角的样本 v 1 i v_{1}^{i} v1i,从另一个视角选择出正样本 v 2 i v_{2}^{i} v2i和采样的 k k k个负样本 v 2 j , j v_{2}^{j},j v2j,j
L c o n t r a s t V 1 , V 2 = − E { v 1 1 , v 2 1 , v 2 2 , . . . , v 2 k + 1 , } [ log ⁡ h θ ( { v 1 1 , v 2 1 } ) ∑ j = 1 k + 1 h θ ( { v 1 1 , v 2 j } ) ] \mathcal{L}_{contrast}^{V_{1},V_{2}}=-\mathbb{E}_{\{v_{1}^{1},v_{2}^{1},v_{2}^{2},...,v_{2}^{k+1},\}}[\log{\frac{h_{\theta}(\{v_{1}^{1},v_{2}^{1}\})}{\sum_{j=1}^{k+1}h_{\theta}(\{v_{1}^{1},v_{2}^{j}\})}}] LcontrastV1,V2=E{v11,v21,v22,...,v2k+1,}[logj=1k+1hθ({v11,v2j})hθ({v11,v21})]
理论上,针对一个样本 v 1 1 v_{1}^{1} v11需要遍历 V 2 V_{2} V2全部的负样本来进行contrast,即 k k k为数据集大小减1.但是当数据集很大时,例如imagenet,直接优化上述的loss是不合理的,因为softmax分类的类别过多,计算量太大。因此作者采用随机采样 k k k个负样本并进行 k + 1 k+1 k+1-softmax分类的方法。

critic h θ ( ⋅ ) h_{\theta}(\cdot) hθ()

h θ ( ⋅ ) h_{\theta}(\cdot) hθ()是一个神经网络,采用编码器 f θ 1 ( ⋅ ) f_{\theta_{1}}(\cdot) fθ1() f θ 2 ( ⋅ ) f_{\theta_{2}}(\cdot) fθ2()来分别编码输入样本 v 1 v_{1} v1 v 2 v_{2} v2,得到的表示来计算余弦相似度:
h θ ( { v 1 , v 2 } ) = exp ⁡ ( f θ 1 ( v 1 ) ⋅ f θ 2 ( v 2 ) ∣ ∣ f θ 1 ( v 1 ) ∣ ∣ ⋅ ∣ ∣ f θ 2 ( v 2 ) ∣ ∣ ⋅ 1 τ ) h_{\theta}(\{v_{1},v_{2}\})=\exp{(\frac{f_{\theta_{1}}(v_{1})\cdot f_{\theta_{2}}(v_{2})}{||f_{\theta_{1}}(v_{1})||\cdot ||f_{\theta_{2}}(v_{2})||}\cdot \frac{1}{\tau})} hθ({v1,v2})=exp(fθ1(v1)fθ2(v2)fθ1(v1)fθ2(v2)τ1)
τ \tau τ是超参数来动态调节范围。
L c o n t r a s t V 1 , V 2 \mathcal{L}_{contrast}^{V_{1},V_{2}} LcontrastV1,V2是将 V 1 V_{1} V1视为anchor并枚举 V 2 V_{2} V2,对称地,将 V 2 V_{2} V2视为anchor并枚举 V 1 V_{1} V1,将两者相加作为two views loss:
L ( V 1 , V 2 ) = L c o n t r a s t V 1 , V 2 + L c o n t r a s t V 2 , V 1 \mathcal{L}(V_{1},V_{2})=\mathcal{L}_{contrast}^{V_{1},V_{2}}+\mathcal{L}_{contrast}^{V_{2},V_{1}} L(V1,V2)=LcontrastV1,V2+LcontrastV2,V1

与互信息(MI)的联系

通过证明,可以得到互信息的下界:
I ( z i ; z j ) ≥ log ⁡ ( k ) − L c o n t r a s t I(z_{i};z_{j})\geq \log{(k)}-\mathcal{L}_{contrast} I(zi;zj)log(k)Lcontrast
可以看出增加 k k k能够导致更好的表示。

contrastive learning 扩展到>2个view

在这里插入图片描述
针对4个views, V 1 , V 2 , V 3 , V 4 V_{1},V_{2},V_{3},V_{4} V1,V2,V3,V4,提供了(a)和(b)模式。
core view模式是针对某个view V 1 V_{1} V1,与其他view进行contrastive learning,此时一共有3个目标:
L C = ∑ j = 2 4 L ( V 1 , V j ) \mathcal{L}_{C}=\sum_{j=2}^{4}\mathcal{L}(V_{1},V_{j}) LC=j=24L(V1,Vj)
另一种是全图模式,full graph,即每一种view都与其他view进行contrastive learning,因此有6个目标:
L F = ∑ 1 < i < j < 4 L ( V i , V j ) \mathcal{L}_{F}=\sum_{1< i< j< 4}\mathcal{L}(V_{i},V_{j}) LF=1<i<j<4L(Vi,Vj)
全图模式更能抓住不同view之间的共同信息。

Memory bank

Memory bank是一个存储中间latent representation缓冲区,当我们retrieve k k k个负样本时,就从Memory bank获取而不用重新计算representation。Memory bank在训练过程中是动态更新的,每得到样本新的representation,即以滑动的形式更新:
r e p = ( 1 − m o m e n t u m ) ∗ o l d _ r e p + m o m e n t u m ∗ n e w _ r e p rep=(1-momentum)*old\_rep+momentum*new\_rep rep=(1momentum)old_rep+momentumnew_rep
momentum一般取0.5,Memory bank的好处是能够快速得到很多负样本的representation,缺点是representation可能略微陈旧。

### 回答1: 对比多视角编码Contrastive Multiview Coding)是一种用于自监督学习的方法,它通过对同一样本的不同视角进行编码,来学习样本的特征表示。该方法可以在无需标注数据的情况下,从大量未标注的数据中学习到有用的特征表示,从而提高模型的泛化能力和性能。 ### 回答2: 对比多视图编码Contrastive Multiview Coding, CMC)是一种新兴的自监督学习方法,是一种利用多个视角来学习数据特征的方法。相比于从传统的数据集中学习高级特征来说,CMC的作用在于通过理解不同数据视图之间的关系来代替手工标注或人为制造标签。 CMC方法将多个视角数据(例如从不同角度或时间拍摄的图像)随机组合进行研究,以便能够更好地训练出模型。这种方法的优点在于,它能够学习具有普适性的判别性特征,同时保留训练数据的复杂性。这意味着CMC方法在不依赖于大量标签数据的情况下,仍能够有效提供有用的表示特征。 CMC从理论上只需要一个loss function来完成整个模型的训练,这一点使它成为自监督学习中的热门方法之一。 它在应用中的一个重要应用是在计算机视觉领域,如图像分类、物体检测和语义分割等方面。它已经在许多计算机视觉任务中表现优异。 总之,对比多视图编码是一种适用于多视图学习的先进方法,因为它在利用不同视图之间的相似性来训练模型时非常有效,因此被广泛应用于计算机视觉领域。 ### 回答3: 对比多视图编码Contrastive Multiview Coding,CMC)是一种新的自监督表示学习方法。它利用多视图(多角度、多尺度、多剪裁的)数据来学习特征表达,从而生成可区分、可重用的低维嵌入。该方法通常用于解决少标注数据问题,因为不像监督学习方法,它不需要标注在先。 CMC的核心思想是,使用互相独立的视角(通常指从不同的角度、尺度、或者剪裁方式上观察同一物体)来捕捉不同的特征信息,并学习如何将这些视角下的不同的低维特征嵌入到同一空间中。通过学习如何将这些特征的嵌入对样本之间的差异进行建模,在同一视角之外的样本之间也能够建立起有意义的对比关系。 具体的训练过程中,CMC通过分别对每个视角进行编码操作,为每个视角得到一个低维的特征表示,然后以最大化互相对比度的方式优化这些特征表达,让同一样本在不同视角下产生的嵌入向量更加接近,不同样本之间的嵌入向量相对较远,以此达到更好的分类效果。 总体而言,CMC具有可拓展性、半监督、不受领域限制等多样的特点,可以为许多计算机视觉任务提供有用的特征表示。此外,由于CMC利用无监督的自我学习机制,因此可以在无监督的情况下使用大规模数据,可以应用于数据集较少的任务中。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值