alpha-beta-CROWN 项目教程
1. 项目介绍
alpha-beta-CROWN 是一个基于高效线性边界传播框架和分支定界法的神经网络验证器,能够在 GPU 上高效加速,并扩展到相对较大的卷积网络(例如,数百万参数)。它支持广泛的神经网络架构(如 CNN、ResNet 和各种激活函数),得益于我们开发的 auto_LiRPA 库。alpha-beta-CROWN 能够提供对抗攻击的证明鲁棒性保证,并验证神经网络的其他一般属性,如控制中的 Lyapunov 稳定性。
alpha-beta-CROWN 是 VNN-COMP 2021、2022 和 2023 的获胜验证器,总分最高,在三年内超越了许多其他神经网络验证器。
2. 项目快速启动
环境准备
alpha-beta-CROWN 在 Python 3.11 和 PyTorch 2.2.1 上进行了测试,但较低版本(如 Python 3.7 和 PyTorch 1.11)也可能适用。建议使用 conda 环境进行安装。
# 安装 miniconda(如果尚未安装)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 克隆项目并包含子模块
git clone --recursive https://github.com/Verified-Intelligence/alpha-beta-CROWN.git
cd alpha-beta-CROWN
# 创建并激活 conda 环境
conda env create -f complete_verifier/environment.yaml --name alpha-beta-crown
conda activate alpha-beta-crown
运行示例
以下是一个简单的示例,用于在 CIFAR-10 数据集上验证 ResNet 网络的鲁棒性。
# 激活 conda 环境
conda activate alpha-beta-crown
# 运行验证
cd complete_verifier
python abcrown.py --config exp_configs/tutorial_examples/cifar_resnet_2b.yaml
3. 应用案例和最佳实践
应用案例
alpha-beta-CROWN 可以应用于以下场景:
- 对抗攻击的鲁棒性验证:验证神经网络在面对对抗攻击时的鲁棒性。
- Lyapunov 稳定性验证:验证控制系统的 Lyapunov 稳定性。
- 一般神经网络属性验证:验证神经网络的其他一般属性,如输出约束。
最佳实践
- 选择合适的算法:根据具体需求选择合适的验证算法(如 CROWN、α-CROWN、β-CROWN 等)。
- 优化配置文件:根据网络结构和验证需求,优化配置文件中的参数。
- 并行计算:利用 GPU 加速验证过程,提高效率。
4. 典型生态项目
alpha-beta-CROWN 生态系统中的一些典型项目包括:
- auto_LiRPA:用于计算一般计算图的符号边界的库。
- VNN-COMP:国际神经网络验证竞赛,alpha-beta-CROWN 连续三年获胜。
- Gurobi:用于 MIP 验证算法的优化求解器。
- IBM CPlex:用于 GCP-CROWN 验证算法的求解器。
这些项目共同构成了一个强大的神经网络验证工具链,支持从基础验证到高级应用的广泛需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考