实现办法
latent space representation similarity
古老办法
Visual-semantic embedding(nips’13)
idea
模型非常原始,还没有用“cross modal”这种标签,目标是为了学到好的 image 和 text 交融的 embedding。
图中 label 其实是 image description(text),给 image 加了个 transformation,心愿 image 的 space 可能 transform 到与 text 雷同的空间中去。
loss
其 loss 是拉进雷同对,拉远不同对的 hinge rank loss:
v()是 image 的 latent space,Mv()就到了与 text 雷同的 space 了,而后 dot 失去分数。
小结
后续的其实都能够说是这个模型泛化的。
Image Encoders
UNITER(eccv’20)
出自微软 dynamic 365
image 端 Faster RCNN,nlp 端 bert。
训练 loss 除了 text bert 的 MLM,img 端也用相似的掩码后重建,外加 image-text matching 的 loss
loss
txt 的 MLM 是 bert 的老 loss,不谈了。
第二局部是图片重建 loss。
对图片的重建文章给了三种,因为图片的重建是一个二维张量,所以能够:
- feature regression,在给定其余 img region 的条件下,复原出被 mask 掉的 region。回归用的是 mse:
- 因为图片是 FasterRCNN 输入是 bounding box 和这个 box 的 cls 类别,还能够用 cls 类别做 loss:
- 除了 mse,还能够用 KL 拉进输入的 ditribution:
第三局部是 txt 和 img 的 matching(ITM) loss,采纳了二分类 loss,预测两个是否是 pair:
至此 pretrain 的 Loss 就完结了。
其余信息
为了用作不同上游工作,文章还给出了什么上游工作用什么 loss 组合:
ViT(Vision Transformer ICLR’21)
transformer 在 cv 的转化版。只管在这篇工作之前也有很多相似的工作,然而这个工作还原度最高、成果最好、训练资源最大。
与原版 Transformer 略微有一点区别:
- img patch 要先通过线性层做 latent space 转换
- Transformer block 的 layer norm 的程序有变动
- positional embedding 图像是 2D 的,txt 是 1D 的,文章尝试了各种 2D 形式,都差不多。
-
训练形式和 Transformer 高度还原,增加 1 个 CLS 的 token,去做图片分类,文章也尝试了用 pooling 等 cv 罕用操作,成果差不读。
loss
用 CLS 预测图片的分类
CLIP
训练
试验
img-text retrieval
JEMA(cikm’21)
来自 DeepAI
办法
食物与食谱多模对齐,文章偏利用。
构造特地简单,image 两段 feature extraction,text 也两段,后各自交融,各自在两两个小 loss 疏导,再两模态交融又有大 loss 疏导,交融后,再加一个小 loss 疏导,共 4 段 loss。
loss
- $DHTL_{sm}$,Soft-margin based Batch Hard Triplet Loss,就是 triplet loss,soft margin 又 hard 的 triplet loss,这是主 loss:
平时的 triplet loss 是 $L=max(d(a,b)-d(a,c)+margin,0)$,原先的 $margin+*$,被 approximate 成了 $ln(1-ln(\gamma(*+margin)))$。loss 是双边的取样了两次,一次的 recipe(text)$\rightarrow$food(image),一次反过来。 - 两个多分类 loss,别离是 image 与 image label 和 text 与 text 高频 term 的两个多分类工作的 loss。
- 一个 discriminator loss,专门判断 embedding 是否是 text emb 还是 img emb:
$F_D$ 是判断器,判断此 emb 是否是 visual image,还另外给 text 那局部加了一个让他 embs 尽可能变得像 visual emb 的 loss $L_{DA}$。
文章的理由是,既然我判断器是判断 emb 是否是 visual,那对 text 来说我就要尽可能靠近 v 的 emb 能力让这个 GAN work 啊。(我预计是模型不加 $L_{DA}$ 收敛不了,集体看过的 GAN 里加这个的不多。。)
成果
依然是 retrieval 试验,用 text embs 去找 img embs,或者相同方向。
JEMA 模型的不同在于 recipe 关键词的排序不同,img 都是 ResNet 系列做 encoder。
最初还是 TFIDF 的成果最好(老的货色不肯定成果不好~)
融化
既然加了这么多 loss,到底有没有成果?
- b 意思是应用一般 triplet loss,作为基线模型;MA_v、MA_r 是分支的多分类 loss;CA 和 DA 示意 embs 判断那个 loss 是用判断形式还是用分类形式;曾经大 loss $DHTL_{sm}$。
融化试验后果看起来十分难受的,并且应用了和 eval 雷同的分数 MedR、R@1 等。
case study
以 text$\rightarrow$img 为例,因为输出要有 2 段:instruction 和 ingredient,retrieve 进去 food imgs。
小结
- 这是 有监督 的,2 个模态监督信息 img 的分类 +text 的高频 term。
- 结构复杂,组件多。
-
成果好,各组件融化试验分明。
EOMA ICMR’22
文章提出 event 概念,曰 在一段时间内先做什么后座什么的这些事件,叫做 event。而咱们 food recipe 是 event dense 的,所以要强调 event 在 feature extraction 阶段的作用。
话尽管这么说,然而其实 forward 流程 齐全一样,只是换个说法讲故事而已。
模型
与原工作的不同点:
- text 端:title 也用作 text data,encoder 换为 transformer 系列
- img 端:encoder 换为 CNN(其实是 ResNetXt101,与上个工作一样)+ViT
- event embs:
-
loss:外部 align 外加两项
eval
成果只能说 炸裂,换了 encoder 之后间接升天。
既然 loss 和 forward 流程并无扭转,其实此还是该归功于 encoder 的抉择,Transformer 系列、ViT 和 Transformer 的确太好用了。
融化试验的数据也是十分难看(会不会有猫腻……
小结
- 更换 encoder,留神 event 后,成果 炸裂,间接提点 10% 以上;
- 其余和上篇工作一样,能够了解为更换了 encoder 后的上篇工作;
- 因为成果炸裂,成为会议的 best paper candidate。
Graph based Text-Img:GSMN(cvpr’20)
办法
首先分两段输出,text 和 img。两端离开来说。
text:用 NLP 的依存剖析解析进去各个 word 的关系并根据这些关系建图。word embedding 用 Bi-GRU 第 i 层的 avg 的 hidden state,可能是依存关系的工具给的。
img:用 Faster RCNN 失去的各个 object 框,而后用 ResNet 取 feature 作为 initial representation,用 极坐标 定点各个 object 的地位,并以此建图。
以上两步就失去了 visual graph 和 textual graph,接下来进行两次尺度上的 matching。
node level matching
(文章说是 matching,倒不如说是 representation 的预处理……)
这里是对不通过图卷积的 node 示意间接进行 matching。$U_{\alpha}$ 做 text node 示意矩阵,$V_{\beta}$ 做 visual node 示意矩阵,matching 过程如下:
-
两两计算 $v$ 和 $u$ 的类似度失去类似度矩阵,后在 img 维度上 softmax 失去 text$\rightarrow$img 的权重,并与 V 相乘,失去了取得 text 信息的 img 示意 $C_{t->i}$。
img$\rightarrow$text 方向上也是这么做,失去 $C_{i->t}$。至此,visual node 的 embedding 和 graph,以及 textual node embedding 和 graph 都筹备好了。
structural level matching
这一步倒绝对简略了,间接把两个 graph 送入图卷积神经网络 GCN 后失去两组 feature,而后均匀了两两组合输出再过 linear 失去这个 pair 的 match 水平。通过 message passing,
先通过图卷积,
在通过两层 linear,失去用 mlp 推断的 similarity。
(他这里并没有用 $X$ 表征一幅图,而是用 $x$,一般来说 $x$ 示意图中一个节点。起因应该是这里一幅图 + 图 caption 就要建两个图,整个数据集有很多个图,他把图看成了“根本单位”。
有了两个方向的匹配度,均匀一下就是 undirectional 真的 similarity 了。
(有一点奇怪,structural level matching 的 sim并没有visual node 和 textual node 的交互……只有 node level matching 的时候进行了交互融入进去了一点两模态的交互。
文章对此有如下解释:
revise
text GRU,img Faster RCNN+ResNet,node matching 取得初始示意,通过图卷积后计算 sim,而后进行 triplet loss。
loss
也是经典的 triplet loss,拉进 match pair 的间隔,拉远不 match 的,同时也可见整个模型是 有监督 的
成果
文章办法GSMN。
- 数据集:Flickr30K and MSCOCO,img+caption
- 工作:retrieval
- 测试指标:
晋升很大 3% 左右。
sparse 意思是我用 NLP 依存关系对 textual graph 建边;dense 指我间接 fully connect,不必依存关系了。sparse+dense 文章没分明,可能是有些图 sparse 有些图 dense?
文章只给出了 retrieval 的后果,没有给更细粒度的 semantic segment 的成果,只给了他的 case study:
因为用的 Faster RCNN,还是只能画框来表征 object,这种 semantic segment 是图中 textual node 与 visual node 的 dot sim 失去的。
小结
- 办法有点怪的,除了 loss 是“比拟通用”,node matching 其实是对初始示意做个加权,structure matching 是本人这一路用 mlp 做个预测值,只有 node matching 能勉强说是两模态有信息交换……
- 能实现的依然是 短语级别 – 图片级别的 retrieval,而不是图片 obj 和 word 级别的对齐,
- 在 retrieval 上,与 sota 相比晋升很大
ALBEF nips’21
流程
3 个 encoder,除了 img 和 text 还有 multimodal encoder。img encoder 是 ViT(终于有用 ViT 的了),text encoder 和 multimodal encoder 都是是 bert。
txt 和 img 端失去 feature 后,再输出 multimodal 的 encoder,而后以输入做 loss。
这还没完,这是一个 base model,还有一个 momentum model(图右侧),momentum model 的 encoder 参数依照 running average 办法更新,除了 base model 的 3 个 loss,还有 base model 和 momentum model 的 loss。
loss
loss 有三块,bert 的 MLM,text-img matching 和 NCE。MLM 还是完形填空,略过。
带监督的 nce
带监督的 NCE loss 的机会在 multimodal encoder之前 ,这也是文章题目说的:Align before Fuse: Vision and Language Representation Learning with Momentum Distillation,他要在 fuse 之前做 align。(然而也没说这样子的益处)
文章间接用 img 和 txt 的个 encoder 的[CLS] token 做整个 img 和 txt 的表征,进行 infoNCE,两个方向上:
再退出监督信息:
matching loss
matching loss 是 multimodal encoder 过后,会输入这一组 txt 和 img 是否是一组,这个 loss 是 有监督 的
最终的 loss 就是三局部加起来
与 momentum modal 的 loss
回顾带监督的 nce 有两个 estimation distribution $p_{m}^{i2t}$ 和 $p_{m}^{t2i}$。我 base modal 有这俩,momentum model 也有。文章最小化这两者的 KL 散度。
-
为什么要外加个 momentum model?
文章给出的理由是:数据大部分是爬虫爬来的,即使是有标签的 pair,也只是“weakly correlated”,是有很多噪声,那那些 text 和 img 更相干的可能湮没在 neg pair 外面了。而本来的 NCE 只认给定的 txt 和 img,然而如果我有个 momentum modal,他的参数更新是绝对旧的,我就能找到不是标定的 txt-img 然而“更可能”是有关系的 pair 了。The image-text pairs used for pre-training are mostly collected from the web and they tend to be noisy. Positive pairs are usually weakly-correlated: the text may contain words that are unrelated to the image, or the image may contain entities that are not described in the text. For ITC learning, negative texts for an image may also match the image’s content. For MLM, there may exist other words different from the annotation that describes the image equally well (or better). However, the one-hot labels for ITC and MLM penalize all negative predictions regardless of their correctness.
To address this, we propose to learn from pseudo-targets generated by the momentum model.集体了解:牵强!可能就是硬为了用上 momentum 机制,蹭 MoCo 的热度……
到此 Loss 局部完结,简略说是 base model 的 3 局部,外加 base-momentum 的 1 局部,都是带有监督信息的。
融化试验
TR text retrieval;IR image retrieval。
第 1、2 行能够看到 ITC(image-text constrastive loss)那局部对 retrieval 影响大~3 个点。
选取 hard negative pair 也能提点 1%。
倒数 2、3、4 行,momentum model 和 base model 机制只提了 0.x%。
与 baseline 的试验
retrieval 做法:
During inference, we first compute the feature similarity score sit $c$ for all image-text pairs. Then we take the top-k candidates and calculate their ITM score sit $m$ for ranking
提了很多,然而差距不是很大。分数都十分高 95% 以上了都。
小结
- 模型是 有监督 的。
- 应用了 ViT,最新的视觉畛域的 encoder 了,数据集也极大,retrieval 的后果都达到 95% 以上了。
- momentum model 机制大可不必,参数量间接翻了一倍后果也晋升不大
- txt 的 bert 和 img 的 ViT,预计整个模型会很大。
能增强 Semantic Align 的正则项 ACL’21
论文提出了一个“间隔”IAIS,并且提供了最小化此间隔的对应 loss
间隔的提出
文章的输出,是把各个模态的序列 合并了起来:$$X=X_V||X_L$$L 示意 linguistic,V 示意 visual。并起来当前,再做和 transformer self-att 一样的操作。然而因为并不是一个模态的了,文章把具体拆成了四个局部:
$S_{LL}$$S_{VV}$ 是“模态内 att;”$S_{LV}$$S_{VL}$ 是“模态间 att”。
接下来,因为假如 L 和 V 是对齐的,所以也心愿 $S_{LL}$$S_{VV}$ 间隔也可能相近:
文章定义了 m -KL 是双向的 KL,从 $S_{LL}$ 到 $S_{VV}$ 一个 KL,还有反向一个。并且把这个间隔叫做 Intra Modal Self-att Distance with annotation (ISDa)。
那这个间隔有用没用?
UNITER 在训练过程中,随着 Recall 的增大,ISDa 在减小,并且二者皮尔森系数是 -0.6,阐明是有关联的。
提出的新附加 loss
通过用 $S_{VL}$ 和 $S_{LV}$“重建”$S_{VV}$ 和 $S_{LL}$,并且与用 $S_{VV}$ 和 $S_{LL}$ 的 m -KL 来算 loss。
重建办法一:
其实就是找 att 最大的而后记录、转换。
转换过后,新进去的 $S_{LL}^s$ 跟 $S_{VV}^s$ 就和原 SLL SVV 做 m -KL。
重建办法二:
$$S_{VV}^d=\sigma (S_{VL})\sigma (S_{LV})$$
而后还是 m -KL 拉进 $S_{VV}^d$ 和 $S_{LL}^d$ 和原 $S_{VV}$ 和 $S_{LL}$
retrieval 试验
刚刚介绍的副 loss 只用在了 fine tune 阶段,而且设置了阈值只在符合条件的 pair 才给计算。(这种计算量微小)
不过这比照不应用,是有成果的。
sigular 指两个 for 的重建 $S_{LL}$,distributed 指 $S_{VV}^d=\sigma (S_{VL})\sigma (S_{LV})$ 重建。
小结
- 提出了一个间隔以及配套的 loss,可能仅在 fine tune 阶段就晋升 retrieve 的成果
- encoder 是 FasterRCNN,绝对老旧,在应用 IDSa 的时候不不便
- 把 $X_V$$X_L$ 并到一起了做输出了,理论应用会不便吗?
- 因为文章计算资源不够,试验无限。
CAMP(iccv’19)
直来直去的 feature fusion。
$V$ 是 FasterRCNN 取出来的;$T$ 是 bi-directional GRU 取出来的。数据集 Flickr30K 和 COCO。
forward
$T$ 是 text feature、$V$ 是 visual feature。
第一步
进行相似 transformer K Q V attention 的操作(cross modal message aggregation),只不过这次是 $T$ 和 $V$ 矩阵。$$A=softmax(\frac{(W_vV)^T(W_TT)}{\sqrt d})$$,$$\hat T=AT$$ 这个操作是对 $T$ 的,对 $V$ 也有雷同操作。
对应图上红色。
第二步
再来一次 Gated fusion+residual(图中对应绿色)。gate(单个向量)操作:
对于 $V$,整体来看是 1 $V$ 和 $T$ 进入 gate 算门是否被激活 2 与门 $G$ 再做运算做 fusion:
⊕ is the fusing operation (elementwise sum)。这一步文章还独自画了一个图:![在这里插入图片形容](https://img-blog.csdnimg.cn/639e1465e84e4e2bb6b5800f1ecb58c6.png)
第三步
再来一次和第一步雷同的操作
第四步 loss
有了 $v*$ 和 $t*$ 相加后过 mlp 和 sigmoid 作为两者是否是 pair 的预测,。
不过他是以最难二分类 loss,就是从所有的 vt pair 中,只取最靠近真 pair 的那组做 0:
融化试验
base model:没有任何 cross model 的操作,间接用 encoder 取到的 feature 做 cos retrieve。能够看到 也不差。
影响比拟大的组件:cross att(红色 11)、fusion residual(绿色的残差链接 12)、mlp 预测与 ranking loss 而不是用 cos(蓝色 7)。
融化的后果能够看到:
- 两次两个模态的交互起到了至关重要的角色。
- 就即使是 base model 的 feature 间接 cos 检索,成果也不差,仅差了 5 个点
小结
总结
- 全副是有监督模型
- 只管 case study 上,可能实现 sentence word $\leftrightarrow$ img obj 级别的 align,然而并没有一个 model 是以此为目标,且给出掂量指标的模型,全副的模型都是检索工作。不过 retrieval 的晋升能够了解为 query 中的 obj 与 samples 的 obj 对得更齐了使得整体的后果回升了。
- txt 端的 encoder 大部分都是 bert,img 这边有 Faster RCNN 和 ViT,这些模型 retrieval 后果的进步,很大水平上是 encoder 升级换代。
- 没有模型是只用一个 Loss 就解决掉 align 问题的,全部都是多角度、多方位的几个 loss 叠加训练。
- 训练 Loss 次要都是 triplet loss+ 其余需要 loss 形成。