【论文阅读】Adaptive Cross-Modal Prototypes for Cross-Domain Visual-Language Retrieval

阅读目标

  1. 了解在跨模态检索中如何构建原型
  2. 了解本文是如何应对non-iid问题的

问题回答

  1. 原型在本文中是一个线性映射层的参数,此映射层的输出代表原型表示给每个样本分配的概率,原型对照的基准是作者通过聚类自主构建的龙骨(聚类中心),而样本对照的基准则是龙骨对每个样本分配的概率
  2. 最大化源域跨模态表示和目标域跨模态表示之间的互信息

摘要

动机:在源域中有标记数据而目标域中没有标记数据的设定下的视觉-文本检索任务(包括图像-文本和视频-文本任务)
提出方法:通过最小化单模态和跨模态的源域和目标域之间的分布变化,来学习跨模态视觉-文本表示
核心idea:1)学习到的跨模态表示应该由单个模态中的概念组成,我们对这个归纳偏置(关于机器学习中的必要假设,可以理解为必要的“先验”,比如cnn中的locality invariance 和 spatial invariance,前者代表cnn中相邻的grid有依赖而较远的没有,后者代表空间不变性,及kernel可以在整个空间共享权重)进行编码,实现方式是,在每个域上聚合预训练的单模态特征,然后设计一个正则化项来保存生成的结构(生成的结构具体指什么?以及为什么这里可以实现对归纳偏置的编码) 2)在训练中,通过将源域和目标域之间的跨模态表示间的互信息最大化,提供了一种机制,在保留域之间的共性同时,忽略那些无法从另一个域推断出的这个域的信号

注:1)本文的目标在于域的迁移,原型学习只是达到这个目的的方式 2)需要承认,领域迁移仍然是跨模态检索问题中,能证明模型泛化能力和真正的理解能力的表现,而这种理解能力与原型学习的概念良好适应

引入

在UDA(Unsupervised Domain Adaptation,无监督域迁移,也就是源域有标记的视觉数据,目标域无标记)的设定下,视觉-文本检索任务需要解决的三个挑战(感觉分析得很透彻):1)语义合成性:模型需要合成由多个视觉实体及其关系组成的复杂语义特征 2)报告偏差:是指人们倾向于低估可用信息,这里是说视觉-文本任务中,对于数据集的利用是不全面的(不是特别理解) 3)视觉和文本的领域迁移:字面意思不赘述
为了解决这三个挑战,提出了适应性跨模态原型框架,其核心创新为:1)为了解决对语义合成性的需求并获得报告偏差的鲁棒性(挑战1)2)),提出学习一个精心设计的正则化的跨模态表示(也就是原型),但由于视觉-文本任务中没有类别的概念,因此首先对目标域中的预训练视觉特征和源域中的预训练文本特征进行聚类,然后将原型网络连接到跨模态表示,并用跨模态表示预测同一个模态下,每个样本的单模态嵌入到其聚类中心的分配概率,这是为了确保聚类发现的类别不会在跨模态表示中丢失(加粗对应两个问题,目标域没有文本特征所以不聚类,但为什么源域只聚类文本特征?原型网络如何用于跨模态表示的,跟原本的网络有关联吗?) 2)为了最小化域间的视觉和文本变换的影响(挑战3)),将互信息最大化,应用于源域和目标域之间的原型网络的预测

方法

读这一部分时感觉有些理不清。所以这里就不按照作者的叙述逻辑来叙述了:

符号含义
v v v视觉特征
l l l文本特征
s s s源域
t t t目标域

网络输入

v s , l s , v t v^s,l^s,v^t vs,ls,vt

代表源域的视觉和文本特征,以及目标域的视觉特征(因为在UDA的设定下,目标域的数据均为标注,所以没有文本特征)

视觉编码器 E v E_v Ev和文本编码器 E l E_l El

输入: v s , l s v^s,l^s vs,ls(只对源域的特征进行处理)

处理:源域中的视觉特征放入视觉编码器 E v E_v Ev,文本特征放入文本编码器 E l E_l El,将他们映射到共同的跨模态嵌入空间中

目标:使语义上相近的视觉和文本输入,在公共空间中距离相近

损失: L R = 1 B ∑ i = 1 , j ≠ i B [ m + ξ i , j s − ξ i , i s ] + + [ m + ξ j , i s − ξ i , i s ] + L_R = \frac{1}{B} \sum_{i=1, j\neq i}^{B}[m+\xi_{i,j}^s-\xi_{i,i}^s]_+ +[m+\xi_{j,i}^s-\xi_{i,i}^s]_+ LR=B1i=1,j=iB[m+ξi,jsξi,is]++[m+ξj,isξi,is]+
其中, ξ i , j s = c o s ( E v ( v i s ) , E l ( l j s ) ) \xi_{i,j}^s = cos(E_v(v_i^s), E_l(l_j^s)) ξi,js=cos(Ev(vis),El(ljs)),表示映射到同一空间后的向量的余弦相似度; [ ⋅ ] + = m a x ( ⋅ , 0 ) [·]_+ = max(·,0) []+=max(,0)
整体损失称为双向排序损失,表示令配对的视觉和文本正样本的余弦相似度更大,不配对的视觉文本负样本余弦相似度更小(同时构造 i , j i,j i,j间的相似度和 j , i j,i j,i间的相似度,双向的含义)

