📋 论文基本信息
We present GraphNAS, a graph neural architecture search method that enables automatic design of the best graph neural architecture based on reinforcement learning. GraphNAS uses a recurrent network to generate variable-length strings describing GNN architectures, and trains it with policy gradient to maximize expected accuracy on a validation set. Experiments show GraphNAS can design architectures rivaling the best human-invented ones, with strong transfer learning performance.
💡 背景与动机:GNN设计为什么需要自动化?
图神经网络(GNN)已经成为分析社交网络、推荐系统、交通预测等非欧几里得数据的强大工具。GCN、GraphSAGE、GAT、APPNP等模型在各自的任务上表现出色,但它们的共同问题是:架构设计严重依赖人工经验和领域知识。
与CNN类似,GNN也有大量需要手动调节的架构参数:
- 邻居采样策略:一阶?高阶?固定大小?
- 消息计算函数:gcn?gat?cos?linear?gate?
- 信息聚合方式:sum?mean?max?mlp?
- 多头注意力头数:1?4?8?16?
- 输出维度、激活函数:512+relu?64+elu?
在此之前,NAS(神经架构搜索)已经在CNN和RNN上取得了巨大成功——NAS(Zoph & Le, 2016)用RNN作为控制器生成网络架构描述,用策略梯度最大化验证集准确率。ENAS、DARTS、ProxylessNAS等进一步提升了搜索效率。然而,将NAS引入GNN领域并非简单搬运,因为GNN的搜索空间与CNN有本质区别——它涉及图拓扑特有的采样、消息传递和聚合操作。
🔧 核心方法:GraphNAS框架
GraphNAS的整体框架清晰优雅,分为三个核心组件:搜索空间、控制器(Controller RNN) 和 策略梯度训练。
📌 3.1 搜索空间设计
GraphNAS设计的搜索空间覆盖了主流GNN模型的核心操作算子:
以一层GAT为例,一个完整的架构描述为:
📌 3.2 控制器:用RNN生成架构
GraphNAS使用LSTM/RNN作为控制器(Controller),按序列生成每个算子的选择:
具体来说,在每个时间步 i,控制器根据前一步的隐藏状态 hi-1 输出一个softmax分布 Pi,然后从中采样得到算子 mi。所有算子依次生成后构成一个完整的架构描述 m1:T。
📌 3.3 策略梯度训练
生成的子模型 m 在目标图 G 上训练并在验证集 D 上评估,验证准确率作为奖励信号 RD(m)。由于奖励不可微,使用REINFORCE算法更新控制器参数:
子模型的训练与控制器训练完全独立——每次采样出一个架构后,从头训练该模型并使用分类交叉熵loss。为了降低方差,选取验证准确率最高的 K 个候选模型,重复训练 N 次,选最优架构。
🏗️ 深层架构扩展:如何处理大图和多层?
当架构层数增加时,搜索空间呈指数级爆炸:9408L 种组合。GraphNAS提出了分层独立搜索策略:
📌 独立层设计假设
核心洞察:GNN各层的操作可以近似视为相互独立。因此,可以将搜索空间从整个架构空间降维到每个单层空间,先逐层搜索最优配置,再顺序拼接得到完整架构。
📌 DAG层结构表示
对于每层的内部结构,GraphNAS使用DAG(有向无环图)来建模。层由输入状态、中间计算节点和输出状态组成:
其中:
- O1、O2 是输入状态(前一层的输出)
- O3、O4 是中间计算节点,每个节点包含 Smpl + Func + Aggr
- O5 = σ(Read([O3, O4])) 是输出状态
可选的12种计算算子包括:identity, zeroize, GAT(1-8头), GCN, Chebnet, Mean SAGE, ARMA, SGC。
📊 实验与结果
基准数据集上的节点分类
在Cora、Citeseer、Pubmed三个经典引文网络上,GraphNAS搜索出的架构在验证集准确率上均超越了手工设计的GCN、GAT、GraphSAGE等基线模型。尤其在Cora上,GraphNAS设计的架构在保持GAT注意力机制优势的同时,自动选择了最优的头数和隐藏维度配置。
迁移学习能力
更有趣的是:将在Cora上搜索到的最优架构,直接迁移到其他数据集(MS-CS学术合作网络、Amazon产品网络)时,依然取得了超越SOTA的表现。这表明GraphNAS找到的架构具有跨数据集的泛化能力,而不仅仅是过拟合到特定数据集。
搜索效率对比
GraphNAS设定搜索深度为2层(搜索空间 8.8×107),在大图上使用分层的独立搜索策略避免指数爆炸。搜索过程在大约几小时到一两天内完成(取决于图规模),与手工调参的时间成本相比具有显著优势。
代码已开源在 GitHub,为后续GNAS研究提供了重要的基准平台。
🌊 历史影响与后续发展
GraphNAS是第一篇将NAS系统性地引入GNN领域的工作,其IJCAI-20的发表标志着图神经架构搜索(GNAS)这一子领域的正式确立。后续工作在其基础上取得了重要进展:
1. 首次将NAS引入GNN领域,定义了GNAS的问题框架
2. 设计了覆盖主流GNN操作子的通用搜索空间
3. 提出了分层搜索策略解决深层GNN的搜索爆炸问题
4. 实验证明自动搜索的架构可超越人工设计,且具有迁移能力
🎯 对AI研究生的启示
对于从事图神经网络或自动化机器学习研究的同学,这篇论文有几个值得深思的设计哲学:
- 跨领域移植要思考差异:GraphNAS并非简单套用NAS到GNN——它针对GNN特有的采样-消息-聚合三层结构设计了专门的搜索空间。如果只是把CNN的NAS拿来用而不做适配,效果会大打折扣。这提醒我们:方法论迁移时,一定要深入理解目标领域的具体操作语义。
- 搜索空间设计决定上限:无论控制器多强,如果搜索空间没有覆盖好的架构,永远搜不出好结果。GraphNAS的搜索空间涵盖了GCN、GAT、GraphSAGE等6种相关函数和多种聚合方式——这是一个高质量的搜索空间封装。
- 好的研究问题=现有热门领域+未被满足的需求:NAS在CNN/RNN上成功,GNN正在快速发展——但GNN架构设计还需要大量手工和领域知识。这两者的结合点就是GraphNAS的研究空间。对于研究生选题,这种交叉地带往往产出高质量工作。
- 效率问题总是伴随扩展性出现:当架构加深时搜索空间指数爆炸,GraphNAS提出了
总的来说,GraphNAS是一篇简洁、清晰、开创性的工作。它的影响力不仅在于提出了一种搜索方法,更在于定义了GNAS这个研究方向,为后续大量工作提供了基准和起点。对于想要进入图神经网络或AutoML领域的同学,这是一篇值得精读的基础文献。