GNN第一次炼丹总结(调参总结)

本文通过调整GCN、GraphSAGE及GAT等GNN模型的隐藏层参数,在Cora数据集上进行节点分类任务,探讨了隐藏层深度、维度及注意力头数对模型性能的影响。

用GCN、graphSAGE、GAT处理Cora数据集的节点分类任务。

目标:调 隐藏层数目、隐藏层的维度、训练次数

默认固定参数:学习率lr =0.01 权重衰减weight_decay 5e-3 优化器 ADAM dropout = 0.5

GAT 使用多头注意力 默认为 3。

展示的结果,都是多次训练中最好的结果。

对比1: 此时 隐藏层数目为2,训练次数500

            model\隐藏层维度3264128

GraphSage

0.7780.780.78

GCN

0.7720.790.79

GAT

0.7640.7740.776

基本上  随着隐藏维度的上升,模型效果变好,但是提升的幅度在变小

注:GAT效果还没其他模型好

对比2: 此时隐藏层维度32,训练次数500

model \  隐藏层数目(深度)281632
GraphSage0.7920.3160.3160.316
GCN0.7740.3120.2320.278
GAT0.7680.3160.3160.316

显而易见,出现了oversmoothing。

对比3:此时隐藏层维度32,训练次数500

model \  隐藏层数目(深度)2345
GraphSage0.7740.770.4060.442
GCN0.7620.7740.250.226
GAT0.7740.770.7520.716

显而易见,还是有oversoothing。从实验结果看,对于core数据集,隐藏层数目为三层效果最好。超过三层就开始出现oversoothing。根据结果,似乎对于GAT,它oversmoothing衰减的较慢。

注:可以通过一些手段克服oversmoothing

对比4:此时隐藏层维度为32,隐藏层数目为2

model \  训练次数1005001000500050000
GraphSage0.7760.7840.7840.784
GCN0.7320.7760.7540.778
GAT0.7760.770.7780.784

50000次时间太久了,略过。根据现有的结果也能看出来,GNN对训练次数要求不是很高,基本上五百次就够了!

对比5: 隐藏层维度为64,隐藏层为3层,训练次数为1000

   model \  heads2516
GAT0.7760.7860.79

根据结果,可以看出来,多头注意力机制,头越多结果越好

注: 不知道为什么在GAT最后结果中并没有使用正则化,而且我使用L2正则化后效果也没变得更好。

ps: CORA数据集就一个图,所以就不需要batch,那么也就不需要batch normalization

其他:使用的GNN模型都是使用自己写的GNN层,没有调用pyG里面封装的。最后取得的效果差强人意,不知道为什么我的GAT结果并不是很好。当然其他模型也没有别人的结果好。论文里面在处理cora数据集的节点分类任务时,GCN、GAT 准确度分别为81.5 和83.1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值