DRL-GNN-PPO
首个将图神经网络(GNN)与深度强化学习结合用于网络路由的项目,实现跨拓扑泛化的智能流量调度
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
首个将图神经网络(GNN)与深度强化学习结合用于网络路由的项目,实现跨拓扑泛化的智能流量调度
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
如果你负责管理一张全国光纤骨干网络,每天面对数千条动态流量需求——有些时段某条链路爆满,另一些时段则闲置——传统的静态路由协议(BGP、OSPF)只能按固定规则分配带宽,无法实时感知整张网络的全局状态。强化学习(RL) 被认为是解决这类动态优化问题的利器,但主流 RL 方案存在一个致命缺陷:训练时见过的网络拓扑效果不错,遇到全新的拓扑就失效了。
这正是西班牙加泰罗尼亚理工大学(UPC)的研究团队试图解决的核心问题。他们的解决方案是——用图神经网络(GNN)替代传统全连接网络,让 AI 能真正"读懂"网络拓扑结构,从而实现跨拓扑泛化。
本项目是论文 "Deep Reinforcement Learning meets Graph Neural Networks: exploring a routing optimization use case"(arXiv:1910.07421)的官方代码实现,由 Paul Almasan 等学者于 2019 年发布。代码托管于 GitHub,采用 BSD-3-Clause 开源许可证,作者邮箱为 felician.paul.almasan@upc.edu。
项目的核心贡献在于:首次将 GNN 与深度强化学习(DRL)结合,用于光传输网络(OTN)中的流量工程问题。具体来说,研究者用 PPO(Proximal Policy Optimization) 和 DQN(Deep Q-Network) 两种算法分别训练了 GNN 驱动的智能路由代理,并在美国 NSFNET 和欧洲 GEANT2 等真实拓扑上验证了泛化能力。
项目采用的核心架构是自定义实现的 MPNN(图消息传递神经网络),其工作原理分为三个阶段:
1. Message(消息计算)
将边的隐藏状态与邻居边拼接后,通过全连接层(Dense)映射到隐向量空间。代码中激活函数使用 tf.nn.selu(Scaled Exponential Linear Unit),该激活函数具有自归一化特性,有助于深层网络的梯度稳定传播。
2. Update(状态更新) 使用 GRU(Gated Recurrent Unit) 替代标准的图卷积操作——这是该架构的独到之处。GRU 让每条边能记住历史信息,并在 T 轮迭代(图消息传递的深度)中持续精炼自身状态。
3. Readout(读出) 通过两层全连接网络(35 个隐藏单元 + selu 激活 + L2 正则化)将整张图的边状态聚合为单一 Q 值输出。
这套架构同时用于 PPO 的 Actor-Critic 网络和 DQN 的 Q 网络。Actor 网络负责输出策略(选择哪条路由),Critic 网络负责评估当前状态的价值函数。代码层面,actorPPO.py 和 criticPPO.py 几乎完全对称,仅在输入接口上有细微差异。
为了训练 GNN-DRL 智能体,项目构建了一个自定义的 OpenAI Gym 环境(gym-environments)。这个环境模拟了真实的光传输网络场景:
训练脚本 train_PPOprocesses.py 和 train_DQN.py 均使用多进程(multiprocessing)加速,采用 优先经验回放(Prioritized Experience Replay) 风格的队列机制(DQN 中 MAX_QUEUE_SIZE = 4000)。
从项目提供的实验图片可以清晰看到训练过程中的关键指标变化:

图1:PPO Actor 损失曲线(NSFNet 拓扑)。 可以看到损失在前 2000 步快速下降,随后趋于稳定,表明策略网络在持续优化。
DQN 部分的实验图表同样展示了训练动态:

图2:DQN 智能体在 NSFNET 拓扑上的平均测试得分。 随训练推进,智能体的路由决策质量显著提升,最终稳定在接近最优水平。

图3:DQN ε-greedy 探索率衰减曲线。 从 ε=1.0 逐步衰减至 0.01,确保智能体在训练初期充分探索,后期专注利用已学策略。
最关键的结论是:这套 GNN-DRL 架构在训练拓扑上训练后,可以直接泛化到完全不同的拓扑结构,而传统全连接 DRL 方案完全无法做到——这解决了网络优化领域长期存在的"泛化鸿沟"问题。
从代码来看,这是一个学术原型级别的实现:
| 维度 | 评价 |
|---|---|
| 代码结构 | 清晰分层(DQN/PPO/gym-environments 三模块),模块化设计合理 |
| AI 框架 | TensorFlow 2.x + Keras,自定义模型继承 tf.keras.Model |
| 图计算 | 纯 TensorFlow 实现 MPNN,无 PyTorch Geometric 等现成库依赖 |
| 测试覆盖 | 无明确单元测试,依赖实验验证 |
| 文档质量 | README 完整,包含完整训练/评估流程说明 |
| 依赖管理 | requirements.txt 锁死版本(2020 年快照),含 TensorFlow 2.4.1(较旧) |
需要注意的是,代码中的 超参数以硬编码形式散布在训练脚本中(如 train_DQN.py 里的 hparams 字典、SEED、graph_topology 等),而非统一的配置文件,这对复现实验构成一定障碍。
CUDA_VISIBLE_DEVICES='-1'(禁用 GPU),但这是为调试方便,GPU 训练实际可行但缺乏说明DRL-GNN-PPO 代表的不仅是一个具体项目,更是网络智能化领域的一个重要里程碑。在 AI + 网络(AIN)研究方向,这套方案启发了后续大量研究:
对于 AI 开发者而言,这个项目的价值在于:展示了如何用图结构数据改造传统 RL 框架,以及如何在 Gym 环境中自定义复杂的多智能体通信场景——这些工程经验可直接迁移到其他 GNN 应用领域。
作者联系方式:
felician.paul.almasan@upc.edu(加泰罗尼亚理工大学计算机架构系)
引用格式:Almasan et al., "Deep reinforcement learning meets graph neural networks", arXiv:1910.07421, 2019.