提问:最近在学习Attention和Transformer相关的技术,看到很多资料说Transformer适合做多模态任务,看了模型结构中不知道哪里体现出了这一点?

蜡笔小熊猫(复旦大学 计算机)回答:

这个问题其实应该从两个方面回答:

第一个是任务方面,之前的多模态任务是怎么做的,为什么现在大家会转向Transformer做多模态任务?

在Transformer,特别是Vision Transformer出来打破CV和NLP的模型壁垒之前,CV的主要模型是CNN,NLP的主要模型是RNN,那个时代的多模态任务,主要就是通过CNN拿到图像的特征,RNN拿到文本的特征,然后做各种各样的Attention与concat过分类器,这个大家可以从我文章栏的一篇ACL论文解说《Writing by Memorizing: Hierarchical Retrieval-based Medical Report Generation》略窥一二,使用这种方式构造出来的多模态模型会大量依赖各种模型输出的特征进行多重操作,pipeline巨大并且复杂,很难形成一个end2end的方便好用的模型

ACL21论文《MedWriter》的模型总图

但是Transformer,特别是ViT(Vision Transformer)出来之后,这个模型壁垒就被打破了,人们发现原来对付图像和文本都可以使用同一个模型,那么处理多模态的任务,就直接使用把两种模态输进这个模型,然后接上自己的下游任务,省时省力end2end,还能把精力更多放在任务而不是特征如何concat和attention上


第二个是模型原理层面,为什么Transformer可以做图像也可以做文本,为什么它适合做一个跨模态的任务?

说的直白一点,因为Transformer中的Self-Attetion机制很强大,使得Transformer是一个天然强力的一维长序列特征提取器,而所有模态的信息都可以合在一起变成一维长序列被Transformer处理

当你输入纯句子时,模型能学到这个it主要指animal,那么比如当你输入图片猫+这个句子的时候,模型可能就能学到你前面那张猫指的就是这个animal

attention本身就是很强大的,已经热了很多年了,而self-attention更是使得Transformer的大规模pretrain成为可能的重要原因

self-attention的序列特征提取功能其实是非常强大的,如果你用CNN,那么一次提取的特征只有一个限定大小的矩阵,如果在句子里做TextCNN,那就是提取一小段文字的特征,最后汇聚到一起;如果做RNN,那么会产生长程依赖问题,当句子 太长最后RNN会把前面的东西都忘掉

李沐《动手学深度学习》图片引用

从上图沐神的课件可以看到,面对同样的长序列处理问题,self-attention既消除了RNN的并行度和遗忘问题,也消除了CNN的最长路径问题

然而self-attention的本质就是对每个token,计算这个token相对于这个句子其他所有token的特征再concat到一起,无视长度,输入有多长,特征就提多远

那么如果传入的不是句子,而是普通一维序列(也就是一个数组)呢?那就是对序列的每个点(数组的每个值),计算这个点与序列里其他点的所有特征,这也是Vision Transformer成功的原因,既然是对序列建模,我就把一张图片做成序列不就完了?一整张图片的像素矩阵直接平铺变成序列复杂度太大,那就切大块一点呗(反正CNN也是这种思想,卷积核获得的是局部特征,换个角度来说也是特定patch的特征),ViT就把一张图片做成了16个patch然后加上对应的position embedding(就是割成小方块变成token向量塞进去加上patch对应图片原始位置的标号)

Vision Transformer原文图片

所以如果你用Transformer来当backbone的时候,你需要做的就只是把图片,文本,甚至表格信息等其他的所有模态信息全部flatten再concat或者相加成一维数组送进Transformer,然后期待强大的Self-Attention开始work就可以了,比如图片,你用CNN来提取特征得到了feature map,然后你再flatten成一维,和文本concat到一起就可以了

以下是几个大公司的多模态Transformer的例子:

MSRA的LayoutLMv2,把layout信息的embedding和文本的embedding相加,然后再把image的embedding做concat送入Transformer

