【论文阅读】Multi-Modal Sarcasm Detection via Cross-Modal Graph Convolutional Network 嘲讽检测,多模态,跨模态,图神经网络

本博客系博主根据个人理解所写,非逐字逐句翻译,预知详情,请参阅论文原文。

发表地点:ACL 2022;

论文下载链接:Multi-Modal Sarcasm Detection via Cross-Modal Graph Convolutional Network - ACL Anthology

代码链接:https://github.com/HITSZ-HLT/CMGCN;

摘要:

随着在线发布包含多模态信息的博客的流行,很多研究同时使用文本和视觉的信息来做多模态嘲讽检测(sarcasm detection)。本文探究了一种新颖的思路,通过为每一个实例(instance)构建跨模态图(corss-modal graph)来提取文本和视觉模态之间的关系。

具体而言,作者首先检测图像(image)的目标(objects),同时获得目标的描述(descriptions),以便学习重要的视觉信息。

然后目标的描述被用作一个桥梁连接文本和图像两个模态,决定objects和文本单词之间关系的重要程度,也就是为每一个实例构建一个跨模态图。

进一步,作者构建了一个跨模态的图卷积网络来学习不同模态之间的不一致关系,用于多模态嘲讽检测。

大量的实验和深入的分析体现了本文模型在多模态嘲讽检测上达到了SOTA性能。

本文动机及现有方法的问题

  • 嘲讽是一种特定的情感,做嘲讽检测有助于提高情感分析的能力以及挖掘特定的观点意见。
  • 现有嘲讽检测方法大多只考虑了图像的整体特征,而如图1(a)所示,图像中关键的object才是检测嘲讽的重点。
  • 嘲讽相关的内容可能分散在图像中,需要结合多个objects才能看出来,如图1(b)所示。

本文主要贡献

  • 本文是第一个在多模态嘲讽检测任务中,基于额外的目标检测任务,探索构建graph来建模关键文本和图像信息之间的不一致语义关系的方法;
  • 本文利用图像objects的属性-目标对(attribute-object pairs)作为桥梁,构建一个跨模态的graph来将不同模态连接起来,并且给graph中的边赋予不同的重要程度;
  • 在一个多模态嘲讽检测的公开数据集上的一系列实验表明,本文的方法达到了SOTA性能。

本文模型及方法

如图2所示,本文模型CMGCN包含四个主要部分:

  1. 文本模态表征(Text-modality representation);
  2. 图像模态表征(Image-modality representation);
  3. 跨模态图(Cross-modal graph);
  4. 多模态融合(Multi-modal fusion);

1. 文本模态表征(Text-modality representation)

针对一个包含n个word的文本s ,本文首先用预训练的BERT-base模型得到每一个word(记为w_i)的768维度的embedding,记为x_i, ..., x_n

 然后本文使用一个双向的LSTM(Bi-LSTM)来学习输入文本的representation:

公式2中 t_j 表示Bi-LSTM的第j个时间步的隐藏状态向量。

2. 图像模态表征(Image-modality representation)

针对图像I,本文首先使用目标检测算法得到图像中若干objects的bounding boxes及其属性值组成的attribute-object pair。

然后对该图像 I 中每一个bounding box所划定的visual region用ViT进行视觉特征提取。首先将每一个visual region的大小resize到224*224。

然后针对每一个visual region I_i,将其reshape成 r = p * p 个patches,然后将这 r 个patches经过一个线性层,得到 r 个 z ,然后一个visual region的表示为:

公式3中每一个 z 代表一个patch的表征,E_{pos} 是position embeddings。

然后把 Z_i 输入ViT模型:

 本文使用ViT模型输出的 [class] token表征作为输入的visual region I_i的表征 h_i。然后一张图像 I 的表征就是它每一个visual region的表征的集合,m是该图像中visual region的个数:

 最后,上述表征经过一个线性层,得到一张图像的最终视觉表征:

3. 跨模态图(Cross-modal graph)

本文使用上述1,2步骤得到的文本和图像表征作为graph中的节点来构建cross-modal graph。接下来的重点就是如何给定graph中节点之间的边及边权重。

针对graph中的n个文本节点和m个视觉节点,该graph的邻接矩阵定义如下:

其中 D_{i,j} 代表文本节点 i 和 j 之间在句子的依赖树(the dependency tree of the sentence)上存在关系。Sim()函数计算文本节点 i 和视觉节点 j 之间的word similarity。计算文本节点 i 和视觉节点 j 之间的情感关系/情感不一致性(sentiment relation/sentiment incongruity)。代表文本单词 w_i 的情感权重(affective weight),是从SenticNet这个数据集中得到的。a_j, o_j 分别代表Bounding box j 的attribute和object。

