IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【自然语言处理】【多模态】UniT:基于统一Transformer的多模态多任务学习 -> 正文阅读

[人工智能]【自然语言处理】【多模态】UniT:基于统一Transformer的多模态多任务学习

UniT:基于统一Transformer的多模态多任务学习
《UniT:Multimodal Multitask Learning with a Unified Transformer》

论文地址:https://arxiv.org/pdf/2102.10772.pdf

相关博客:
【自然语言处理】【多模态】CLIP:从自然语言监督中学习可迁移视觉模型
【自然语言处理】【多模态】ViT-BERT:在非图像文本对数据上预训练统一基础模型
【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练
【自然语言处理】【多模态】FLAVA:一个基础语言和视觉对齐模型
【自然语言处理】【多模态】SIMVLM:基于弱监督的简单视觉语言模型预训练
【自然语言处理】【多模态】UniT:基于统一Transformer的多模态多任务学习

一、简介

? Transformer \text{Transformer} Transformer在各个领域都获得的巨大的成功,包括但不限于自然语言、图像、视频和音频。先前的工作表明,在大规模语料上预训练的 Transformer \text{Transformer} Transformer能够学习到有益于下游广泛语言任务的向量表示。在视觉领域,基于 Transformer \text{Transformer} Transformer的模型也在图像分类、目标检测和全景分割上实现了很好的效果。除了建模单一模态外, Transformer \text{Transformer} Transformer模型也在 VQA \text{VQA} VQA等联合视觉-语言推理任务上实现了很好的表现。

? 然而,尽管 Transformer \text{Transformer} Transformer在特定领域的应用中达成了不错的成就,但是基于 Transformer \text{Transformer} Transformer的跨领域链接不同任务的工作并不多。在目睹了 Transformer \text{Transformer} Transformer的成功后,各种问题自然会出现:用于自然语言推理训练的 Transformer \text{Transformer} Transformer模型是否也能在图像上执行目标检测,或者说基于 Transformer \text{Transformer} Transformer的图像编码器是否能用来进行检测文本蕴含?总的来说,是否能够建立单个模型来同时处理不同领域的各种任务,向通用人工智能前进一步?先前的工作尝试解决这些问题,但是存在一定的限制:

  • 仅应用在单个领域或者特定模态的任务上; ViT \text{ViT} ViT DETR \text{DETR} DETR仅专注在视觉任务上, BERT \text{BERT} BERT以及延伸的工作仅能处理语言任务,而 VisualBERT \text{VisualBERT} VisualBERT VILBERT \text{VILBERT} VILBERT等仅在特定的视觉-语言多模态领域。
  • 对于每个任务涉及任务相关的微调,没有在任务间利用共享参数,通常 N N N个任务具有 N N N倍的参数,例如:必须使用 BERT \text{BERT} BERT分别为每个任务的模型进行微调。
  • 仅在单个领域中的相关或者相似任务上执行多任务,有时会使用硬编码的训练策略;例如, T5 \text{T5} T5仅在语言领域任务上工作,而 VILBERT-MT \text{VILBERT-MT} VILBERT-MT则仅在相关的视觉-语言任务上。

? 在本文中,作者构建了一个称为 UniT \text{UniT} UniT的统一 Transformer \text{Transformer} Transformer模型,其将图像和(或)文本作为输入,然而在视觉感知、自然语言理解和联合视觉-语言推理的各种任务上进行联合训练。 UniT \text{UniT} UniT Transformer \text{Transformer} Transformer编码器构成,其能够将每个输入模态编码为hidden states,在编码后的输入模态上应用一个 Transformer \text{Transformer} Transformer解码器,然后在解码器的输出上应用一个任务相关的输出头来对每个任务进行预测。相较于先前基于 Transformer \text{Transformer} Transformer的多任务学习工作, UniT \text{UniT} UniT在更广阔的任务上实现了与先前工作相当的效果,不仅仅 VQA \text{VQA} VQA这样的视觉语言任务,也有纯视觉和纯语言任务。本文的贡献如下:

  • 提出了 UniT \text{UniT} UniT,一个统一的 Transformer \text{Transformer} Transformer编码器解码器架构,能够使用较少的参数来同时处理多任务和多领域;
  • 学习视觉领域、文本领域和交叉领域的最突出的任务,包括目标检测、 VQA \text{VQA} VQA、视觉蕴含以及 GLUE \text{GLUE} GLUE基准上的自然语言理解任务,包括 QNLI \text{QNLI} QNLI MNLI \text{MNLI} MNLI QQP \text{QQP} QQP SST-2 \text{SST-2} SST-2。证明了这些多样的任务能够同时学习,并且在本文的训练方案下能够适当收敛;
  • 通过对各种任务的分析,展示了像 VQA \text{VQA} VQA和视觉蕴含这样的多模态任务能够从多模态多任务训练上收益。

