Paper reading - HongkuanZhang/Technique-Notes GitHub Wiki

Information Extraction

Event Extraction

先回顾一下 Pipeline Models

Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networks (2015)

  • Paper Link
  • Abstract:
    • 传统的事件抽取依赖大量的人工feature和NLP工具(提取feature),本文提出了一个叫做Dynamic Multi-pooling CNN(DMCNN)的方法来提取sentence-level的特征,再结合lexical-level的特征(后述),来共同判断目标单词扮演着事件中的哪种角色。动态多池化CNN比传统CNN好的一点是,传统CNN池化时候是取所有feature中的最大/小值,这样对于一个句子包含多个event的情况时,抽取的句子级别信息会只包含一个事件的信息而造成信息的丢失。结果达到了当时的SOTA。
  • Methodology:
    • 论文中的trigger分类和role分类是pipeline fashion的,由于role的分类比较复杂所以先讲这个。role分类的时候是基于trigger已经被抽取并分类出来的情况(所以才是pipeline)。任务的定义就是对candidate arguments在trigger事件中扮演怎样的角色进行分类。方法是利用了sentence-level和lexical-level的信息来分类一个argument在trigger中的role,其中,前者是先把句子中的每个词变成word embedding,然后定义了两个额外特征PF(argument和trigger的相对距离,这里也变换成了embedding而不是离散值并且能够在训练过程中优化)和Event type特征(即trigger分类的结果,表示event的类型),这两个特征被concat到每个单词的embedding上作为初始特征输入到CNN中,这里CNN的卷积过程和普通的卷积是一样的,但是在池化过程中并不是对于每个feature map抽取的特征只抽取最大值,而是根据candidate argument和trigger的位置,将每个feature map分成三段,每一段抽取最大值,即一个feature map特征对应得到一个三维向量,最后n个feature map特征对应生成一个维度为3n的向量。对于这个向量我们叫他sentence-level特征,他包含着考虑了argument和trigger的句子信息,然后把这个向量输入FFN并分类得到role type。而trigger分类中,其实就是个简化版的DMCNN,即对于每个candidate trigger,它会把句子分成两段,然后按刚才那样对于这两段来动态池化,最后分类得到trigger type。

Exploiting Argument Information to Improve Event Detection via Supervised Attention Mechanisms (2017)

  • Paper Link
  • Abstract & Methodology:
    • 这篇文章主要是利用argument的信息来提升trigger分类的精度,因为之前的trigger分类基本都没有用到argument的信息所以这个是文章的创新点。文章主要是利用了attention机制,在判断(分类)一个trigger的类型时候,模型会使用当前输入单词,以及当前词周围的n个单词,以及这些单词的entity type,然后首先把各个词向量通过一个权重矩阵变成相应的隐层向量,然后各个词的entity type也被embedding成对应向量,然后candidate trigger的word embedding也分别通过两个权重矩阵转换成两个向量a和b,a用来和各个隐层向量计算attention alpha,而b用来和各个entity type向量计算attention beta,然后alpha和beta进行相加(这里我觉得用个参数线性结合比较好)得到最终的attention weight,然后根据这些attention把隐层向量和type向量分别合成一个向量,再把这俩向量和candidate trigger的向量concat得到最终aware了周围单词的trigger向量,然后对齐分类得到event type。这里attention基于的假设是argument的词会得到更高的attention score。

再看下 Joint Models

