APPNP:PREDICT THEN PROPAGATE: GRAPH NEURAL NETWORKS MEET PERSONALIZED PAGERANK

APPNP(Approximate Personalized Propagation of Neural Predictions)算法结合了图卷积神经网络与个性化页面排序,用于节点分类任务。该算法解决了传统PageRank在处理自链接和循环圈时的问题,通过引入跳转概率α避免PR值无限增长。APPNP在PPNP基础上进行近似求逆操作,提高模型训练效率。在最后的迭代步骤中,通过归一化操作得到预测结果。此算法在不增加额外参数的情况下,提升了图神经网络的性能,但可能面临收敛速度慢的问题。

背景

发表论文时对应的对比算法。

KLICPERA J, BOJCHEVSKI A, GÜNNEMANN S. Predict then Propagate: Graph Neural Net-
works meet Personalized PageRank[C/OL] //7th International Conference on Learning Represen-
tations, ICLR 2019, New Orleans, LA, USA, May 6-9, 2019. : OpenReview.net, 2019. https:
//openreview.net/forum?id=H1gL-2A9Ym.

理论部分

APPNP (Approximation Personalized Propagation of Neural Prediction)被应用在引文网络的节点分类任务中。在节点分类中,一般的网络方法对领域节点的考虑是不足的。APPNP利用图卷积神经网络与个性化页面排序结合, 利用PageRank传播的方式构建一种简单的模型,来进行邻域节点信息更好的传播。PageRank 算法通过网页链接重要性得分计算。重要性可认为是网页链接点击。PageRank算法给定一个概率值,定义为网页访问的概率。一般地, 1N\frac{1}{N}N1 表示为每个网页节点初始化的概率, PR{\rm{PR}}PR也是一个初始化的概率值。PageRank 是一个迭代算法,因此PR{\rm{PR}}PR 值初始化为1N\frac{1}{N}N1NNN表示为节点的数量。 PR{\rm{PR}}PR值的总和一般为1,当PR{\rm{PR}}PR越大,说明重要性越大。
给定节点vvv,求节点vvvPR{\rm{PR}}PR值,
PR(v)=∑u∈NvPR(u)O(u) {\rm{PR(}}v{\rm{) = }}\sum\limits_{u \in {{\mathcal N}_v}} {\frac{{{\rm{PR(}}u{\rm{)}}}}{{O(u)}}} PR(v)=uNvO(u)PR(u)
Nv{{\mathcal N}_v}Nv表示所有链接到节点vvv的集合。 O(u)O(u)O(u)表示节点uuu的对外链接数。最早提出的PageRank算法存在着一些缺点,例如当一些节点存在自链接,或者是一些节点的出链节点形成循环圈时,PageRank在迭代过程中会出现PR{\rm{PR}}PR 持续增大,不会减小的情况。对于上述问题,PageRank算法被重新进行改进。
PR(v)=α∑u∈NvPR(u)O(u)+(1−α)N {\rm{PR(}}v{\rm{) = }}\alpha \sum\limits_{u \in {{\mathcal N}_v}} {\frac{{{\rm{PR(}}u{\rm{)}}}}{{O(u)}}} + \frac{{(1 - \alpha )}}{N} PR(v)=αuNvO(u)PR(u)+N(1α)
α\alphaα是一个超参数,取值一般为0.85。 α\alphaα表示节点跳转时的概率,不依据节点之间的链接进行跳转。
PageRank算法衍生出的模型个性化的PageRank算法,主要利用图中节点的链接关系来迭代计算节点的权重。PageRank算法使用随机游走的策略来访问图中节点。PageRank算法与个性化Page Rank算法的区别在于随机游走时的跳转行为不同。个性化的PageRank算法对跳转行为进行约束,指定调转到的对外链接为特定的节点。例如在个性化排序时,用户只能跳转到一些特定的节点,这些节点表示用户偏好的那些节点。
PPR′(v)=α∑u∈NvPR(u)O(u)+(1−α)rv {\rm{PP}}{{\rm{R}}^{'}}{\rm{(}}v{\rm{) = }}\alpha \sum\limits_{u \in {{\mathcal N}_v}} {\frac{{{\rm{PR(}}u{\rm{)}}}}{{O(u)}}} + (1 - \alpha )r_v PPR(v)=αuNvO(u)PR(u)+(1α)rv
其中,
rv={1v=u0v≠u {r_v} = \left\{ {\begin{matrix}{{}} 1&{v = u}\\ 0&{v \ne u} \end{matrix}} \right. rv={10v=uv=u
个性化PageRank算法中,用户的偏好表示为∣rv∣=1|r_v| = 1rv=1。原始的PageRank采用的计算方式为ρpr=Arwρpr{{\boldsymbol{\rho }}_{{\rm{pr}}}} = {{\bf{A}}_{{\rm{rw}}}}{{\boldsymbol{\rho }}_{{\rm{pr}}}}ρpr=Arwρprρpr{{\boldsymbol{\rho }}_{{\rm{pr}}}}ρprArw{{\bf{A}}_{{\rm{rw}}}}Arw的特征向量,Arw=AD−1{{\bf{A}}_{{\rm{rw}}}} = {\bf{A}}{{\bf{D}}^{ - 1}}Arw=AD1,类似的,个性化的PageRank 算法可以表示为
ρppr(xv)=(1−α)A~ρppr(xv)+αxv {{\boldsymbol{\rho }}_{{\rm{ppr}}}}({{\bf{x}}_{\bf{v}}}) = (1 - \alpha ){\bf{\tilde A}}{{\boldsymbol{\rho }}_{{\rm{ppr}}}}({{\bf{x}}_{\bf{v}}}) + \alpha {{\bf{x}}_{\bf{v}}} ρppr(xv)=(1α)A~ρppr(xv)+αxv
对上式进行重新表示,得到
ρppr(xv)=α(I−(1−α)A~)−1xv {{\boldsymbol{\rho }}_{{\rm{ppr}}}}({{\bf{x}}_{\bf{v}}}) = \alpha {({\bf{I}} - (1 - \alpha ){\bf{\tilde A}})^{ - 1}}{{\bf{x}}_{\bf{v}}} ρppr(xv)=α(I(1α)A~)1xv
xv{{\bf{x}}_{\bf{v}}}xv表示的是节点vvv对应的传送向量。
PPNP模型的输出结果可表示为ZPPNP{{\bf{Z}}_{{\rm{PPNP}}}}ZPPNP
ZPPNP=softmax(α(I−(1−α)A~)−1fw(X)) {{\bf{Z}}_{{\rm{PPNP}}}}{\rm{ = softmax(}}\alpha {({\bf{I}} - (1 - \alpha ){\bf{\tilde A}})^{ - 1}}{f_w}{\rm{(}}{\bf{X}}{\rm{))}} ZPPNP=softmax(α(I(1α)A~)1fw(X))

fw(X){f_w}{\rm{(}}{\bf{X}}{\rm{)}}fw(X)表示的是一个关于参数学习权重www的神经网络。A~=D^−12A^D^−12{\bf{\tilde A}} = {{\bf{\hat D}}^{^{ - \frac{1}{2}}}}{\bf{\hat A}}{{\bf{\hat D}}^{^{ - \frac{1}{2}}}}A~=D^21A^D^21A^=A+I{\bf{\hat A}} = {\bf{A}} + {\bf{I}}A^=A+I。为加快PPNP的网络模型训练速度,因此APPNP在PPNP的基础上近似求逆的操作。被表示为:
ZAPPNP(0)=fw(X) {\bf{Z}}_{{\rm{APPNP}}}^{(0)}{\rm{ = }}{f_w}{\rm{(}}{\bf{X}}{\rm{)}} ZAPPNP(0)=fw(X)

ZAPPNPk+1=(1−α)A~ZAPPNPk+αfw(X) {\bf{Z}}_{{\rm{APPNP}}}^{k + 1}{\rm{ = (1 - }}\alpha {\rm{)}}{\bf{\tilde AZ}}_{{\rm{APPNP}}}^k + \alpha {f_w}{\rm{(}}{\bf{X}}{\rm{)}} ZAPPNPk+1=(1α)A~ZAPPNPk+αfw(X)

ZAPPNPK=softmax((1−α)A~ZAPPNPK−1+αfw(X)) {\bf{Z}}_{{\rm{APPNP}}}^K{\rm{ = softmax}}({\rm{(1 - }}\alpha {\rm{)}}{\bf{\tilde AZ}}_{{\rm{APPNP}}}^{K - 1} + \alpha {f_w}{\rm{(}}{\bf{X}}{\rm{))}} ZAPPNPK=softmax((1α)A~ZAPPNPK1+αfw(X))

通过上述公式,矩阵的求逆操作被进行近似。在APPNP迭代到最后两步时,进行归一化操作。k∈Kk \in KkKKKK 表示迭代的次数。
个性化的页面排序算法加入α\alphaα,表示节点跳转时依据一定的概率,使页面排序算法具有个性化。
APPNP算法利用图卷积神经网络与页面排序算法结合的方式,提出一种个性化页面排序算法解决图神经网络节点分类问题的模型。相比于一些基线模型,APPNP算法没有引入任何的参数量,但APPNP的算法收敛速度较慢。APPNP算法将个性化页面排序算法与图卷积神经网络结合,图卷积神经网络可以被替换为图注意力网络等。

理论部分注意事项

πpr=Arwπpr{{\boldsymbol{\pi}}_{{\rm{pr}}}} = {{\bf{A}}_{{\rm{rw}}}}{{\boldsymbol{\pi }}_{{\rm{pr}}}}πpr=Arwπpr
πpr{{\boldsymbol{\pi}}_{{\rm{pr}}}}πpr应该是Arw{{\bf{A}}_{{\rm{rw}}}}Arw的特征向量。参考链接来自:

https://codeantenna.com/a/TmBbfN2SV1

相关资料

https://blog.youkuaiyun.com/fnoi2014xtx/article/details/107567629

数据

https://github.com/shchur/gnn-benchmark/tree/master/data

代码

https://github.com/benedekrozemberczki/APPNP

### 使用图神经网络增强遗传算法以实现社交网络中的多跳影响力最大化 #### 图神经网络在社交网络分析中的应用 图神经网络(GNNs)能够有效捕捉节点之间的复杂关系,在处理具有高度连接性的数据结构方面表现出色。对于社交网络传播模型而言,通过学习节点特征表示可以更好地理解个体间的互动模式以及信息扩散路径[^1]。 #### 遗传算法优化过程概述 遗传算法是一种基于自然选择原理设计出来的全局搜索方法,适用于解决组合优化问题。其核心在于模拟生物进化过程中基因传递机制来寻找最优解集。当应用于社交网络环境下的影响范围扩大化场景时,则需考虑如何定义适应度函数以便评估候选种子集合的好坏程度。 #### 结合两者优势的方法论探讨 为了提升传统GA求解效率并改善最终结果质量,可引入GNN作为辅助工具参与整个计算流程: - **初始化种群阶段**:利用预训练好的GNN模型预测各节点成为活跃传播者的潜在可能性得分;依据此概率分布随机采样生成初始染色体; - **交叉变异操作期间**:借助于已构建的社会关系子图谱指导新个体创造方向——即优先保留那些高影响力的局部区域内的成员构成下一代样本空间; - **评价体系重构环节**:除了常规考量被激活用户的数量外,还应加入由GNN推断得出的预期后续波及效应因子共同决定单条记录对应的适配值大小。 ```python import torch from torch_geometric.nn import GCNConv import numpy as np class GNNEnhancedGeneticAlgorithm(): def __init__(self, data, population_size=100, generations=50): self.data = data self.population_size = population_size self.generations = generations # Initialize the GNN model for node importance prediction num_features = data.num_node_features hidden_channels = 16 self.model = GCNModel(num_features, hidden_channels) def initialize_population(self): predictions = self.predict_importance_scores() initial_population = [] while len(initial_population) < self.population_size: chromosome = select_nodes_based_on_probabilities(predictions) if validate_chromosome(chromosome): # Ensure no duplicates or invalid selections initial_population.append(chromosome) return initial_population def predict_importance_scores(self): with torch.no_grad(): out = self.model(self.data.x, self.data.edge_index).softmax(dim=-1) scores = out[:, 1].cpu().numpy() # Assuming binary classification where class '1' indicates higher influence normalized_scores = (scores - min(scores)) / (max(scores) - min(scores)) return normalized_scores def main(): dataset = load_social_network_data() ga_instance = GNNEnhancedGeneticAlgorithm(dataset) best_solution = run_genetic_algorithm(ga_instance) evaluate_and_report_results(best_solution) if __name__ == "__main__": main() ``` 上述代码片段展示了如何创建一个融合了GCN特性的改进版遗传算法框架用于探索最佳的影响者群体配置方案。值得注意的是实际应用场景可能涉及更多细节调整和技术选型工作,这里仅提供了一个简化版本供参考[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值