阿里达摩院的StructuralLM,将文本和layout的embedding相加送入Transformer

CMU的TABERT,将表格信息的embedding与文本信息的embedding相concate,还做了个Vertical Self-Attetion

多模态的Transfomer模型大抵如此,其实很暴力,你就想办法把特征提出来做成embedding塞进模型,接上下游任务,然后祈祷神奇的self-attention开始运作即可

参考文献:

Writing by Memorizing: Hierarchical Retrieval-based Medical Report Generation

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

LayoutLMv2: Multi-modal Pre-training for Visually-Rich Document Understanding

StructuralLM: Structural Pre-training for Form Understanding

TaBERT: Pretraining for Joint Understanding of Textual and Tabular Data

李沐:自注意力和位置编码 - 动手学深度学习

霍华德回答:

真的吗 ?真的吗?

有些任务transformer不见得是最优解吧!

transformer敢拿出来在youtube8m上和nextvlad比比吗?

终究还是要看任务目标吧!

多模态识别主要是挖掘不同模态之间的互补性,其核心在于怎么做图像和文本的融合。

多模态匹配的重点在于如何将图像和文本这两种模态特征进行对齐。

首先,transformer这个结构最先提出是用在机器翻译上的,它诞生之初就只是单一模态的模型。并且是经典的encoder decoder结构是设计来为sequence to sequence任务服务的。你很难看出他有什么针对多模态的特殊设计。

然后bert火了,成为了最强文本模型。然后多模态火了,为了不失去bert这个最强文本模型,同时把单一模态的bert扩展到多模态比较容易,就诞生了一批基于transformer的多模态模型。

但这些模型设计在我看来并不是最优,文本一侧是bert,图像一侧是resnet提特征,怎么看都比较别扭。最明显一点就是两侧的粒度都没有对齐,文本侧是token字或词,而图像侧是全局特征。比较好的建模方式,应该把图像的局部特征也转化为视觉词,形成一个类似SIFT时代码表的东西,这样文本词就可以和视觉词对齐。这样的模型就非常漂亮了。

显然有不少研究者也发现了这个问题。所以用ViT的方式来表征是视觉,把图片分割成16×16的patch来代表视觉词,此时粒度上就有了对齐的感觉了。但依然还比较粗糙,图片里各种大大小小的物体,不可能用一个固定大小的patch来准确捕捉所有语义。

到此为止,在transformer基础上进行了一系列改进,才使得transformer开始适合多模态任务,但依然有很多需要改进的点。但总体上来说,我对transformer多模态模型依然还是很乐观的。

来源:知乎

文章转载自知乎,著作权归属原作者,侵删

——The  End——

推荐阅读

多模态机器学习综述

多模态学习综述及最新方向

为什么Transformer要用LayerNorm?

视觉Transformer BERT预训练新方式:中科大、MSRA等提出PeCo,优于MAE、BEiT