输出: E v ( v s ) , E l ( l s ) E_v(v^s), E_l(l^s) Ev(vs),El(ls)

文本龙骨 K l K_l Kl

咱也不知道为什么取这个名字,其实龙骨指的是形心(聚类中心),据作者说这个名字反映了这些形心是用来稳定适应过程的意图

输入: l s l^s ls(是的你没看错,跟文本编码器的输入一样,所以这个文本龙骨和下面视觉龙骨的构建,与文本编码器是平行的关系)

处理:先将 l s l^s ls放入在大规模自由格式句子上预训练过的句子级别的语言模型(Sentence-Transformer模型),这一步是为了获取结构化的特征表示;然后使用Lloyd’s algorithm将句子表示聚类为 N N N簇,得到 N N N个聚类中心(称为文本龙骨) { Λ n } n = 1 N \{\Lambda_n\}_{n=1}^N {Λn}n=1N(作者其实使用花体的 L L L表示这个向量的,但是我不会打,所以换成 Λ \Lambda Λ,这个文本龙骨就会作为之后原型学习过程的参考标准;然后计算文本龙骨到每个文本样本的概率分配,由于对每个样本来说,所有龙骨都会对其产生一个分配概率,因此每个样本的分配概率共由 N N N部分组成,其中第 n n n个部分的分配概率由以下公式计算得出:
P k e e l ( l s ) ( n ) = e x p ( c o s ( l s , Λ n ) ) ∑ n ′ e x p ( c o s ( l s , Λ n ′ ) ) P_{keel}(l^s)(n) = \frac{exp(cos(l^s,\Lambda_n))}{\sum_{n^{'}}exp(cos(l^s,\Lambda_{n^{'}}))} Pkeel(ls)(n)=nexp(cos(ls,Λn))exp(cos(ls,Λn))
每个样本的分配概率将参与后面原型学习损失的计算;而每个样本的整体分类概率为: y s = P k e e l ( l s ) ∈ R N y^s = P_{keel}(l^s) \in R^N ys=Pkeel(ls)RN

目标:这一部分并没有设计损失函数,因为严格来说这部分其实不属于网络的一部分,而是用来给源域原型网络 P s P^s Ps生成龙骨(原型学习的标准)以及对应的每个样本的ground truth的,也就是分配概率(但是后面就会发现,这个ground truth其实是不同模态的,也就是损失中的prediction其实是跨模态的表示,而这个ground truth其实是单模态的表示)

输出: y s y^s ys

视觉龙骨 K v K_v Kv

输入: v t v^t vt目标域中的视觉表示

处理:同样也需要先利用 v t v^t vt生成结构化的表示,由于视觉信息本身不像句子有一样有结构,所以作者选择的方法是,分别放入三种预训练的网络:目标分类(a ResNext-101 pretrained on ImageNet)、动作识别(仅当视觉信息是视频时存在,an R(2+1)D model [64] trained on IG-65m)和场景识别((a Dense Net-161 pretrained on Places365),他们分别提取了视觉信息中的[what, how, where]三个维度,最后将三个维度的表示整合在一起(貌似是concat),就获得了结构化的表示;之后就跟文本一样,提取视觉龙骨 { V k } k = 1 K \{V_k\}_{k=1}^K {Vk}k=1K,然后计算他们对每个样本的分配概率,最后得到 a v t = P k e e l ( v t ) ∈ R K a_v^t = P_{keel}(v^t) \in R^K avt=Pkeel(vt)RK

目标:给目标原型网络 P t P^t Pt生成原型学习的标准和参与损失计算的ground truth

输出: a v t a_v^t avt

源原型网络 P s P^s Ps

组成:一个单线性映射层,权重矩阵是 K ∈ R N ∗ M K \in R^{N*M} KRNM,矩阵的第 n n n行表示第 n n n个源原型( N N N对应聚类个数)

输入: E v ( v s ) , E l ( l s ) E_v(v^s), E_l(l^s) Ev(vs),El(ls)经过视觉编码器和文本编码器处理的视觉和文本特征

处理:通过 P s P^s Ps网络对每个样本的视觉和文本特征计算 N N N维的分配概率,表示的是第 n n n个原型对样本的概率,公式为:
P p r o t o ( v s ) ( n ) = e x p ( c o s ( E v ( v s ) , K n ) ) ∑ n ′ = 1 N e x p ( c o s ( E v ( v s ) , K n ′ ) ) P_{proto}(v^s)(n) = \frac{exp(cos(E_v(v^s), K_n))}{\sum_{n_{'}=1}^Nexp(cos(E_v(v^s), K_{n_{'}}))} Pproto(vs)(n)=n=1Nexp(cos(Ev(vs),Kn))exp(cos(Ev(vs),Kn))
P p r o t o ( l s ) ( n ) = e x p ( c o s ( E l ( l s ) , K n ) ) ∑ n ′ = 1 N e x p ( c o s ( E l ( l s ) , K n ′ ) ) P_{proto}(l^s)(n) = \frac{exp(cos(E_l(l^s), K_n))}{\sum_{n_{'}=1}^Nexp(cos(E_l(l^s), K_{n_{'}}))} Pproto(ls)(n)=n=1Nexp(cos(El(ls),Kn))exp(cos(El(ls),Kn))
(所以说 P s P^s Ps中的线性映射,其实指的是这个余弦相似度+取指数+归一化?有点迷)在对 n n n个分配概率组合,得到 y v s ^ = P p r o t o ( v s ) \hat{y_v^s} = P_{proto}(v^s) yvs^=Pproto(vs) y l s ^ = P p r o t o ( l s ) \hat{y_l^s} = P_{proto}(l^s) yls^=Pproto(ls)

