Query Driven-GNN for Community Search:From Non-Attributed,Attributed,to Interactive Attribute

1.问题定义

  • CS(Community search)
    寻找包含查询节点的社区结构,使其内部结构紧密
  • ACS(Attributed community search)
    寻找包含查询节点的紧密结构,且社区内成员的属性和查询属性相似

2.传统方法缺点

  • CS
    根据预定义的子图(k-core,k-truss…)寻找包含查询节点的社区,限制性太强,现实世界中很多社区不能满足这种结构

  • ACS
    将问题分解两步执行(two-stage process),忽略了社区结构和节点属性之间的关系,以及属性和属性之间的关系
    step1:CS问题,根据预定义的结构限制找出包含查询节点的社区
    step2:通过查询属性过滤step1找的社区

  • 传统ACS问题-ACQ算法
    先基于k-core找到候选社区,然后从候选社区中找具有查询属性数量最多的社区

  • 传统ACS问题-ATC算法
    先基于k-truss找到候选社区,然后从候选社区找属性得分(attribute score)最大的社区

3.通用的GNN框架

GNN消息传播最大特点就是聚合邻居信息(每个节点Embedding学习过程如下)
1)每层消息传播过程(function)
在这里插入图片描述

  • 第0层节点的特征矩阵初始化为归一化的属性矩阵(attribute vecter d×1)
  • AGG是聚合函数(SUM,MAX,MIN),根据不同任务需求选择合适的聚合函数,聚合前一层中当前节点和邻居节点的特征
  • batch normalization,将聚合的数据归一化
  • 送入激活函数,进行非线性变换
  • Dropout,随机丢弃一部分神经元,及其相连的权重,防止模型过拟合
    2)本文模型
    没有使用BN归一化,使用了拉普拉斯平滑,相当于数据归一化的作用(除节点的度)
    在这里插入图片描述

4.本文工作

对于CS和ACS问题,提出了两种模型 Query Driven-GNN(QD-GNN) 和 Attributed Query Driven-GNN(ACQ-GNN),并和最新发表的论文对比(ICS-GNN:基于交互式的社区搜索,每次查询都需要训练模型,不能接受查询属性作为输入)

  • ICS-GNN
    不支持查询属性的输入(没有输入接口),每次查询都需要训练一次模型
    1)根据查询节点找候选字图
    2)在子图上使用GNN模型,学习节点的表示
    3)使用BFS算法找GNN得分最大的社区

5.本文提出的模型及实现细节

文章总思路,当做一个二元分类问题,输出one-hot形式数组,表明每个节点是否和查询节点一个社区,如果value=1表明此节点和查询节点一个社区
模型由两部分组成,先训练embedding model,然后利用训练好的模型预测出查询节点的社区(不用re-training)
在这里插入图片描述

  • 1)Input Construction
    Construct query vertices:查询节点集构造成n维one-hot向量
    Construct query attributes:查询属性集构造成d维one-hot向量
    将上述训练数据输入到GNN模型

  • 2)Model Training Stage
    (input) 训练数据集:查询节点集对应的one-hot向量
    (input) 数据标签:查询节点对应社区的one-hot向量 n维,表明每个节点是否和当前查询节点一个社区
    (output) 模型输出:每个节点基于查询节点学到的嵌入向量,经过sigmod之后相当于每个节点和查询节点同属一个社区的概率
    损失函数:Binary Cross Entropy (交叉熵:预测值和真实值分布的差异)
    在这里插入图片描述
    将数据分为训练集和验证集,训练集训练模型,验证集选出使模型性能较好的权重参数w和阈值γ(用于筛选节点是否和当前查询节点一个社区),验证集怎么选模型参数???
    ????每个查询节点集作为一个整体,学习每个节点基于此查询集合的嵌入,sigmod之后,(多维向量怎么sigmod成概率)然后计算损失函数???

  • 3)Online Query Stage
    将查询节点集构建成One-hot向量形式输入到训练好的模型,输出n维向量,表明每个节点与当前节点属于一个社区的概率,根据模型输出的向量和阈值γ,使用BFS查找社区
    在这里插入图片描述