Joint Event Extraction via Recurrent Neural Networks (2016)

  • Paper Link
  • Abstract & Methodology:
    • 这篇文章算是joint抽取event和argument模型的开山之作,而且很多后续工作都引用了这篇文章。事件抽取以前都是依赖于大量人工定义的数据,前面提到的DMCNN用了神经网络使得模型泛化能力得以加强,但是由于pipeline的结构导致会有误差传播。这篇文章既融合了人工特征,又通过joint抽出减小了误差传播。具体来说是用Bi-RNN学习了句子表示,另一方面使用了trigger memory和argument memory,在分类trigger和argument的类型时考虑之前分类trigger/argument的结果以及两者之间的依赖关系。memory的部分我就不详细说了可以看看论文,因为这里面有一个环节是argument classification和我们的研究相关,这里他会判断对于一个trigger,各个candidate argument扮演什么角色,所以我重点说说这个。在考虑argument和trigger之间的关系时,主要用到的特征是trigger位置Bi-RNN输出的hidden state,argument的head word的hidden state,两者的local context feature(每个词周围d个词的concat向量),其他特征的vector(把binary vector(最短dependency path,trigger type等等)通过一个FFN变成的embedding vector),以及刚刚说的memory向量(把之间分类的结果作为信息来帮助当前词的分类),把这些特征都concat之后对这个向量分类得到argument的role类型。这个文章其实很特别的地方是memory那个部分,他能存储之前预测的trigger和argument类型的信息,进而获得两者之间的dependency,然后在判断当前argument在trigger中的关系时还需要考虑之前预测的结果(具体还是再看一遍论文吧。。)。

Jointly Multiple Events Extraction via Attention-based Graph Information Aggregation (2018)

  • Paper Link
  • Abstract:
    • 这篇文章主要针对的是sentence-level的多事件抽取,也就是说一个句子中会有多个trigger,要抽出多个trigger及其对应的arguments。这篇文章提出了利用token之间的dependency关系构造graph,并且利用GCN对每个node(token)的embedding进行卷积更新。具体来说,模型包括三个模块: 词表示构造,图卷积网络和argument/trigger分类。首先词表示构造那里,对于一个句子的每个token,用四种向量的concat作为词表示,分别为word embedding,entity type,pos tag和position embedding,这里的position为相对位置,由于是相对的,所以根据每一个当前词,都有一套句子长n那么多个词表示。然后把所有词表示输入到Bi-LSTM中得到能够capture local graph information的词表示。然后再把lstm的输出输入到图卷积网络中,图的node为token,edge为从token i到token j之间的有向句法弧(由dependency tree决定),每个edge带有弧类型标签K(i,j)。为了保证信息的逆方向流动,对于两个node,我们还定义反向的句法弧,以及每个node的self-loop弧。举例来说,对于i和j两个节点,他们之间有K(i,j) = x, K(j,i) = x', K(i,i) = K(j,j) = loop这四个弧,对于每个弧类型K(u,v),我们都有一个独立的W和b,每个node的词表示都会根据node与临接词之间的弧类型,乘上相应的W加上b来更新当前词的词表示,全部node更新完则进行了一次图卷积,然后整个过程是k次图卷积stacking在一起的。图卷积中作者还加入了注意力机制(每个K(u,v)对应一对V和d来计算attention score)来控制哪些信息对当前节点更新更重要,并且因为进行了k次图卷积相当于模拟了信息的k个hops,而有时两个trigger之间的shortcut路径长度小于k,因此为了防止信息的over-propagating还加入了highway layers来使得卷积层之间信息的直接传播(类似于残差连接)。最后,对于每个当前词,都通过self-attention把D大小的词向量矩阵变成一个vector,然后用这个vector去做BIO的trigger类型分类。当得到一个trigger的范围后,进行argument分类,具体来说,这个任务中因为所有entity的范围是已知的,因此要判断各个entity在trigger事件下所扮演的角色,这里对于entity所包含的所有token进行average pool得到entity的表示E,trigger所包含的所有token进行average pool得到trigger的表示T,然后两者concat输入FFN和softmax进行角色分类。