目标:令原型去逼近聚类得到的龙骨(聚类中心),落实到样本上,就令每个样本的原型概率分配去逼近龙骨概率分配:
L s = K L ( y l s , y l s ^ ) + K L ( y l s , y v s ^ ) L_s = KL(y_l^s, \hat{y_l^s})+KL(y_l^s, \hat{y_v^s}) Ls=KL(yls,yls^)+KL(yls,yvs^)
(因为只构建了源域的文本龙骨,所以 y v s ^ \hat{y_v^s} yvs^的逼近也是 y l s y_l^s yls

输出: y v s ^ , y l s ^ \hat{y_v^s}, \hat{y_l^s} yvs^,yls^

目标原型网络 P t P^t Pt

组成:线性映射,参数为 W ∈ R K ∗ M W \in R^{K*M} WRKM

输入: E v ( v t ) E_v(v^t) Ev(vt)

处理:也是计算原型网络对样本的分配概率:
P p r o t o ( v t ) ( k ) = e x p ( c o s ( E v ( v t ) , W k ) ) ∑ k ′ = 1 K e x p ( c o s ( E v ( v s ) , W k ′ ) ) P_{proto}(v^t)(k) = \frac{exp(cos(E_v(v^t), W_k))}{\sum_{k_{'}=1}^Kexp(cos(E_v(v^s), W_{k_{'}}))} Pproto(vt)(k)=k=1Kexp(cos(Ev(vs),Wk))exp(cos(Ev(vt),Wk))
继而得到每个样本的总分配概率: a v t ^ \hat{a_v^t} avt^

目标:是的目标域中的样本分配概率分布去逼近视觉龙骨对样本的分配概率:
L t = K L ( P k e e l ( v t ) ∣ ∣ P p r o t o ( v t ) ) = K L ( a v t , a v t ^ ) L_t = KL(P_{keel}(v^t)||P_{proto}(v^t)) = KL(a_v^t, \hat{a_v^t}) Lt=KL(Pkeel(vt)Pproto(vt))=KL(avt,avt^)

输出: a v t ^ \hat{a_v^t} avt^

子网络及输入输出

这里用表格总结一下每个子网络的输入输出,否则一会互信息部分完全看不懂

输入网络输出
v s v^s vs E v E_v Ev E v ( v s ) E_v(v^s) Ev(vs)
l s l^s ls E l E_l El E l ( l s ) E_l(l^s) El(ls)
l s l^s ls K l K_l Kl y s y^s ys
v t v^t vt K v K_v Kv a v t a_v^t avt
E v ( v s ) , E l ( l s ) E_v(v^s), E_l(l^s) Ev(vs),El(ls) P s P^s Ps y v s ^ , y l s ^ \hat{y_v^s}, \hat{y_l^s} yvs^,yls^
E v ( v t ) E_v(v^t) Ev(vt) P t P^t Pt a v t ^ \hat{a_v^t} avt^

最大化互信息

不了解互信息的可以看我之前的博客:【知识建设】信息熵、条件熵、互信息、交叉熵及相对熵(KL散度),很系统的介绍

我的理解下,这一部分的目标是令源域的跨模态表示 y v s ^ \hat{y_v^s} yvs^和目标域的跨模态表示 a v t ^ \hat{a_v^t} avt^之间建立联系,而这种跨模态表示是通过原型网络对每个样本的概率分配来表示的,至于为何此处不适用KL散度,而是使用互信息,是因为源域和目标域的原型,很可能表示的类别和语义含义不同,因此不能被看作是相同的随机变量,所以使用互信息;

然而在这部分的叙述中,竟然出现了四个变量: y v s ^ , y v t ^ , a v s ^ , a v t ^ \hat{y_v^s},\hat{y_v^t},\hat{a_v^s},\hat{a_v^t} yvs^yvt^avs^avt^,这里至今不理解,今后再议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值