作者同时将该graph中所有边设置为无向边,并给每一个节点增加一个self-loop。也就是有A_{i,j} = A_{j, i} 并且 A_{i,i}=1

4. 多模态融合(Multi-modal fusion)

本文使用两层的GCN网络学习上述步骤3中构建的cross-modal graph 的node embeddings。graph中node的初始化表征 G_0 是公式2和6中分别学到的文本和视觉tokens的表征向量 R,如下图。

 最后本文使用attention融合graph中拥有cross-modal边的节点 g_i 和 R,得到一个输入实例的最终多模态表征 f。

 最后,f 送入一个全连接的分类层进行嘲讽检测,模型的损失函数是二分类交叉熵。

实验结果及分析

数据集:本文使用的嘲讽数据集来自[1],详细信息如下图;

 对比方法:包括纯图像处理,纯文本处理,以及多模态的嘲讽检测方法,具体方法和嘲讽检测结果见下表2。可以看出,本文方法在各项性能指标上都超过现有方法。

 消融实验:如下表3所示,从上到下的模型分别代表:

  1. CMGCN:本文方法完整模型;
  2. w/o G:去掉了corss-modal graph部分,直接将图像和文本数据输入预训练的ViT和BERT模型,得到他们的[class] 和 [CLS] token的表征向量进行拼接,然后输入分类器进行嘲讽检测;
  3. w/o O:不使用目标检测算法。直接将image整体输入image encoder,然后cross-modal graph中相关边权重都设置为1;
  4. w/o S:不使用额外的knowledge(文中没有具体说这里是哪些额外knowledge,个人感觉是不用SenticNet的信息,也不用依赖树),cross-modal graph中所有边权重都设置为1;
  5. w/o S^w:不使用affective knowledge(这个应该是SenticNet信息);
  6. w/o D:不使用文本模态的syntax-aware information(这个应该是依赖树信息)。

 不同预训练模型的实验:如下图3所示,展示了(a)本文方法基于不同的文本和图像encoder模型的情况下的嘲讽检测性能,以及(b)不同GCN层数的实验。

可视化:如下图4所示,本文展示了一个多模态的嘲讽实例,(a)是使用目标检测算法得到的objects及其attribute值。(b)体现出所构建的corss-modal graph中连接有关系的嘲讽相关的多模态信息的边的权重更高,说明了本文构建graph中边权重的方法的有效性。从(c)中可以看出与检测嘲讽最相关,也就是attention值最高的文本word和图像region是哪些。

总结与展望

作者提出,本文借助了额外的knowledge来辅助模型学习,比如word similarity,依赖树,文本的情感权重,图像的objects及其属性值等,这些东西也可以用于其他有关情感相关的多模态场景下。其次,本文构建cross-modal graph的方法可以用于其他的多模态任务,以及如何设定graph中边的权重是值得研究的方向。

个人理解和问题

1. 本文花了很大的力气构建cross-modal graph,但是最后的多模态表征是基于最开始的文本模态表征和图像模态表征所学的text和image representations,graph相关的学习只是提供了这些文本和图像representations的attention权重。

为什么最后的多模态表征不基于graph所学的node embeddings呢(text和image representations作为node的初始化向量融合进graph的学习中了,graph所学的node embeddings应该是包含更多信息的),比如对node embeddings做graph pooling或者self-attention?

其次,graph提供attention值,感觉没有充分利用graph的信息?比如把graph中node embeddings和text/image representations结合起来一起学最后的多模态表征,做拼接啊之类的。

2. 本文在公式 7 中设定cross-modal graph中边权重,对于otherwise中 i 和 j 都是视觉节点的情况下,边的权重都设置为0了,这是认为一个image中的所有objects(也就是visual regions)之间没有关系吗?这合理吗?

3. 在消融实验中,w/o G是remove cross-modal graph 后的子模型。作者的做法是直接将图像和文本数据输入预训练的ViT和BERT模型,得到他们的[class] 和 [CLS] token的表征向量进行拼接,然后进行分类。

但是,本文CMGCN方法如果只去掉cross-modal graph,文本模态应该用经过Bi-LSTM之后的表征向量,图像模态应该用目标检测之后再经过ViT得到的表征向量。本文的w/o G子模型去掉了很多非cross-modal graph的部分,会不会是这些东西影响了模型性能呢?

参考文献

[1] Yitao Cai, Huiyu Cai, and Xiaojun Wan. 2019. Multimodal sarcasm detection in Twitter with hierarchical fusion model. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, pages 2506–2515, Florence, Italy. Association for Computational Linguistics.

猜你喜欢

转载自blog.csdn.net/me_yundou/article/details/129070410