【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态
OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态 《Unifying Architectures, Task, and Modalities through A Simple Sequence-to-Sequence Learning Framework》
论文地址:https://arxiv.org/pdf/2202.03052.pdf
相关博客:
【自然语言处理】【多模态】多模态综述:视觉语言预训练模型
【自然语言处理】【多模态】CLIP:从自然语言监督中学习可迁移视觉模型
【自然语言处理】【多模态】ViT-BERT:在非图像文本对数据上预训练统一基础模型
【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练
【自然语言处理】【多模态】FLAVA:一个基础语言和视觉对齐模型
【自然语言处理】【多模态】SIMVLM:基于弱监督的简单视觉语言模型预训练
【自然语言处理】【多模态】UniT:基于统一Transformer的多模态多任务学习
【自然语言处理】【多模态】Product1M:基于跨模态预训练的弱监督实例级产品检索
【自然语言处理】【多模态】ALBEF:基于动量蒸馏的视觉语言表示学习
【自然语言处理】【多模态】VinVL:回顾视觉语言模型中的视觉表示
【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态
【自然语言处理】【多模态】Zero&R2D2:大规模中文跨模态基准和视觉语言框架
一、简介
在人工智能领域,建立一个能像人类处理多任务和多模态的全能模型是一个有吸引力的目标。这个目标的核心问题是在单一模型中表达大量不同模态、任务和训练机制。
Transformer\text{Transformer}Transformer架构近期的发展已经展示出其成为通用计算引擎的潜力。在监督学习的设置中,预训练-微调范式在许多领域实现了巨大的成功,并且few-/zero-shot
学习的机制中,具有prompt/instruction tuning
的语言模型被证明是强力的few-/zero-shot
学习器。这些进步为全能模型的出现提供了更重要的机会。
为了在保持多任务性能和易用性的同时,更好的支持开放域问题的泛化能力,作者主张全能模型应用具有下面的三个性质:(1) 任务无关(TA\text{TA}TA):统一任务的表示来支持不同类型的任务,包括分类、生成、自监督任务等,并且对于预训练或者微调是不可知的;(2) 模态无关(MA\text{MA}MA):在所有的任务中,对于处理不同的模态统一输入和输出表示;(3) 任务全面(TC\text{TC}TC):足够多样的任务来增加泛化能力的积累。
然而,要在实现优越性能的同时满足上面的三个性质是具有挑战性的。由于下面的设计选择,当前的语言和多模态预训练模型很容易在某些性质上不满足。(1) 用于微调的额外可学习组件,例如:任务相关的头、adapters
和soft propmts
。这使得模型具有任务相关性,从而违反了TA\text{TA}TA。此外,寻找最优组件也十分困难,并且这样的设计对于未见过任务的zero-shot
并不友好。(2) 任务相关的形式。对于大多数当前的方法,预训练、微调和zero-shot
通常在任务形式和训练目标是不同。这违反了TA\text{TA}TA,并且通过增加任务数量来实现TC\text{TC}TC是一种负担。(3) 针对各种I/O
的模态相关设计。VL\text{VL}VL预训练模型的通常做法是将检测到的目标作为输入特征来改善下游任务的表现。然而,这种模态相关的设计使得图像和目标的概念纠缠在一起。这使得在任务无关模型中很难将模型与图像生成、或者目标检测一起训练。
因此,作者探索了用于多模态预训练的全面模型,并提出了模型OFA,One For All\text{OFA,One For All}OFA,One For All,其实现了统一架构、模态和任务的目标,并支持上面的三个属性。具体来说,将预训练和微调任务形式化为统一的sequence-to-sequence
,并通过手工的instructions
来实现任务任务无关。Transformer\text{Transformer}Transformer作为模态无关的计算引擎,其具有一个约束,不可学习的任务相关或者模态相关组件将会被添加至下游任务。其可以表示不同模型的信息,通过一个跨所有任务的全局共享多模态词表。
总的来说:
作者提出了OFA\text{OFA}OFA,一个支持全面任务的任务不可知且模态不可知框架。其通过具有
instruction
简单的seq-to-seq
学习框架统一了任务,包括理解和生成,例如:image generation
、visual grounding
、visual question answering
、image captioning
、image classification
、language modeling
。实验结果显示OFA\text{OFA}OFA在多模态基准上实现了新的SOTA\text{SOTA}SOTA,包括:
image captioning
、text-to-image generation
、VQA
、SNLI-VE
等;作者证明了OFA\text{OFA}OFA在
zero-shot
学习中实现了有竞争力的表现。此外,其能够通过新的任务instruction
迁移至未见过的任务,并且不适应微调的情况下适应领域外信息。
二、OFA
OFA\text{OFA}OFA整体架构如上图所属。
1. I/O&架构
- I/O
多模态预训练需要在大规模image-text
语料上预训练Transformer\text{Transformer}Transformer模型。为了能够进行多模态预训练,需要对数据进行预处理使得视觉和语言信息能够被Transformer\text{Transformer}Transformer联合处理。相比于复杂且耗时、耗资源的目标特征抽,本文简化这个过程,直接将一个图像xv∈RH×W×C\textbf{x}_{v}\in\mathbb{R}^{H\times W\times C}xv∈RH×W×C划分为PPP个patches
,并且将patches
投影至hidden size
为HHH的特征。在处理语言信息时,遵循GPT\text{GPT}GPT和BART\text{BART}BART实践,应用byte-pair encoding(BPE)
来将给定的文本序列转换为子词序列,然后将其嵌入成特征。
为了以任务不相关的输出模式来处理不同的模态,在统一的空间中表示各种模态的数据是有必要的。一种可能的解决方案是离散化文本、图像和目标至一个统一的输出词表。近期在图像量化上的进展已经证明了text-to-image
合成的有效性,因此本文在目标端的图像表示上利用这个策略。稀疏编码在缩减图像表示的序列长度时是有效的。例如,一个分辨率为256×256256\times 256256×256的图像被表示为长度为16×1616\times 1616×16的code
序列。每个离散的编码都与对于的patch
强相关。
除了表示图像以外,表示图像中的目标是有必要的,因为有一系列区域相关的任务。遵循先前的工作,将目标表示为离散tokens
的序列。具体来说,对于每个目标,抽取它的标签和它的bounding box
。bounding box
的连续角坐标被统一离散化为整数来作为位置tokens
⟨x1,y1,x2,y2⟩\langle x_1,y_1,x_2,y_2 \rangle⟨x1,y1,x2,y2⟩。为了更加的简单,为所有的语言和视觉tokens
使用统一的词表,包括:字词、image codes
和location tokens
。
- 架构
遵循先前多模态预训练成功的实践,选择Transformer\text{Transformer}Transformer作为backbone
架构,并且采用encoder-decoder
网络作为所有预训练、微调以及zero-shot
任务的架构。具体来说,encoder
和decoder
都是堆叠的Transformer\text{Transformer}Transformer层。一个Transformer\text{Transformer}Transformer编码层由自注意力和FFN\text{FFN}FFN组成,而Transformer\text{Transformer}Transformer解码器则是由自注意力机制、FFN\text{FFN}FFN和连接解码器和编码器输出表示的交叉注意力组成。为了稳定训练并且加速收敛,添加了自注意力的head scaling
、一个后注意力的layer normalization
,以及在第一层FFN\text{FFN}FFN后的LN\text{LN}LN层。
2. 任务&模态
一个统一的框架被设计来提供跨不同模态和下游任务的架构能力,从而在同一模型中泛化至未见过的任务。该模型需要在统一的范式中呈现不同模型下尽可能的下游任务。因此,预训练任务的设计需要考虑多任务和多模态。
为了统一任务和模态,作者设计了sequence-to-sequence
学习范式来预训练、微调和推理所有的任务。这些任务包括:预训练任务、下游的跨模态和单模态任务、以及所有Seq2Seq
形式的生成任务。在多模态和单模态上执行多任务预训练能够使模型具有综合能力。具体来说,在所有任务上共享统一的schema
,同时为区分不同的任务提供手工的instructions
。
对于跨模态表示学习,设计了5个任务,包含visual grounding(VG)
、grounded captioning(GC)
、image-text matching(ITM)
、image captioning(IC)
以及visual question answering(VQA)
。对于VG\text{VG}VG,模型会基于图像xix_ixi和instruction
Which region dose the text xtdescribe?\text{Which region dose the text }x_t\text{ describe?}Which region dose the text xt describe?来生成具体位置⟨x1,y1,x2,y2⟩\langle x_1,y_1,x_2,y_2 \rangle⟨x1,y1,x2,y2⟩的location tokens
,其中xtx_txt是区域caption
。GC\text{GC}GC是VG\text{VG}VG的逆任务。模型会基于输入图像xix_ixi和instruction
What does the region describe?region:⟨x1,y1,x2,y2⟩\text{What does the region describe?region:}\langle x_1,y_1,x_2,y_2 \rangleWhat does the region describe?region:⟨x1,y1,x2,y2⟩来生成描述。对于ITM\text{ITM}ITM,使用原始的image-text
对作为正样本,然后通过图像与caption
的随机配对来构造负样本。模型学习判断给定的图像和文本是否配对来学习生成Yes
或者No
,基于图像xi\text{x}_ixi和instruction
Does the image describe xt?\text{Does the image describe }x_t?Does the image describe xt?。对于image captioning
,这个任务能够天然的采用sequence-to-sequence
形式。模型会基于给定的图像和instruction
What does the image describe?\text{What does the image describe?}What does the image describe?来学习生成caption
。对于VQA\text{VQA}VQA,将图像和问题作为输入,并需要模型学习生成正确的答案。
对于单模态表示学习,为视觉设计了2个任务,语言设计了1个任务。模型通过图像infilliing
和目标检测来预训练学习视觉表示。在计算机视觉的生成自监督学习中的近期进展显示masked image modeling
是一个有效的预训练任务。实践中,将遮蔽了中间部分的图像作为输入。模型从基于被破坏输入的图像和instruction
What is the image in the middle part?\text{What is the image in the middle part?}What is the image in the middle part?来生成图像中心部分的稀疏编码。此外,在预训练中额外添加了目标检测任务。模型基于图像输入和文本What are the objects in the image?\text{What are the objects in the image?}What are the objects in the image?来学习生成人工标注的目标表示,即目标位置和标签的序列。对于语言表示学习,则通过在文本数据上进行文本填充来预训练。
通过这种方式,将多种模态和多种任务统一至单个模型和预训练范式中。OFA\text{OFA}OFA是联合这些任务和数据预训练的。因此,它可以针对不同的模态和复杂的跨模态场景执行不同的任务,并具有生成答案的能力。
3. 预训练数据集
通过合并视觉语言数据、视觉数据和语言数据来构建预训练数据集。为了可复现,仅使用公开数据集。作者通过仔细的过滤预训练数据来排除下游任务中的验证和测试集图像,以避免数据泄露。
4. 训练&推断
使用交叉熵损失函数来优化模型。给定一个输入xxx,一个instruction
sss和一个输出yyy,通过最小化损失函数L=−∑i=1∣y∣logPθ(yi∣y<i,x,s)\mathcal{L}=-\sum_{i=1}^{|y|}\text{log} P_\theta(y_i|y_{<i},x,s)L=−∑i=1∣y∣logPθ(yi∣y<i,x,s)来训练OFA\text{OFA}OFA,其中θ\thetaθ是模型参数。对于推断,则应用解码策略,例如beam search
,来增强生成的质量。然而,这种范式在分类任务中有几个问题:(1) 优化整个词表是不必要且效率低下;2. 在推断过程中,模型可能会生成超过封闭标签集的无效标签。为了克服这些问题,作者在训练时和推断时引入了基于前缀树的搜索策略。实验结果显示基于前缀树搜索的策略能够增强OFA\text{OFA}OFA在分类任务上的效果。
三、实验
- OFA\text{OFA}OFA在跨模型的下游任务中实现了SOTA\text{SOTA}SOTA
text-to-image
生成任务的结果,OFA\text{OFA}OFA超越了baseline。
- BERT\text{BERT}BERT和多模态预训练模型在GLUE\text{GLUE}GLUE上的结果,OFA\text{OFA}OFA优于所有的多模态预训练baseline。
Gigaword
生成式摘要的结果。OFA\text{OFA}OFA好于大多数的baseline。
- 在ImageNet-1K\text{ImageNet-1K}ImageNet-1K上微调的结果。
- 在6个GLUE\text{GLUE}GLUE子任务和SNLI-VE\text{SNLI-VE}SNLI-VE上的
zero-shot
效果
【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态相关推荐
- 【自然语言处理】【文本生成】CRINEG Loss:学习什么语言不建模
CRINEG Loss:学习什么语言不建模 <The CRINGE Loss:Learning what language not to model> 论文地址:https://arxiv ...
- AI公开课:19.03.06何晓冬博士《自然语言与多模态交互前沿技术》课堂笔记以及个人感悟
AI公开课:19.03.06何晓冬博士<自然语言与多模态交互前沿技术>课堂笔记以及个人感悟 导读:AI与产业界结合,算法还是很重要的. 计算机能不能思考?会不会思考?把哲学问题转为科学问题 ...
- 简单英文题 25 Sequence Search(python)
http://noi.openjudge.cn/english/25/ """ 简单英文题 25 Sequence Search http://noi.openjudge ...
- 【商汤科技】招聘自然语言处理/多模态算法研究实习生
关注公众号,获取更多AI领域发展机会 [商汤科技]招聘自然语言处理/多模态算法研究实习生 工作职责 与研究员合作实现和迭代自然语言处理/多模态相关的算法以支撑企业数字化相关业务上自然语言/图像分析和处 ...
- Towards Two-Dimensional Sequence to Sequence Model和Two-Way Neural Machine Translation两篇论文简单分析
第一篇是:发布于2018年Towards Two-Dimensional Sequence to Sequence Model in NeuralMachine Translation 第二篇是:与第 ...
- 简单易用高性能!一文了解开源迁移学习框架EasyTransfer
简介:近日,阿里云正式开源了深度迁移学习框架EasyTransfer,这是业界首个面向NLP场景的深度迁移学习框架.该框架由阿里云机器学习PAI团队研发,让自然语言处理场景的模型预训练和迁移学习开发与 ...
- 多模态深度学习综述:网络结构设计和模态融合方法汇总
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨小奚每天都要学习@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p ...
- Uber发布史上最简单的深度学习框架Ludwig!
昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习框架! Ludwig是一个建立在TensorFl ...
- Attentive Sequence to Sequence Networks
转载自 Attentive Sequence to Sequence Networks Attentive Sequence to Sequence Networks 1.Encoder-Decod ...
最新文章
- Web 设计中的 5 个最具争议性的话题
- 本次奔驰漏油事件,要花多少钱打广告才能弥补损失?
- 使用iometer测试
- 2017年闰秒linux_2017年Linux专业人员的4个热门技能
- 【LeetCode】剑指 Offer 58 - I. 翻转单词顺序
- 面试官问你final、finally、finalize的区别
- 图片居中裁剪_魔镜,魔镜,谁最美丽!利用PS图层混合模式打造图片幻觉效果
- java里equals_Java中equals和==的区别
- js拼接json对象_JS实现合并json对象的方法
- wsdl2java validate_使用cxf wsdl2java进行客户端证书身份验证
- android程序劫持持程序,大谈android安全2——Activity劫持的防范程序
- Cas单点登录常见问题总结
- 怎么SSH远程连接云服务器
- java 网页录音并上传_Java+FlashWavRecorder实现网页录音并上传
- mysql fatch array_辩别WEB服务程序,,了解常见的几种脚本和数据库之间的搭配组合及特点...
- Linux的memory日志,Linux:日志,cpu,memory,mount,load等系统信息查看
- Bmob后台云数据库
- kettle源码分析之3 carte与rest api
- css筋斗云,JavaScript实现精美个性导航栏筋斗云效果
- 三、入门Python第三课
热门文章
- linux系统start x,linux的startx问题
- ESP32 开发笔记(四)LVGL控件学习 ColorPicker 颜色选择器控件
- 前端裁图-如何使用ps软件将矩形图片裁剪成圆角矩形
- 计算机调剂到mba,这8种考生不能调剂!MBA/MPAcc等考研生注意
- ButterKnife系列之手写实现
- 用计算机弹音乐忘川彼岸,原神忘川彼岸琴谱 原神琴谱忘川彼岸怎么弹
- 6天面试、斩获6家硅谷巨头Offer,我是如何做到的?
- 深入浅出 RPC - 浅出篇
- matlab产生一个稀疏向量,Matlab中的稀疏矩阵向量乘法比Python快吗?
- 台式电脑属于小型电子计算机,个人计算机属于小型计算机。