Exploring Pre-trained Language Models for Event Extraction and Generation (2019)

  • Paper Link
  • Abstract:
    • 事件抽取问题的一大限制点在于依赖大量且昂贵的人工标注数据,在技术层面上也需要攻克role存在overlapping的问题。
    • 本文贡献有二,一是提出了一个生成数据的方法,即通过修改prototype(指人工标注的数据)和对生成标签数据的质量进行排序而得到标注数据,二是提出了一个模型解决overlapping的问题,方法是根据role来分开预测argument。
    • 模型结果在argument和trigger classification上都取得了很大提升。
  • Introduction:
    • 首先介绍了什么是Overlap问题,即在一个事件中某一个argument可能会扮演多个角色,例如在attack事件中bomber既是attacker又是victim(因为这家伙也被自己炸死了),这种情况就说bomber的role是overlap的,以往处理这个问题时候用了非常simple的方法,即只要预测bomber的角色时结果只要是正确角色中的一个就算全对,这种方法不符合现实世界的需求。
    • 另外一个问题就是数据稀缺,以往也有人用event generation的方法来额外增加event数据,其中distant supervision很常用但质量不高。
    • 相应地,本文提出了一个模型来做时间抽取,模型包含了一个argument抽取部分和一个trigger抽取部分,在数据增强方面,文章根据已标注数据对数据进行argument替换和修饰词重写来得到pseudo数据,并且对生成数据进行质量评价,取高质数据混入标注数据一起训练,最后模型表现有所提升。
  • Extraction Model:
    • 这个模型包含了一个trigger抽取和一个argument抽取。
    • tirgger抽取很简单,就是个token-level的分类任务,对每个token进行事件类型空间大小的多分类。对于argument抽取,是对于每个token都有R*2个二分类器,R是全部的role类型,2是因为每个token都要预测其为某个类型的start或者end的概率,比如说有A,B两个角色类型,那么就有四个分类器为A-start,A-end,B-start,B-end,因此对于每个输入的句子,输出为R*2个长度为句子长L的list,然后因为抽出最后要得到的输出是每个role对应的span,所以对于一个角色的两个list如A-start和A-end,我们要根据start index和end index抽出span,如果遇到连续两个start则取概率值大的为start,这里具体可参考论文中的算法解释。
    • 关于loss方程,自然地我们会想到上述的四个list中每个list都对应着一个正确结果的list,然后两两求cross entropy loss最后相加即为最终loss,但是本文考虑了一点是由于在一类事件中每个role的重要度不同,这里的重要度是指有代表性的role,比如victim这个role比time这个role正能indicate一个死亡的时间,因此每种role的重要度不同,重要度高的role被预测错了应该得到更大的loss,因此本文引入Loss reweighting来对各个role进行加权,利用了类似TF-IDF的方法,定义了两个变量:Role Frequency衡量某一类时间中role r出现的频率(频率越高值越大),用Inverse Event Frequency衡量某一类中role r在全体文章中出现的频率(频率越高值越小),然后两者相乘得到的值为role r代表这类事件的重要度,最后所有重要度softmax归一化。得到这个重要度之后loss方程中计算每种role的start和end的loss时会乘上重要度。
  • Training Data Generation:
    • 这里主要是进行了一个2-step的过程来进行Event Generation:Argument Replacement和Adjunct Token Rewriting。
    • 首先第一步是替换标注数据中的argument,即把目标argument替换为相同role的候选argument,由于role相同所以保持role label不变,在替换的时候应该注意两点:相同role的argument可能在语义上有很大差异,以及一个argument的role很大程度上取决于context,因此替换式应该选择语义上相似并且context合理的同role argument来替换。具体操作是先是把标注数据中所有argument根据他们的role提取出来,然后对于同role的所有候选argument计算argument的ELMO embedding(因为ELMO可以handle OOV词汇,这里把argument中包含的每个token的ELMO embedding相加求平均得到argument embedding),之后目标argument和候选argument的embedding间通过cosine similarity计算两个argument间相似度,最后取top-10的arguments来对目标argument替换得到新数据。这里替换时是0.8概率替换0.2概率不替换,以防止引入噪声。单纯的argument替换可能会增加重复信息导致过拟合,因此这里还要引入其他变换来增加数据多样性。
    • 第二步则为将修饰词进行重写,例如'is going to'替换成'is reported to',这里实际做的是一个生成问题(cloze task),即对一些adjunct tokens随机进行mask,然后用fine-tuned的bert来预测被mask的tokens,这里设置了参数m控制百分之多少的adjunct tokens将会被改写(生成)。
    • 除此之外,文中还引入了评分机制,即对于生成的数据质量进行打分,高分数据才会用于后面的混合训练。评分主要根据两个标准:Perplexity衡量了生成的tokens的rationality,方法是把各个tokens的概率值(各个token位置输出的softmax的最大值)相加求平均,Distance衡量了生成句子和dataset的偏离程度,方法是计算生成句子和dataset中各个句子之间的cosine相似度,然后求和取平均,然后1减去平均值,即越相似则distance值越小,最后这两个指标通过lambda这个平衡参数加在一起求和,用1减去求和值,因此PPL和DIS越小的句子分数越高,质量越高。
  • Experiment
    • 实验部分暂时略

