之前在秋招和写毕业论文,一个月没更了。毕业论文交了,开更。

《VLMo: Unifified Vision-Language Pre-Training with Mixture-of-Modality-Experts》

多模态的单双塔困境

在多模态工作中存在两类主流方法,分别是双塔模型和单塔模型。

双塔模型以CLIP和ALIGN为代表,这类方法对文本和图像分别用一个编码器进行编码,然后计算两个模态的embedding的相似度。这类方法的优点是适合检索任务,可以检索大量的文本与图像,缺点是仅在塔顶的相似度loss交互信息有限,不足以处理复杂的VL分类任务。比如CLIP在视觉推理任务上的准确度较低。

img

单塔模型以ViLT为代表,这类模型的优点是可以充分地将多模态的信息融合,更擅长分类任务,这种模型架构天然不适合检索,因为没有显示的对齐操作,只能用 【CLS】 的输出匹配 or 不匹配。利用这种模型架构做检索任务,需要encode所有的文本-图像对,时间复杂度是 O(N2)O(N^2)O(N2) 的。

下图是ViLT的模型架构,有三个预训练任务,分别是图像文本匹配、MLM和单词-图像区域对齐(WPA)。

其中 Word Patch Alignment是 UNITER 这篇中提出的方法,WPA 是利用最优传输(OT)的形式完成的。

对比推荐的单双塔

这里可以联系推荐场景,召回模型通常是作用在 亿级别的,需要快速匹配,因此通常是双塔模型,用户和物品不存在特征交互,只在塔顶相遇进行相似度匹配。

精排阶段通常是作用在千级别,需要进行充分的特征交互挖掘,深度的特征交互有助于更准确的推荐,这个是推荐经典的理论。

所以可以帮助我们理解多模态里的单塔双塔困境。

VLMo——MoE解决单双塔问题

这篇文章希望融合这两个架构的优点,提出VLMo希望既可以作为双编码器(双塔)去做检索任务,也可以作为融合编码器(单塔)。VLMo利用了一个古老的模型结构 混合专家,VLMo的核心结构是 Mixture-of-Modality-Experts(MOME) Transformer,简而言之是将 Transformer中的FFN前馈网络替换成了针对不同任务的网络,称之为模态专家。每个专家拥有特定任务的知识,处理具体任务时切换到相应的专家。

下面来看具体方法。VLMo的整体结构和训练流程如下。左边是VLMo的结构,右边是按顺序的三个预训练任务。

Input Representations

图片和文本要变成embedding才能输入进VLMo。所以首先是如何生成embedding。

  • 图像表示:二维图像 v∈RH×W×Cv \in \mathbb{R}^{H \times W \times C}vRH×W×C 分割成 N=HW/P2N=H W / P^2N=HW/P2 个patch,vp∈RN×(P2C)v^p \in \mathbb{R}^{N \times\left(P^2 C\right)}vpRN×(P2C),C 是图片的通道数。将图片patch展开拉成向量,并通过线性变换的到patch embedding。还要再准备一个图片的【CLS】token。再加上一维position emb和type emb得到图像的最终输入:

Vtype ∈RD:H0v=[v[I1CLS ],Vvip,…,VvNp]+Vpos +Vtype \boldsymbol{V}_{\text {type }} \in \mathbb{R}^D: \boldsymbol{H}_0^v=\left[\boldsymbol{v}_{\left[I_1 \text { CLS }\right]}, \boldsymbol{V} \boldsymbol{v}_i^p, \ldots, \boldsymbol{V} \boldsymbol{v}_N^p\right]+\boldsymbol{V}_{\text {pos }}+\boldsymbol{V}_{\text {type }} VtypeRD:H0v=[v[I1CLS],Vvip,,VvNp]+Vpos+Vtype

其中H0v∈R(N+1)×D\boldsymbol{H}_0^v \in \mathbb{R}^{(N+1) \times D}H0vR(N+1)×DV∈R(P2C)×D\boldsymbol{V} \in \mathbb{R}^{\left(P^2 C\right) \times D}VR(P2C)×DVpos∈R(N+1)×DV_{p o s} \in \mathbb{R}^{(N+1) \times D}VposR(N+1)×DVtype ∈RDV_{\text {type }} \in \mathbb{R}^DVtypeRD。所以每个patch先投影,然后和【CLS】 concat起来,然后每个位置加不同的 VposV_{p o s}Vpos 和相同的 VtypeV_{type}Vtype

  • **文本表示:**没什么好说的,和BERT一样,H0w∈R(M+2)×D\boldsymbol{H}_0^w \in \mathbb{R}^{(M+2) \times D}H0wR(M+2)×D

