kasanari/incident-response-rl-gnn
GitHub: kasanari/incident-response-rl-gnn
基于消息传递图神经网络与强化学习的自主网络事件响应研究代码,解决防御策略在多种网络拓扑间的结构泛化问题。
Stars: 3 | Forks: 1
# 描述
此记录包含与论文 [使用消息传递神经网络和强化学习实现自主网络事件响应中的结构泛化](https://doi.org/10.1109/CSR61664.2024.10679456) 相关的代码。
它用于训练一个强化学习 (RL) 智能体,该智能体使用图神经网络 (GNN) 来嵌入状态。
该智能体在 [CAGE 2 环境](https://github.com/cage-challenge/cage-challenge-2) 中进行训练和测试。
智能体的任务是防御由 CAGE 2 挑战建模的网络,以抵御攻击智能体。GNN 用于促进智能体在多种网络拓扑中的泛化能力,这将在训练后通过 `policy_eval` 脚本进行测试。
## 依赖项
依赖项由 [uv](https://docs.astral.sh/uv/) 管理。
PyTorch 未包含在依赖列表中,以便用户可以根据需要自行安装 GPU 或 CPU 版本。
## 用法
`train_mlp` 和 `train_gnn` 脚本将分别在 `scenarios` 文件夹中的所有场景上训练 MLP 和 GNN 模型。
这可能需要一些时间。设置只能通过直接编辑脚本来更改,因为尚未实现 CLI 接口。
如果你想评估训练好的模型,请运行 `policy_eval`,默认情况下它将运行两次评估,
一次是使用不同的 GNN 层,另一次是在所有场景上测试所有模型。
这可能需要很长时间才能完成。要运行较短的评估,请编辑脚本中的相应值。
定义网络结构/图的场景文件位于 `scenarios/` 中。
## 代码来源
`CybORG`、`gnn` 和 `stable_baselines3` 模块包含来自外部来源的已修改和未修改的代码。
这些代码的版权归 respective authors 所有。
- [Oracle SAGE](https://github.com/AndrewPaulChester/oracle-sage),为 SB3 改编的 SR-DRL 代码。`gnn/` 模块。
- Oracle Sage 本身派生自 [SR-DRL](https://github.com/jaromiru/sr-drl),GNN RL 策略。
- [Stable Baselines 3](https://github.com/DLR-RM/stable-baselines3),PPO 实现。`stable_baselines3` 模块。
- [CybORG](https://github.com/cage-challenge/CybORG),CybORG/CAGE2 环境。`CybORG/` 模块。
标签:AI安全, Chat Copilot, 凭据扫描, 图神经网络, 强化学习, 科学研究, 自主响应, 逆向工具