Entity Relation Extraction

Matching the Blanks: Distributional Similarity for Relation Learning

  • Paper Link
  • 这篇文章主要的贡献在于论证了如何使用bert来encode一个句子做实体关系抽取,并且定义了一个新的任务MTB来进行关系抽取的预训练,并且证明了这种预训练能够在小样本数据集上很大程度上提升抽取精度。
  • Abstract
    • 本文主要在于设计一个通用的关系抽取器,即学到一个合适的关系的表达,可以对任意关系建模。之前的工作,如利用Surface Form来表示关系,或者借助知识库中关系的定义,但这两类方案都需要事先定义好关系,泛化能力较弱。本文受到word2vec中的分布式假设(Harris’ distributional hypothesis)的启发,想利用上下文将关系编码成一个固定长度的向量。这就将关系抽取的问题,转变成两个子问题,即如何对包含实体关系的语句进行编码以及如何合理输出一个固定长度的关系输出向量。对于第一个任务,作者借用了Bert对文本关系进行表示,并测试了Bert的不同的输入方式和输出方式对关系抽取结果的影响;对于第二个任务,作者提出了Matching the blanks的方法来预训练任务不可知(task agnostic)的关系抽取模型。本文的MTB模型,不仅在有监督的训练集SemEval 2010 Task8、KBP37、TACRED达到了STOA,而且在小样本的关系抽取数据集FewRel中对STOA有较大幅度的提升。
  • Format of input and output for RE
    • 对于用Bert来编码输入的句子,考虑的核心点是如何在输入中指定两个实体的位置,论文中提出了三种方法,请查看论文原图:
      • STANDARD:标准输入,不指定实体位置
      • POSITIONAL EMB:位置嵌入,作者将Bert输入层中的实体1和实体2所在token的segment type置为1和2
      • ENTITY MARKER:实体标记,在实体1和实体2的两侧用[Eistart]和[Eiend]标记实体位置
    • 不仅如此,作者还设计了如何从Bert中得到输出的三种方法:
      • [CLS]:用 [CLS] token的表示作为关系表示;
      • MENTION POOL:分别对两个实体对应token的表示作max pooling,然后拼接得到关系表示;
      • ENTITY START:两个实体开始位置特殊标记token的表示,拼接起来作为关系表示。
    • 结论:最终结果表示用Entity Marker + Entity Start的输入输出组合得到的向量进行关系抽取可以取得最好的结果
  • Matching The Blanks Task
    • 要学习关系的表达,在Bert的框架下,依然是通过大量无监督的语料来学习。Bert的两个基本任务,MLM是模型对于文本理解的关键,所以本文的模型依然保留这个任务。另一个任务 NSP, 很多论文如RoBERTa已经表示这个任务基本没有什么作用,所以本文的作者也放弃了这个任务。与此同时,本文增加了一个新的任务Matching the blanks。其实基本的想法非常简单,和远程监督非常接近,即如果两个句子中包含相同的实体对,那么它们可能表示相同的关系,反之则为不同的关系,这样我们就能得到很多positive和negative的pairs,然后对两个句子的关系做简单的二分类的训练任务,两个句子间表示相似关系的概率p由关系表示r和r‘之间的相似度来计算(公式见论文),loss部分使用的是两个句子关系相似/不相似的二分类交叉熵。
    • 给模型两个句子,得到关系表示,为了防止模型只需要通过句子中实体信息是否相同就最小化误差,论文按照一定概率(a = 0.7)来把句子中的实体替换为特殊标记 [BLANK],使模型对句子中除实体外的context信息进行建模。
    • 预训练任务的loss为Bert Masked Language Model loss以及关系表示相似度的loss,作者表示Bert Masked Language Model loss对模型的训练还是比较重要的。预训练的数据集从Wikipedia构建。论文模型使用Bert Large的参数进行初始化,在Matching the blanks任务上预训练后,再在具体的关系抽取任务上进行fine-tune。
  • Results
    • 对于不同的有监督关系抽取的数据集,在MTB任务上预训练的Bert模型要优于原来的Bert模型,并且在三个有监督的关系抽取数据集上达到了SOTA的结果。
    • 对于小样本关系抽取数据集,MTB对STOA有较大幅度的提升。 虽然在样本数量较多的情况下Bert_em与Bert_em+MTB表现接近,但Bert_em+MTB只需要很少量的样本便能够达到Bert_em的最好效果。MTB预训练使得模型需要更少的标注样例进行fine-tune,更适用于少样本或少资源的场景。