H0w=[w[TCCLS],wi,…,wM,w[T1SEP]]+Tpos +Ttype \boldsymbol{H}_0^w=\left[\boldsymbol{w}_{\left[T_C \mathrm{CLS}\right]}, \boldsymbol{w}_i, \ldots, \boldsymbol{w}_M, \boldsymbol{w}_{\left[T_1 \mathrm{SEP}\right]}\right]+\boldsymbol{T}_{\text {pos }}+\boldsymbol{T}_{\text {type }} H0w=[w[TCCLS],wi,,wM,w[T1SEP]]+Tpos+Ttype

  • 图像-文本表示:

H0vl=[H0w;H0v]H_0^{v l}=\left[H_0^w ; H_0^v\right] H0vl=[H0w;H0v]

MOME Transformer

MOME Transformer用3个模态专家替换了Transformer的前馈网络:视觉专家(V-FFN)、语言专家(L-FFN)和视觉语言专家(VL-FFN)。针对不同的情况,使用不同的专家来处理任务。

但是,Transformer的Multi-Head Self-Attention(MSA)是共享的,意味着Query、Key和Value的参数是共享的。

**双塔:**如果输入是仅图像或仅文本向量,则使用视觉Expert对图像进行编码,使用语言Expert对文本进行编码。如果是VL检索任务,分别得到图像和文本的embedding后,计算两者相似度。这就是VLMo的双编码器结构。

**单塔:**如果输入是多种模态的向量组成,如图像-文本对的向量,则使用视觉专家和语言专家在Transformer底层编码各自的模态向量。然后使用视觉语言专家在顶层来捕获更多的模态交互。比如下图的VL分类任务,就是VLMo的融合编码器结构。

Pre-Training Task

VLMo有三个预训练任务。

图像-文本对比学习:给定一个batch的图像文本对,图像文本对比学习的目标是预测 N×NN \times NN×N 个可能的图像文本对的匹配对,在batch内有N2−NN^2-NN2N 个负图像-文本对。[I_CLS]标记和[T_CLS]标记的最终输出向量分别用作图像和文本的聚合表示。然后进行线性投影和归一化,最终得到图像向量 {h^iv}i=1N\left\{\hat{h}_i^v\right\}_{i=1}^N{h^iv}i=1N 和文本向量 {h^iw}i=1N\left\{\hat{h}_i^w\right\}_{i=1}^N{h^iw}i=1N,计算图像到文本和文本到图像的相似性:
si,ji2t=h^iv⊤h^jw,si,jt2i=h^iw⊤h^jvpii2t=exp⁡(si,ii2t/σ)∑j=1Nexp⁡(si,ji2t/σ),pit2i=exp⁡(si,it2i/σ)∑j=1Nexp⁡(si,jt2i/σ)\begin{gathered} s_{i, j}^{i 2 t}=\hat{\boldsymbol{h}}_i^{v \top} \hat{\boldsymbol{h}}_j^w, s_{i, j}^{t 2 i}=\hat{\boldsymbol{h}}_i^{w \top} \hat{\boldsymbol{h}}_j^v \\ p_i^{i 2 t}=\frac{\exp \left(s_{i, i}^{i 2 t} / \sigma\right)}{\sum_{j=1}^N \exp \left(s_{i, j}^{i 2 t} / \sigma\right)}, p_i^{t 2 i}=\frac{\exp \left(s_{i, i}^{t 2 i} / \sigma\right)}{\sum_{j=1}^N \exp \left(s_{i, j}^{t 2 i} / \sigma\right)} \end{gathered} si,ji2t=h^ivh^jw,si,jt2i=h^iwh^jvpii2t=j=1Nexp(si,ji2t/σ)exp(si,ii2t/σ),pit2i=j=1Nexp(si,jt2i/σ)exp(si,it2i/σ)
**掩码语言建模:**BERT中的MLM。

图像-文本匹配:使用[T_CLS]标记的最后一个隐藏向量来表示图像-文本对,并将该向量输入具有交叉熵损失的分类器进行二进制分类。还加了难负样本图像-文本对。

Stagewise Pre-Training

  • 首先,只使用图像数据对MOME Transformer的视觉专家和注意力模块进行视觉预训练。作者直接利用BEIT的预训练参数来初始化注意模块和视觉专家。
  • 然后,冻结注意力模块和视觉专家的参数,只使用文本数据对语言专家进行语言预训练。
  • 最后,解开冻结,用整个该模型进行VL预训练。

微调

**视觉语言分类(单塔):**对于视觉问题回答和视觉推理等分类任务,使用VLMo作为融合编码器来建模图像和文本的模态交互。使用标记[T_CLS]的最终编码向量作为图像-文本对的表示,并将其提供给特定于任务的分类器层来预测标签。

**视觉语言检索(双塔):**对于检索任务,VLMo可以作为双编码器分别对图像和文本进行编码。在微调过程中,对图像-文本用对比损失函数优化。在推理过程中,计算所有图像和文本的表示,然后使用点积得到所有可能的图像-文本对的图像到文本和文本到图像的相似性得分。