为什么Transformer适合做多模态任务?相关推荐

  1. 打打字就能指挥算法视频抠图,Transformer掌握跨模态新技能,精度优于现有模型丨CVPR 2022...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 都说Trans ...

  2. EMNLP 2021-多模态Transformer真的多模态了吗?论多模态Transformer对跨模态的影响

    关注公众号,发现CV技术之美 ▊ 写在前面 预训练的视觉语言BERT的目标是学习结合两种模态的表征.在本文中,作者提出了一种基于跨模态输入消融诊断方法(cross-modal input ablati ...

  3. Transformer多模态

    Transformer 其实不是"Transformer适合做多模态任务",而是Transformer中的Attention适合做多模态任务,准确的说,应该是"Trans ...

  4. MICCAI2022 | NestFormer用于脑肿瘤分割的嵌套模态感知的Transformer

    NestedFormer:用于脑肿瘤分割的嵌套模态感知转换器 摘要:多模态磁共振成像通过提供丰富的互补信息,在临床实践中经常被用于诊断和研究脑肿瘤.以前的多模态MRI分割方法通常是在网络的早期/中期通 ...

  5. 【论文模型讲解】ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision

    文章目录 0 前言 1 摘要 2 Introduction 3 背景(小综述) 3.1 Vision-and-Language 模型分类 3.2 模态融合的方式 3.3 Visual Embeddin ...

  6. 2021深度学习的研究方向推荐!Transformer、Self-Supervised、Zero-Shot和多模态

    先写两个最近火热我比较看好的方向Transformer和Self-Supervised,我这里举的例子倾向于计算机视觉方向.最后再补充Zero-Shot和多模态两个方向. 1.Transformer ...

  7. 【综述】基于Transformer的视频语言预训练

    关注公众号,发现CV技术之美 ▊ 1. 论文和代码地址 Survey: Transformer based Video-Language Pre-training 论文地址:https://arxiv ...

  8. 《Modulated Fusion using Transformer for Linguistic-Acoustic EmotionRecognition》论文翻译

    <基于Transformer调制融合的语声情感识别> 论文地址:https://doi.org/10.48550/arXiv.2010.02057​​​​​​ 代码地址:GitHub - ...

  9. 基于Transformer的车辆多模态轨迹预测方法

    1.引言 轨迹预测是自动驾驶领域关注的热点.对周围车辆轨迹的精确预测可以辅助自动驾驶车辆做出合理的决策规划,进而实现车辆在异构高动态复杂多变环境中安全驾驶.在车辆交互场景中,由于驾驶员意图与环境的不确 ...

  10. 跨模态检索最新高质量综述《Image-text Retrieval: A Survey on Recent Research and Development》

    Image-text Retrieval: A Survey on Recent Research and Development 图像文本检索研究进展综述 2022.03 本文已把文献的引用逐个换成 ...

最新文章

  1. 如何利用离散Hopfield神经网络进行高校科研能力评价(2)
  2. 关于HTML Object中三个Style实例的区别
  3. PHP(TP5)获取微信小程序unionId
  4. php画中画,画中画功能 怎么将两个视频叠加播放,制作成画中画效果
  5. BZOJ4974 字符串大师(kmp)
  6. 更改图片位置_如何轻松快速地将图片转换到JPG/JPEG/PNG/BMP/TIFF
  7. .Net Core Nuget还原失败
  8. eclipse中文乱码解决_解决git status显示中文文件名乱码问题
  9. Java EE,Gradle和集成测试
  10. linux下如何搜索某个文件,技术|如何在 Linux 中查找一个文件
  11. 《机器学习训练秘籍》中文版58章节 完整开源 吴恩达
  12. ggspatial | ggplot2的地图制作拓展包(1):如何添加指北针和比例尺
  13. Oracle 项目就是那回事 ----表空间的管理
  14. 关于visio的使用
  15. vc++播放wav声音
  16. 学堂在线android客户端,学堂在线学生登录入口app
  17. 3 A VTT端接 稳压器 NCP51200MNTXG资料
  18. hibernate查询结果映射到实体和map的方法
  19. Android之Manifest文件
  20. 指纹识别综述(5): 分类与检索

热门文章

  1. java钟表动画_JavaFX实现简易时钟效果
  2. html5测试苹果7plus,苹果7 Plus评测:P3广色域屏幕测试
  3. 用计算机查看终身伴侣,爱情是男女之间基于共同的生活理想,在各自内心形成的相互倾慕,并渴望对方成为自己终身伴侣的一种强烈、纯真、专一的感情。...
  4. window.onload和DOMContentLoaded的区别
  5. VMware安装CentOS7以及CentOS官网下载自选镜像
  6. 计算机专业今日份例句
  7. stata图像绘制专题【计量经济系列(二)】
  8. C++核心准则边译边学-F.6 如果函数不会抛出异常,则声明为noexcept
  9. js关于鼠标划过事件
  10. 火狐flash扩展_获得您喜欢的扩展以在Firefox Alpha构建中使用