参考资料

Image/Vedio Caption

Multi-modal Dense Video Captioning

  • Paper Link
  • 这篇论文处理的是dense video caption问题,对于这类问题一般都是两个步骤,event localization和对于每个event进行caption生成。文中对于event定位没有提出新的方法,只是用了先前研究的Bi-SST模型来抽出每个event的起点和终点。对于caption生成部分,文中提出了一个对三种modal(speech,audio,visual)进行fusion的transformer,其实架构非常简单,就是三个模态分别通过三个预训练模型得到各自的特征序列,然后用三个transformer分别encode这些特征,然后三个decoder输出进行concat和一个FCN最后softmax得到当前时间解码的单词。其实个人觉得创新点就是这个融合部分是最后融合的而不是在输入部分进行融合。
  • Code

Multi-modal Fusion

Multimodal Sentiment Analysis with Word-Level Fusion and Reinforcement Learning (2018-2)

  • Paper Link
  • 本论文主要内容是融合了文本,视频和音频三个模态信息来做文本情感分析。在对多模态进行融合时,首先通过一个文本声音对齐工具对两者进行对齐(forced alignment),如单词work对应第0.1-0.8s的音频,把这个时间段所有音频特征向量取平均pooling得到对齐的音频特征,视频是根据音频的时间段用同样的方法得到一个视频特征向量,这样就实现了三种modal在每个时间步的对齐。然后在三种模态融合部分加入了gate(其实就是个神经网络),来输出0/1控制哪些modal需要被融合,这里的控制我感觉不太soft。此外对lstm的输出也进行了attention融合来获得时间步维度上最重要的信息并融合成最终的一个表示。