【多模态】MoE解决多模态单双塔问题 VLMo: Unifified Vision-Language Pre-Training with Mixture-of-Modality-Experts相关推荐

  1. 再次刷新单模型纪录!快手登顶多模态理解权威榜单VCR

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 多模态理解领域的权威排行榜纪录,又被来自国内的技术团队刷新了. 近日, ...

  2. 深度学习多模态融合_多模态深度学习综述.PDF

    多模态深度学习综述.PDF 37 6 Vol. 37 No. 6 第 卷第 期 计算机应用研究 录用定稿 Application Research of Computers Accepted Pape ...

  3. 简单介绍redis分布式锁解决表单重复提交的问题

    在系统中,有些接口如果重复提交,可能会造成脏数据或者其他的严重的问题,所以我们一般会对与数据库有交互的接口进行重复处理.本文就详细的介绍一下redis分布式锁解决表单重复提交,感兴趣的可以了解一下 假 ...

  4. nginx配置解决vue单页面打包文件大,首次加载慢的问题

    nginx配置解决vue单页面打包文件大,首次加载慢的问题 参考文章: (1)nginx配置解决vue单页面打包文件大,首次加载慢的问题 (2)https://www.cnblogs.com/golo ...

  5. form表单嵌套,用标签的form属性来解决表单嵌套的问题

    form表单嵌套,用标签的form属性来解决表单嵌套的问题 参考文章: (1)form表单嵌套,用标签的form属性来解决表单嵌套的问题 (2)https://www.cnblogs.com/jpfs ...

  6. 解决vue单页路由跳转后scrollTop的问题

    作为vue的初级使用者,在开发过程中遇到的坑太多了.在看页面的时候发现了页面滚动的问题,当一个页面滚动了,点击页面上的路由调到下一个页面时,跳转后的页面也是滚动的,滚动条并不是在页面的顶部 在我们写路 ...

  7. 解决表单提交的数据丢失问题

    解决表单提交的数据丢失问题: 一.问题描述: 当我们在给前台页面设置修改功能的时候,因为有些信息是不允许进行修改的,所以在修改表单中没有相应的修改输入框,但是在修改表单的数据提交的时候,那些不允许修改 ...

  8. vue index.html 缓存,解决vue单页面 回退页面 keeplive 缓存问题

    场景:项目中遇到 vue 点击回退 从A页跳到B页,缓存A页,当B页状态修改再次返回A时,A页查询条件缓存不刷新,列表刷新 A页: B页: 解决方法: 利用keep-alive 缓存需要缓存的页面 1 ...

  9. php mysql 重复提交数据_如何真正解决表单重复提交问题php代码

    如何真正解决表单重复提交问题php代码 过去一切时代的精华尽在书中.以下是小编为大家搜索整理的如何真正解决表单重复提交问题php代码,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网! ...

最新文章

  1. 修改ceph crush map,并指定到资源池
  2. 新车模、新舵机、新体验
  3. 搜索专题【2010】四2.过河问题
  4. 关于wifi的HW hdr error:len/check错误解决方法
  5. 限制文本框只能输入数字和小数点
  6. 人本原理内涵_叶澜教育学原理课后答案资料配套题库考研真题精选课后习题章节题库...
  7. 基于3DGIS的智慧“云”综合产业园区建设
  8. LimeSDR实验教程(3) GSM基站
  9. VS2019项目自动包含bin或obj文件夹的问题
  10. 查杀计算机病毒,计算机病毒查杀
  11. linux-网卡名字说明_基本网络配置_修改MTU值
  12. EasyExcel快速上手
  13. 常见的H5C3的面试题
  14. springboot(一):构建最简单的springboot项目
  15. CF1611E1 Escape The Maze (easy version)+ CF1611E2 Escape The Maze (hard version)
  16. [转载] 陈皓——程序员技术练级攻略
  17. python从入门到精通 邮电出版社_《人民邮电出版社Python深度学习入门:基于PYTHON的理论与实现》【价格 目录 书评 正版】_中国图书网...
  18. Lua服务器框架 crossover
  19. matlab 能谱图,基于Matlab平台上γ能谱光滑处理
  20. [规划酱@国土空间] ArcGIS符号系统|新的用地用海分类

热门文章

  1. 使用Idea创建maven项目无法加载pom文件,一直出现Indexing paused during Power Save mode
  2. 简单的加减乘除计算器
  3. android平板有隐藏功能吗,android4.1 平板隐藏System Bar
  4. 【Java全栈学习笔记:第一阶段:JavaSE】:Java入门及环境搭建
  5. 应用程序无法正常启动(0xc000007b)。请单击 确定 关闭应用程序。解决方法
  6. 抖音服装类怎么运营变现;超详细抖音服装玩法大全。丨国仁网络资讯
  7. 2020年智力题详解
  8. 跨部门沟通与协作迟迟进展不下去,如何有效解决问题?
  9. 爬虫获取斗鱼主播人气
  10. ias mysql_MySQL 中 GROUP BY 基本实现原理