KAT:A Knowledge Augmented Transformer for Vision-and-Language

KAT:A Knowledge Augmented Transformer for Vision-and-Language

KAT

Introduction
  • 目前的大型Transformer研究工作的重点是优化模型参数中的信息量
  • 文章提出一个补充性问题:多模态Transformer在推理过程中能否运用显式知识
  • 目前的方法主要是单模态,在知识检索和答案预测的范式下探索方法,但在检索到的知识的质量和相关性,以及如何整合显性知识(wiki)和隐性知识(常识等)的推理过程等方面存在问题

如下图所示,为了回答左侧示例中的问题,系统需要通过显性知识将生物体与鸟类联系起来,然后应用从爬行动物进化而来的隐性知识来回答问题;同样,对于右边示例中的问题,系统需要识别船只和港口,并需要使用隐式知识判断需要利用锚来阻止船只移动:

在这里插入图片描述

Contribution and idea
  • 本文提出了Knowledge AugmentedTransformer (KAT),在推理过程中有效地整合显性知识和隐性知识,在 OK-VQA 上取得了 SOTA 效果(+6%)
  • 设计了两种新的知识提取方法,1)对于显性知识,用CLIP模型设计了一个基于对比学习的显式知识检索器,其中检索的知识都以是视觉对齐的实体为中心。2)对于隐性知识,设计新的Prompt,并从一个冻结的GPT-3模型中提取试探性答案和支持证据(support evidence)
  • 在KAT中设计了一个新的知识推理模块,在答案生成过程中对显性知识和隐性知识进行联合推理,通过使用端到端的encoder-decoder架构进行训练
Problem Formulation

将训练数据集定义为:
D = ( V i , q i , a i ) i = 1 s D = {(V_i,q_i,a_i)}^s_{i=1} D=(Vi,qi,ai)i=1s
其中vi是第 i 张训练图片;s是所有的训练图片数目;qi和ai分别是第 i 个问题和对应的答案

同时,文章使用由编码器和解码器组成的suquence-sequence模型。与之前的工作将此任务视为分类问题不同,此模型将vi和qi作为输入,并以自回归的方式生成答案,值得注意的是,KAT所生成的答案可能包括词汇表中任意数量的单词

Expilicit Knowledge Retrieval

构建一个显式知识库K,涵盖了wikidata中8类图像,知识库中的每个entry包含实体和对应描述

检索流程:

  • 对于所有的entry都使用密集编码器Eent()提取为d维密集表示
  • 对于输入图片,使用滑动窗口生成N个子区域图片,对每个patch都使用图像编码器提取d维特征
  • 基于上述特征计算相似度,每个 image patch都检索前k个最相关的知识库特征,根据相似度挑选出top-m个entry作为显性知识来源xexp
  • 图像和知识的输入编码器使用CLIP模型,并将【CLS】作为表示,使用FAISS对知识条目entry进行索引
Impliciti Knowledge Retrieval

设计一个隐性知识索引器,利用GPT-3作为隐式语言知识库,将VQA任务看作为一个开放式文本生成任务

检索流程:

  • 对于每个Image-question pair,首先通过SOTA的Image caption模型将图像转换为文本描述C,然后构造一个textual prompt ,该prompt由一个通用指令文本、文本描述C、问题和一组从训练数据上提取的Context-question-answer 三元组所组成
  • 将上述数据输入到Frozen GPT-3中,并将得到的output作为一个tentative answer candidate
  • 为了从GPT-3的隐含知识和原理中获取更深层次的理解,设计了另一个Prompt来查询GPT-3,以获取其生成候选答案背后的支持证据
  • 对于每个Image-question和一个tentative answer a,构建一个如下形式的Prompt:(question qi?) (answer a) (This is because?),以此查询到背后的support evidence,并将候选答案和支持证据作为隐性知识来源ximp

示例如下:

在这里插入图片描述

KAT Model

模型架构:

在这里插入图片描述

对于检索到的显性知识来说,它有可能包含噪声和一些无关内容,对于隐性知识来说,GPT-3所生成的支持证据有可能是通用的或与图像内容不相关的,同时不同知识的简单concat可能会在模型训练期间引入噪声。因此作者设计了一个知识推理模块对每个question-knowledge 对编码,并在生成答案时对显性知识和隐性知识联合起来进行推理

Encoder:

  • 将问题和知识连接为一个 question-knowledge对
  • 在问题、检索实体以及其描述之前添加标记词:question:,entity:,description:
  • 同样,在问题、试探性答案、支持证据前添加标记词:question:,candidate:,evidence:
  • 使用嵌入层和一系列编码器对问题-知识对进行编码,并对最后一层的问题-知识token进行平均,得到显性知识Xexp和隐性知识Ximp的嵌入矩阵

Reasoning Module:

为了将显性知识和隐性知识进行联合推理,作者将两者的嵌入表示连接形成一个全局表示X并将其输入到Cross-attention module中 ,设H是解码器前一个self-attention层的输出,则scaled dot-product attention能被表示为:
Q v = s o f t m a x ( Q K T d ) Q_v=softmax(\frac{QK^T}{\sqrt{d}}) Qv=softmax(d QKT)
Q = WQH, K = WKX, V = WV X.

Decoder:

将显式知识和隐式知识的嵌入表示输入解码器中,以生成答案,用交叉熵损失函数进行训练:

在这里插入图片描述

Implementation Details

knowledge reasoning 使用预训练的 T5 模型:base (220M) 和 large (770M)
在 OK-VQA 上 finetune
考虑到计算资源限制,检索实体数目设置为 40
16 张 V100 训练,batch size 32
评测:
用规范化后的 gt 来评估模型,规范化步骤包括小写和删除文章、标点符号和重复空格
用3种不同的随机种子训练模型,并使用平均结果提交排行榜

Result

与SOTA结果对比:

在这里插入图片描述

消融实验:

知识检索方法:large 和 base 差距 4 个点左右;显式知识或者隐式知识单独引入都涨点明显

在这里插入图片描述

Knowledge Reasoning 模块设计:看起来模型结构设计的影响和知识库引入相比并不大

在这里插入图片描述

显式知识利用的检索数目影响,可以看到在 40 时精度最高

在这里插入图片描述

Thoughts
  • 显式和隐式知识结合 ppl 看起来挺简洁的,知识检索模块利用更新的技术应该还有提升空间
  • Image caption 模型的选择是否有改进空间
  • 如何更好的对齐图像区域与有意义的外部语义
  • 如何更有效率、更准确地整合多个数据库

本文仅做个人笔记使用,文章内容同样参考了其他博客,如有侵权,请联系删除。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值