视觉理解论文系列(二)Heterogeneous Graph Learning for Visual Commonsense Reasoning

本文提出了HGL框架,通过视觉到答案和问题到答案的异构图学习,结合上下文投票机制,解决视觉语言任务中视觉域与语言域的高度对齐问题,尤其适用于视觉常识推理。实验表明,这种方法能有效捕捉特定语义信息,提升模型表现。

背景

本篇的工作来自中山大学梁晓丹组,论文被NeurIPS 2019接收。论文介绍到,视觉语言任务(visual-language task)的解决方案粗略地分成两大类型,一种是强大的端到端结构(end-to-end),如Bert,bottom-up and top-down模型,用于学习更加具有鉴别性的特征表示;另一种是发掘视觉对象(visual objects)的内部联系(intra-relationship),即构建同构图(homogeneous graph)的方式,对视觉对象之间的关系进行建模。
目前存在的方法的不足之处:难以满足VCR任务中需要视觉域与语言域的高度对齐这一需求。本文提出利用异构图学习,通过图内和图间的推理将视觉域-语言域桥接起来。

贡献

提出HGL框架,包含两个异构图模块VAHG(visual-to-answer heterogeneous graph和QAHG(question-to-answer heterogeneous graph),此外,针对缺乏标签的特定语义信息(如"rainy day")提出了一种上下文投票机制(contextual voted module)来捕捉这种特定的语义信息,作为图像中常规object特征的补充,为全局推理提供了一个新的视角.

框架

在这里插入图片描述
简要介绍:
通过resnet50提取的object特征与seq2seqEncoder(LSTM)处理的文本特征利用图学习进行contextualization,分别构建了VAHG与QAHG两个(跨域)异构图,两张异构图的输出最终通过全连接进行合并,之后送入到推理模块,模型最终的输出是一个四维向量(即四个选项的概率分数值) ,张量的流动如下图所示.
在这里插入图片描述
异构图模块的初始输入,其中XaB∗dX_a^{B*d}XaBd<

要复现论文Heterogeneous Graph Representation Learning with Relation Awareness》,可以从以下几个方面着手: ### 理解论文核心思想 该论文可能聚焦于异构图中关系感知的顶点表示学习。现有方法在处理异构图时存在局限,如GNN用于同构图设计,部分专门GNN仅关注顶点表示而未研究关系语义建模,关系属性方法在处理不同类型顶点特征上较简单。此论文或许提出了新的解决办法,像基于注意力机制聚合实体特征并分配权重以捕捉语义信息 [^2][^3]。 ### 数据准备 - **收集数据集**:找到论文中使用的异构图数据集,若没有公开数据集,需自行构建符合论文描述的异构图数据,确保包含不同类型的节点和关系。 - **数据预处理**:对数据进行清洗、归一化等操作,处理缺失值和异常值,将数据转换为适合模型输入的格式。 ### 模型实现 - **代码框架选择**:可使用常见的深度学习框架,如PyTorch或TensorFlow,利用框架提供的工具实现模型结构。 - **构建模型架构**:依据论文中提出的模型架构,实现关系感知的顶点表示学习模块。可能涉及到聚合实体相邻特征、学习不同关系路径重要性以及特征聚合等步骤。例如,若使用注意力机制,可参考以下代码示例(以PyTorch为例): ```python import torch import torch.nn as nn class RelationAttention(nn.Module): def __init__(self, input_dim, hidden_dim): super(RelationAttention, self).__init__() self.linear = nn.Linear(input_dim, hidden_dim) self.attention = nn.Linear(hidden_dim, 1) self.softmax = nn.Softmax(dim=1) def forward(self, features): hidden = torch.tanh(self.linear(features)) attention_scores = self.attention(hidden) attention_weights = self.softmax(attention_scores) weighted_features = attention_weights * features aggregated_features = torch.sum(weighted_features, dim=1) return aggregated_features ``` ### 模型训练 - **定义损失函数**:根据论文中的目标,选择合适的损失函数,如交叉熵损失、均方误差损失等。 - **选择优化器**:可使用Adam、SGD等优化器来更新模型参数。 - **训练过程**:将数据集划分为训练集、验证集和测试集,在训练集上进行模型训练,在验证集上进行模型评估和调优,最后在测试集上评估模型性能。 ### 结果评估 - **评估指标选择**:使用论文中提到的评估指标,如准确率、F1值、均方误差等,对模型性能进行评估。 - **结果分析**:分析模型在不同指标下的表现,与论文中的结果进行对比,若存在差异,需检查代码实现、数据处理等环节是否存在问题。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值