二、 UniT \text{UniT} UniT:跨领域统一 Transformer \text{Transformer} Transformer

请添加图片描述

? 本工作中,使用统一的单个模型联合学习跨不同模态的多任务。模型 UniT \text{UniT} UniT是建立在基于 Transformer \text{Transformer} Transformer编码器-解码器架构上的,由每个模态一个编码器和统一的解码器组成。上图是整个 UniT \text{UniT} UniT的架构。

? 本文考虑图像和文本两种输入模态。对于图像上的基于 Transformer \text{Transformer} Transformer编码器,首先会应用卷积神经网络来抽取一个视觉 feature?map \text{feature map} feature?map,然后其被 Transformer \text{Transformer} Transformer编码器进一步编码为合并了全局上下文信息的 hidden?state \text{hidden state} hidden?state序列。对于语言输入,这里使用12层的uncased版本的 BERT \text{BERT} BERT,其将输入的单词序列也编码为 hidden?state \text{hidden state} hidden?state序列。在将输入编码为 hidden?state \text{hidden state} hidden?state序列后,将 Transformer \text{Transformer} Transformer解码器应用在单个模态上向量序列上,或者多个模态拼接的向量序列上(这取决于任务是单模态还是多模态)。作者在所有任务上测试了分离解码器和共享解码器。最终,从 Transformer \text{Transformer} Transformer解码器获得的表示被传递至任务相关的头,并输出最终的预测值。由于 UniT \text{UniT} UniT的简单性,其可以轻易扩展到更多模态和输入上。

? 作者实验表明, UniT \text{UniT} UniT可以在8个数据集上联合学习7个任务。

2.1 图像编码器

? 单独的视觉任务和"视觉-语言"任务需要感知和理解图像 I I I UniT \text{UniT} UniT中使用卷积神经网络后跟一个 Transformer \text{Transformer} Transformer编码器来编码图像 I I I,将其转换为视觉编码 hidden?state \text{hidden state} hidden?state列表: h v = { h 1 v , h 2 v , … , h L v } \textbf{h}^v=\{h_1^v,h_2^v,\dots,h_L^v\} hv={h1v?,h2v?,,hLv?}。图像编码的过程是受 DETR \text{DETR} DETR启发。首先,使用将卷积神经网络 B B B应用在输入图像上,抽取出一个尺寸为 H v × W v × d v b H_v\times W_v\times d_v^b Hv?×Wv?×dvb? feature?map \text{feature map} feature?map x v \textbf{x}^v xv
x v = B ( I ) (1) \textbf{x}^v=B(I) \tag{1} xv=B(I)(1)
在实现中,卷积网络使用 ResNet-50 \text{ResNet-50} ResNet-50并在目标检测任务上进行预训练。

? 为了进一步编码出尺寸为 L × d v e L\times d_v^e L×dve?的视觉 hidden?state \text{hidden state} hidden?state h v \textbf{h}^v hv,在 x v \textbf{x}^v xv上应用一个具有 N v N_v Nv?层且 hidden?size \text{hidden size} hidden?size d v e d_v^e dve? Transformer \text{Transformer} Transformer编码器 E v E_v Ev?,其中 L = H v × W v L=H_v\times W_v L=Hv?×Wv?是视觉 hidden?state \text{hidden state} hidden?state的长度。此外,给定不同的任务可能需要抽取不同类型的信息,因此在 Transformer \text{Transformer} Transformer编码器中添加一个任务相关嵌入向量 w v t a s k w_v^{task} wvtask?,这允许抽取任务相关的信息
h v = { h 1 v , h 2 v , … , h L v } = E v ( P b → e ( x v ) , w v t a s k ) (2) \textbf{h}^v=\{h_1^v,h_2^v,\dots,h_L^v\}=E_v(P_{b\rightarrow e}(\textbf{x}^v),w_v^{task}) \tag{2} hv={h1v?,h2v?,,hLv?}=Ev?(Pbe?(xv),wvtask?)(2)
P b → e P_{b\rightarrow e} Pbe?是一个将视觉特征维度 d v b d_v^b dvb?投影至编码器 hidden \text{hidden} hidden维度 d v e d_v^e dve?的线性投影层。视觉 Transformer \text{Transformer} Transformer编码器 E v E_v Ev?的构建遵循 DETR \text{DETR} DETR,其中位置编码会被添加至 feature?map \text{feature map} feature?map。任务相关的token w t a s k w^{task} wtask是一个维度为 d v e d_v^e dve?的可学习参数,其被合并至视觉特征序列 P b → e P_{b\rightarrow e} Pbe?的开始。

