Relation-aware Graph Attention Model With Adaptive Self-adversarial Training论文笔记

Relation-aware Graph Attention Model With Adaptive Self-adversarial Training

相关基础知识

什么是异构图?

传统的同构图(Homogeneous Graph)数据中只存在一种节点和边,而异构图(Heterogeneous Graph)中可以存在不只一种节点和边。

异构图的关系预测问题

对于两个包含多种属性的实体(entity),预测他们之间的关系类型(relation)。在异构图中,实体对应节点,关系对应两个节点之间的边,即预测两个节点之间边的类型(两个节点之间可以有多条边)。

Motivation

  • 传统方法利用知识图谱嵌入(KGE)方法解决异构图的关系预测问题,或者虽然采用了GNN,但在信息传递时忽略了边的语义信息,学习到的特征表示不够理想,从而导致结果不够准确。
  • 大部分图表示学习方法都可以统一在一个采样噪声对比估计框架中。随机负采样虽然简单有效,但由于大部分负样本很容易被区分出,所以有梯度消失的问题。许多基于GAN的采样方法可解决这个问题,其中的generator作为负样本采样器,识别出更加discriminative的关系,以供discriminator学习。然而,GAN的问题是需要更多的参数,并且难以训练。

Contribution

  • 提出了RelGNN,一种用于异构图的基于信息传递的图注意力网络,通过加入边的语义信息,增强了图的表达能力。
  • 提出了ASA,一种无参数的负采样方法,可以识别出难负样本,同时降低假负样本率。
  • 在多个benchmark和工业数据集上的实验结果显示,在关系预测问题中,使用RelGNN和ASA采样比STOA方法效果更胜一筹。

Problem Definition

一个异构图可表示为 G = ( V , E , A , R , ϕ ) G=(V,E,A,R,\phi) G=(V,E,A,R,ϕ)
V = { v 1 , ⋯   , v n } V=\left\{v_1,\cdots,v_n\right\} V={ v1,,vn}代表图中的节点集合
A = { a 1 , … , a k } A=\left\{a_1,\dots,a_k\right\} A={ a1,,ak}代表节点的属性模式,每个节点 v i v_i vi的节点类型为 ϕ ( v i ) \phi(v_i) ϕ(vi),其关联的属性模式为 A ϕ ( v i ) A_{\phi(v_i)} Aϕ(vi) A A A的一个子模式,即 A ϕ ( v i ) ∈ A A_{\phi(v_i)}\in A Aϕ(vi)A
E = { e 1 , … , e m } E=\left\{e_1,\dots,e_m\right\} E={ e1,,em}为一个无向边集合, R R R为边的类型集合
每条边 e k = ( v i , r i , v j ) e_k=(v_i,r_i,v_j) ek=(vi,ri,vj)表示 v i v_i vi v j v_j vj之间的关系, r i ∈ R r_i\in R riR
此外,每对节点之间可以包含多个关系(多条边)

Method

GelGNN

如下图所示,GelGNN包含四个部分。在这里插入图片描述

Attribute Embedding

首先将节点的各个属性各自编码成向量,最终拼接在一起,再经过一个全连接层得到该节点的属性embedding向量。

Message passing

通过self-attention机制将节点属性embedding和节点图embedding组合在一起得到最终的实体embedding。

对于节点 v i v_i vi,定义其在图中的传播函数为:

h v i ( t ) = σ ( ∑ r ∈ R ∑ v j ∈ N v i r α ( v i , v j ) W r t − 1 h v j ( t − 1 ) + W s e l f t − 1 h v i ( t − 1 ) ) h_{v_i}^{(t)}=\sigma(\sum_{r\in R}\sum_{v_j\in N_{v_i}^r}\alpha_{(v_i,v_j)}W_r^{t-1}h_{v_j}^{(t-1)}+W_{self}^{t-1}h_{v_i}^{(t-1)}) hvi

在基于知识蒸馏(Knowledge Distillation)生成对抗样本的过程中,引入Relation-Aware Global Attention (RGA) 模块确实有助于提高代理模型对原始模型行为的理解。这是一个相对复杂的任务,通常涉及深度学习库如PyTorch或TensorFlow。下面是一个简化版的代码片段,展示如何在PyTorch中集成RGA模块: ```python import torch.nn as nn from transformers import BertModel, BertConfig class RGA(nn.Module): def __init__(self, config): super(RGA, self).__init__() self.bert = BertModel(config) self.self_attn = nn.MultiheadAttention(config.hidden_size, num_heads=8) def relation_attention(self, inputs): query = inputs key = value = inputs attn_output, _ = self.self_attn(query, key, value, need_weights=False) return attn_output def forward(self, input_ids, attention_mask=None): bert_outputs = self.bert(input_ids=input_ids, attention_mask=attention_mask) output_states = bert_outputs[1] rga_output = self.relation_attention(output_states) return rga_output # 假设我们已经有了原始模型teacher_model和代理模型student_model config = BertConfig() rga_module = RGA(config) # 知识蒸馏过程中的样本生成和更新步骤 input_ids = ... # 样本输入 with torch.no_grad(): teacher_output = teacher_model(input_ids) student_output = student_model(input_ids) student_output = student_output + rga_module(input_ids) # 添加RGA后的输出 # 通过KL divergence或其他相似度度量优化学生模型 loss = kl_divergence(student_output.logits, teacher_output.logits) # 使用交叉熵损失 optimizer.zero_grad() # 清空梯度 loss.backward() # 反向传播 optimizer.step() # 更新学生模型参数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>