6.QD-GNN

  • 1)Graph Encoder(GNN)
    编码器功能:结合全局信息学习每个节点的embedding,使邻近节点的attribute embedding更相近
    input: 图的结构(邻接矩阵A n×n)和图中所有节点的属性(属性矩阵 n×d)
    output:结合全局信息学习每个节点的embedding
    图注:每个节点不断聚合前一层邻居节点和自身节点的信息(每个节点的embedding初始化为d维特征向量),激活函数和dropout和常规GNN模型消息传播方式一样,所以本文重点讨论聚合方式。
    在这里插入图片描述

  • 2)Query Encoder
    提供查询接口(能将查询节点信息转成向量输入到模型),学习特定查询的拓扑结构,得到每个节点基于查询节点的embedding
    input:邻接矩阵和查询节点(每个节点初始化为查询向量one-hot–如果节点在当前查询节点集中,对应位置为1),通过这种表示能将查询信息融入到模型训练,然后利用GNN模型不断聚合邻居节点信息的特征,使与查询节点集关系近的节点学到的表示“权重”大,选社区成员时,有较大可能被选中
    output:每个节点根据查询节点学习到的embedding
    图注:刚开始初始化为查询矩阵,之后将特征融合的结果作为输入(将节点的属性和全局结构特征在查询节点周围传播)
    在这里插入图片描述
    在这里插入图片描述

  • 3)Feature Fusion
    功能1:融合上述两个编码器的embedding,结合局部和全局信息,得到每个节点的embedding
    功能2:将融合结果送到query encoder
    功能3:最后一层是每个节点最终的embedding,送到sigmoid算每个节点和当前查询节点一个社区的概念
    在这里插入图片描述

  • 4)算法
    图注:算法中前两个编码器信息通过边传播(邻接矩阵),聚合邻居信息
    在这里插入图片描述

7.AQD-GNN

  • 和QD-GNN区别
    加入了Attribute Encoder(给查询属性提供接口,学习每个节点基于查询属性的embedding),由于加入了属性编码器需对Feature Fusion改造

  • 将查询属性融入到模型的两个问题?
    Q1:由于维度问题(和GNN控制传播消息方式的邻接矩阵维度不一样,矩阵不能直接相乘),查询属性不能很好的处理成模型的输入
    Q2:属性信息只能通过相邻顶点传播(邻接矩阵A控制传播方式),不能到达和查询属性具有相似属性的节点—不能识别具有相似属性的节点

  • 解决上述问题–bipartite graph
    构造节点-属性二分图,查询属性能在节点之间传播,学习到每个节点基于查询属性的embedding,识别出和查询属性相似的节点(对二分图构造邻接矩阵,不断聚合与之相关的查询属性信息,包含的查询属性越大,学习到的embedding“权重”越大,同时属性侧不断聚合相连的节点信息,聚合的相似节点多,属性的embedding也更相似)

属性—节点(A—N)消息传播方式
查询属性集初始化为one-hot向量,通过二分图邻接矩阵节点不断聚合查询属性信息
在这里插入图片描述

节点—属性(N—A)消息传播方式
每个属性节点通过二分图邻接矩阵不断聚合与之相连的节点信息(节点向量初始化为特征向量)
在这里插入图片描述

  • Feature Fusion
    将三个编码器学习到的不同侧重点的节点embedding融合(侧重点:全局信息,基于查询节点,基于查询属性),为了同时处理查询节点和查询属性,特征融合器的output又作为节点编码器和属性编码器中间层的输入。

  • 算法GNN总流程
    图注: 第一层先初始化三个编码器,图编码器的特征用节点属性矩阵初始化,结构编码器用查询节点集的one-hot向量初始化,属性编码器(先初始化属性侧到节点侧)用查询属性的one-hot编码;中间层 属性编码器和结构编码器用Fusion Feature的输出作为输入,以达到同时处理结构和属性的目的。
    在这里插入图片描述

8.论文实验

将模型和两个非属性社区搜索算法(CTC,K-ECC)对比实验,和两个属性社区搜索算法(ACQ,ATC)比较,最后和最新提出的ICS-GNN模型对比

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值