2.2 文本编码器

? 像QNLI,MNLI,QQP,SST-2GLUE基准,以及VQAvisual entailment视觉语言推理任务都会提供文本输入。这里使用BERT来编码文本输入。

? 给定输入文本,以与BERT相同的方法将其转换为长度为S的token序列 { w 1 , … , w S } \{w_1,\dots,w_S\} {w1?,,wS?},其中 w 1 = [CLS] w_1=\text{[CLS]} w1?=[CLS]。这个token序列会被输入至预训练BERT中来抽取尺寸为 S × d t e S\times d_t^e S×dte? hidden?state \text{hidden state} hidden?state h t \textbf{h}^t ht,其中 d t e d_t^e dte?BERThidden size。类似于图像编码器,文本编码器也会token序列前添加一个可学习任务嵌入向量 w t t a s k w_t^{task} wttask?
h t = { h 1 t , h 2 t , … , h S t } = BERT ( { w 1 , … , w S } , w t t a s k ) (3) \textbf{h}^t=\{h_1^t,h_2^t,\dots,h_S^t\}=\text{BERT}(\{w_1,\dots,w_S\},w_t^{task}) \tag{3} ht={h1t?,h2t?,,hSt?}=BERT({w1?,,wS?},wttask?)(3)
然而,在实践中发现仅保留 h t \textbf{h}^t ht[CLS]对应的向量来作为解码器的输入就能达到同样的效果。

? 在本文的实现中,使用BERT-base-uncased,其 d t e = 768 d_t^e=768 dte?=768 N t = 12 N_t=12 Nt?=12

2.3 领域不可知 UniT \text{UniT} UniT解码器

? 在将输入模态编码后,应用一个hidden size d t d d_t^d dtd?且具有 N d N_d Nd?层的 Transformer \text{Transformer} Transformer解码器 D D D,该解码器会输出一个hidden state序列 h d e c \textbf{h}^{dec} hdec,然后用于每个任务的预测。不同于文本和图像编码器,每个模态都有一个具体的架构,解码器在所有任务上都使用相同的领域不可知 Transformer \text{Transformer} Transformer解码器。

? 对于纯视觉任务,解码器应用在编码后的图像 h e n c = h v \textbf{h}^{enc}=\textbf{h}^v henc=hv;对于纯语言任务,解码器应用在编码后 的文本 h e n c = h t \textbf{h}^{enc}=\textbf{h}^t henc=ht;对于视觉语言联合任务,将两种模态合并至单个输入 h e n c = concat ( h v , h t ) \textbf{h}^{enc}=\text{concat}(\textbf{h}^v,\textbf{h}^t) henc=concat(hv,ht)

? Transformer \text{Transformer} Transformer解码器 D D D将编码后的输入序列 h e n c \textbf{h}^{enc} henc和一个长度为 q q q的任务相关的query嵌入序列 q t a s k \textbf{q}^{task} qtask Transformer \text{Transformer} Transformer解码器第 l l l层会输出一个解码序列 h d e c , l \textbf{h}^{dec,l} hdec,l,其长度与 q t a s k \textbf{q}^{task} qtask相同为 q q q
{ h d e c , l } = D ( h e n c , q t a s k ) (4) \{\textbf{h}^{dec,l}\}=D(\textbf{h}^{enc},\textbf{q}^{task}) \tag{4} {hdec,l}=D(henc,qtask)(4)
? 解码器的架构同DETR中实现的解码器。在解码器的第 l l l层,自注意力机制被应用在解码的 h d e c , l \textbf{h}^{dec,l} hdec,l,交叉注意力被用于编码输入模态 h e n c \textbf{h}^{enc} henc