Conversational Memory Network for Emotion Recognition in Dyadic Dialogue Videos (2018-7 NAACL)

  • Paper Link
  • 本论文是2018的NAACL论文,论文关注的任务是对话视频中utterance-level的情绪分析。具体来说,对话视频中存在文本,视频以及声音三种模态信号,因此作者利用三种模态的来对每一句发话进行情绪分析,如生气或者开心,所以这相当于是对一个对话中的每个发话都进行一个情绪分类。文中的三种模态也都是对齐的,是因为数据集中每个utterance的视频都被分割开来所以每个video对应生成一个文本/视频/声音特征向量,三者concat得到每个utterance的多模态向量。然后为了得到考虑uttrance之间联系的表示,将各个多模态向量输入到GRU中得到uttrance的表示。论文有趣的地方在于对每一个utterance进行情绪分类时,由于需要考虑当前utterance之前的历史utterance(memory)来对其分类,这里对于对话双方的历史utterance和当前utterance分别进行了attention来抽取最重要的历史信息并最后融合成加入了attention的当前utterance表示,然后由于很多memory network都采用了multi-hop的方法来更新memory来得到refined memory表示,因此本文中也进行了multi-hop的memory更新,最重要的是在每个hop中,当前utterance表示也都进行上述的attention信息抽取来更新表示,最后R轮更新完后的表示通过一个affine层来做情感多分类任务。感觉这个论文比较特别的点就是这个conversational memory network。

Integrating Multimodal Information in Large Pretrained Transformers (2020-7 ACL)

  • Paper Link
  • 本论文是2020的ACL论文,文章内容也是通过融合三个模态做文本情感分析(和上文一样的任务),之前的文章在利用预训练模型进行模态融合时候,大多是只用bert来处理文本然后用一个多模态融合模型来把其他模态信息和文本融合到一起。本论文着重点在于如何直接把其他模态信息输入到预训练模型然后和文本特征一起进行微调。对此作者假设了其他模态对于文本向量来说类似于一个偏移向量,然后原本的文本向量加上这个偏移向量后得到了多模态融合后的向量。对此,作者设计了MAG模块使得预训练模型的文本向量输出(中间层输出或者最后一层输出)能够和其他模态信息进行fusion,并且fusion的向量会传递给下一层,从而实现多模态信息的融入并且能够和文本特征一起进行微调。具体的实验中,作者对BERT和XLNet这两个主流的预训练模型加入MAG并且进行了评价,结论是MAG的方式融入多模态的信息后会比模态独立处理后再融合结果要好。此外,作者还讨论了MAG加在哪一层(包括每层都加MAG)以及除了MAG的融合方式其他的如concat和相加融合哪种会取的更好的结果,结论是只在初期的第一层layer用MAG进行融合的效果最好,而且MAG的融合方式比直接相加以及concat都要好,最后还对情感分类的结果进行了可视化。

Visual-Language Models

Supervised Models:

Supervised Multimodal Bitransformers for Classifying Images and Text (2019-9 EMNLP)(模型名MMBT)

  • Paper Link
  • 本论文是2019年的EMNLP论文,文章主要针对如何用预训练的bert融合图像信息来进行结合文本和图像的图像分类,例如根据海报的图像和海报的描述文字对海报主题进行分类的任务。文章比较特别的一点是不像最近很多的采用自监督学习(同时输入文本和对应图像,通过预测mask的token和frame来学习文本和图像的对应关系)来学习互相融合的表示,而是利用了两个模态的经典的预训练模型,即在Imagenet上预训练的resnet和在wiki上预训练的bert,将resnet的输出变成图像特征序列作为"第二个句子",和文本一起输入给预训练的bert,然后通过分类这个监督任务学习对于分类有用的文本-图像表示,最后输出部分用CLS的输出做图像分类。这个的好处就是不需要自己预训练模型,直接用两个预训练的模型输出通过transformer进行融合。而且为了说明模型确实同时学习到了两个模态的信息,论文还对比了text-only和image-only两个分类器(单独的Bert和单独的resnet分别进行分类)的分类结果,并且制作了一个hard数据集来对结果进行评估。hard的制作主要依照两个标准,一个是text-only或image-only两个分类器的分类结果中与ground truth差距很大的例子(例如与正确结果相反且反向自信度很高)被认定为hard例子,另外一个是text-only和image-only两个分类器(Bert和resnet)的分类结果中差异很大的例子被认定为hard,hard的目的是找出那些单凭一种modal很难进行分类的例子,如果模型在上面表现的好说明兼顾到了两种模态的信息。结果也确实证明在hard上他的表现要更好,不过其实也只是在f1或者accuracy上高了2个百分点左右,有的数据集的hard数据集上才零点几百分点。结尾作者也说自监督的可能会更好,这里这个模型的意义是提供了一个监督方法的baseline,而且这个模型可以对1-多个模态的输入进行处理,方法就是segment的部分把image和text的segment embedding进行平均来作为其他模态的segment embedding。总的来说论文的方法还挺简单粗暴的,就直接在text后面怼上了image然后做分类的训练。
  • Code

Self-supervised Models:

VideoBERT: A Joint Model for Video and Language Representation Learning (2019-04 ICCV)

  • Paper Link
  • 本论文是video-language这个领域比较出名的一篇文章。它可以看成是video版本的bert,也是在预训练过程中输入文本和对应视频图像,然后预测mask的token和mask的frame,这里的frame因为是一个离散的值不适合用单词那样的分类,作者用了clustering的方法把图像分成了几万个clusters,然后用cluster的中心图片代表cluster的类,这样预测mask的frame时,就把mask的输出给一个linear层,然后做一个几万个类别空间的分类任务(这个方法遭到很多后面的论文的批判,认为这种近似的方法并不严谨)。然后预训练的模型可以用于video captioning, 具体做法是模型还是transformer的encoder-decoder,然后encoder部分的输入来自于videobert,videobert的输入是video以及一个定义好带有mask的模板,然后对videobert的video frame位置对应的输出和text中mask位置对应的输出分别进行pooling并且concat,这个向量作为最终的video表示输入给encoder,然后decoder部分解码出caption。这个论文思路上还是合理的,但是迟迟不公开代码非常奇怪,目前保持观望状态。

ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks (2019-08)

  • Paper Link
  • 本论文也是一个很出名的文章。文章的目的是学习task-agnostic的文本-图像表示,但是和videobert不同的是他采用了一个双流融合的模型,它在这两个流中分别预处理视觉和文本输入,并在联合注意力 transformer 层中进行交互。具体来说图像方面先用Fast RCNN得到图像中各个region的特征序列,文本方面用几层transformer得到文本的embedding序列,之后通过一个co-attention-transformer(co-TRM)层对文本和图像的特征序列进行信息融合,co-TRM其实就是个transformer层,两个流中都存在并且接收图像和文本的特征序列,图像方面的co-TRM的Q不变,K和V是来自文本侧的,而文本方面的co-TRM也是这样来获取图像方面的信息,这样就做到了两个信息的相互融合,融合之后的结果各自输入各自后面的transformer层,这样模型能分别输出一个融合图像信息的文本序列和一个融合文本信息的图像序列。作者们先在大规模自动采集数据集Conceptual Captions上通过两个代理任务预训练模型,然后把它迁移到多个现有的视觉-语言任务上,包括视觉问答、视觉常识推理、代指词、基于说明的图像检索,过程中也只对基础架构做很小的调整。相比于目前的任务专用模型,作者们的做法带来了巨大的表现提升,在所有4个任务上都得到了最好的成绩。作者们的成果也代表了学习视觉和语言之间联系的一种新思路,不再局限于某个具体任务训练过程中的学习,而是把视觉-语言联系作为一个可预训练、可转移的模型能力。

A Better Use of Audio-Visual Cues: Dense Video Captioning with Bi-modal Transformer (2020-08)

  • Paper Link
  • 这篇论文和上面的ViLBERT的思想非常相似所以放在这里,文章主要是通过transformer来融合audio和visual信息来做dense video caption,两种模态信息在encoder部分也是先分别self-attention,然后用bi-modal attetion模块来融合两个模态的self-attention的输出,因此encoder输出也会得到两个模态的特征序列,这两个特征序列都会被给到decoder再进行模态融合然后自递归解码caption,具体内容还是再看看论文~
  • 关于这个论文的一个tutorial和github链接