? 在实现时,要么对所有任务使用单个共享的解码器 D s h a r e d D^{shared} Dshared,或者为每个具体的任务 t t t使用分离解码器 D t s e p D_t^{sep} Dtsep?

2.4 任务相关的输出头

? 每个任务 t t t的预测头被应用在解码hidden state { h d e c , l } \{\textbf{h}^{dec,l}\} {hdec,l}。对于目标检测任务,使用分类头来产生分类概率输出,以及一个box头来为 { 1 , … , q } \{1,\dots,q\} {1,,q}中的每个位置产生bounding box。分类头和box头的实现如同DETR。对于每个box上具有属性标签的数据集,实现类似BUTD中的属性分类头 。

? 类别头和box头的输出会被后处理为object bounding box。对解码器所有层 l l lhidden state h d e c , l \textbf{h}^{dec,l} hdec,l上都会应用这些头
c l = class_head ( h d e c , l ) b l = box_head ( h d e c , l ) a l = attr_head ( h d e c , l , c l ) \begin{aligned} \textbf{c}^l&=\text{class\_head}(\textbf{h}^{dec,l}) \\ \textbf{b}^l&=\text{box\_head}(\textbf{h}^{dec,l}) \\ \textbf{a}^l&=\text{attr\_head}(\textbf{h}^{dec,l},\textbf{c}^l) \\ \end{aligned} clblal?=class_head(hdec,l)=box_head(hdec,l)=attr_head(hdec,l,cl)?
其中, c l , b l , a l \textbf{c}^l,\textbf{b}^l,\textbf{a}^l cl,bl,al是类别、box和属性的输出序列,所有的长度均为 q q q,与query嵌入 q t a s k \textbf{q}^{task} qtask相同。

? 在测试时,仅使用从解码器顶层得到的预测值 h d e c , N d \textbf{h}^{dec,N_d} hdec,Nd?。因此不同的检测数据集通常有不同数量的类别,每个数据集都有自己的类别头、box头和属性头。在 c l \textbf{c}^l cl b l \textbf{b}^l bl上应用的损失函数同DETR,在 a l \textbf{a}^l al上的属性损失函数同BUTD

? 本文中所有的任务,包括:视觉问答、visual entailment和自然语言理解 (QNLI,QQP,MNLI,SST-2) \text{(QNLI,QQP,MNLI,SST-2)} (QNLI,QQP,MNLI,SST-2)等,都能被转换为任务 t t t上的 c t c_t ct?类别分类任务。在解码器顶层的第1个hidden state h 1 d e c , N d \textbf{h}_1^{dec,N_d} h1dec,Nd??上应用任务相关的分类器,并为任务 t t t输出一个尺寸为 c t c_t ct?的分类预测值 p \textbf{p} p

? 为了预测输出类别,使用具有GeLU激活函数的两层 MLP \text{MLP} MLP,且输出维度等于解码器hidden size。使用预测值 p \textbf{p} p和真实标签 t \textbf{t} t计算交叉熵损失函数来训练模型
p = W 1 ? GeLU ( W 2 ? h 1 d e c , N d + b 2 ) + b 1 loss = CrossEntropyLoss ( p,t ) \begin{aligned} \textbf{p}&=W_1\cdot\text{GeLU}(W_2\cdot\textbf{h}_1^{dec,N_d}+b_2)+b_1 \\ \text{loss}&=\text{CrossEntropyLoss}(\textbf{p,t}) \end{aligned} ploss?=W1??GeLU(W2??h1dec,Nd??+b2?)+b1?=CrossEntropyLoss(p,t)?

2.5 训练

? 在多个任务上联合训练 UniT \text{UniT} UniT。在训练中的每次迭代,随机的选择一个任务和数据集来填充batch。根据数据集的大小和经验来人工指定每个任务的抽样概率。在本文的实现中,模型在64块Nvidia Volta V100-SXM2-32GBGPU上进行训练,batch size为64。使用具有学习率为5e-5的加权Adam优化器。

三、实验

请添加图片描述

四、总结

  • 单纯将两个模态的模型进行联合训练,理论上没有太多可以借鉴的;
  • 实验结果以及训练过程具有借鉴意义。
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-03 23:58:52  更:2022-06-03 23:59:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 1:31:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码