本项目提供了一系列流行持续学习策略和基线的示例。您可以轻松运行实验来重现原始论文的结果,或调整超参数以获得自己的结果。天空才是极限!
为保证公平实现,我们依赖由 ContinualAI 开发和维护的 Avalanche 库。欢迎查看并支持该项目!
下表描述了当前在 experiments
文件夹中实现的所有实验及其结果。这些表格并非用于比较不同方法,而是作为它们性能的参考。不同方法可能使用略微不同的设置(例如,从预训练模型开始或从头开始),因此并不总是有意义进行比较。
如果一个实验在 性能
方面完全重现了论文的结果(即使使用不同的超参数),则在 已重现
列中标记为 ✅。否则,标记为 ❌。
Avalanche
表示我们无法找到任何特定的参考论文,我们使用的是该策略首次添加到 Avalanche 库时获得的性能。
如果 性能
远低于预期,则在 已重现
列中使用 bug
标签。
最后,参考
列报告了预期性能,以及相关论文的链接(如果有)。请注意,链接并不总是指向引入该策略的论文,因为它有时与我们用来获取目标性能的论文不同。
ACC 表示在最后一个经验上训练后,所有经验的平均准确率。
首先,我们报告非在线持续学习情况(也称为批量持续学习)的结果。然后,我们报告在线持续学习情况的结果。
基准测试 | 策略 | 场景 | 性能 | 参考 | 已重现 |
---|---|---|---|---|---|
置换 MNIST | Less-Forgetful Learning (LFL) | 域增量 | ACC=0.88 | ACC=0.88 | ✅ Avalanche |
置换 MNIST | Elastic Weight Consolidation (EWC) | 域增量 | ACC=0.83 | ACC=0.94 | ❌ |
置换 MNIST | Synaptic Intelligence (SI) | 域增量 | ACC=0.83 | ACC=0.95 | ❌ |
拆分 CIFAR-100 | LaMAML | 任务增量 | ACC=0.70 | ACC=0.70 | ✅ |
拆分 CIFAR-100 | iCaRL | 类别增量 | ACC=0.48 | ACC=0.50 | ✅ |
拆分 CIFAR-100 | 重放 | 类别增量 | ACC=0.32 | ACC=0.32 | ✅ Avalanche |
拆分 MNIST | RWalk | 任务增量 | ACC=0.99 | ACC=0.99 | ✅ |
拆分 MNIST | Synaptic Intelligence (SI) | 任务增量 | ACC=0.97 | ACC=0.97 | ✅ |
拆分 MNIST | GDumb | 类别增量 | ACC=0.97 | ACC=0.97 | ✅ |
拆分 MNIST | GSS_greedy | 类别增量 | ACC=0.82 | ACC=0.78 | ❌ |
拆分 MNIST | Generative Replay (GR) | 类别增量 | ACC=0.75 | ACC=0.75 | ✅ |
拆分 MNIST | Learning without Forgetting (LwF) | 类别增量 | ACC=0.23 | ACC=0.23 | ✅ |
拆分 Tiny ImageNet | LaMAML | 任务增量 | ACC=0.54 | ACC=0.66 | ❌ |
拆分 Tiny ImageNet | Learning without Forgetting (LwF) | 任务增量 | ACC=0.44 | ACC=0.44 | ✅ |
拆分 Tiny ImageNet | Memory Aware Synapses (MAS) | 任务增量 | ACC=0.40 | ACC=0.40 | ✅ |
拆分 Tiny ImageNet | PackNet | 任务增量 | ACC=0.46 | ACC=0.47 (表 4 SMALL ) | ✅ |
基准测试 | 策略 | 场景 | 性能指标 | 参考文献 | 是否复现 |
---|---|---|---|---|---|
CORe50 | 深度流式LDA (DSLDA) | 类别增量 | ACC=0.79 | ACC=0.79 | ✅ |
置换MNIST | GEM | 域增量 | ACC=0.80 | ACC=0.83 | ✅ |
分割CIFAR-10 | 在线重放 | 类别增量 | ACC=0.50 | ACC=0.50 | ✅ Avalanche |
分割CIFAR-10 | ER-AML | 类别增量 | ACC=0.47 | ACC=0.47 | ✅ |
分割CIFAR-10 | ER-ACE | 类别增量 | ACC=0.45 | ACC=0.52 | ✅ |
分割CIFAR-10 | 监督对比重放 (SCR) | 类别增量 | ACC=0.36 | ACC=0.48 | ✅ Avalanche |
置换MNIST | 平均GEM (AGEM) | 域增量 | ACC=0.81 | ACC=0.81 | ✅ |
分割CIFAR-100 | GEM | 任务增量 | ACC=0.63 | ACC=0.63 | ✅ |
分割CIFAR-100 | 平均GEM (AGEM) | 任务增量 | ACC=0.62 | ACC=0.62 | ✅ |
分割CIFAR-100 | ER-ACE | 类别增量 | ACC=0.24 | ACC=0.25 | ✅ |
分割CIFAR-100 | ER-AML | 类别增量 | ACC=0.24 | ACC=0.24 | ✅ |
分割CIFAR-100 | 在线重放 | 类别增量 | ACC=0.21 | ACC=0.21 | ✅ Avalanche |
分割MNIST | CoPE | 类别增量 | ACC=0.93 | ACC=0.93 | ✅ |
分割MNIST | 在线重放 | 类别增量 | ACC=0.92 | ACC=0.92 | ✅ Avalanche |
除了Python标准库外,运行实验所需的主要软件包是PyTorch、Avalanche和Pandas。
pip install git+https://github.com/ContinualAI/avalanche.git
。CL基准仓库标记了支持的Avalanche版本(您可以浏览标签查看所有版本)。您可以使用pip install avalanche-lib==[版本号]
安装相应的Avalanche版本,其中[版本号]
的格式为0.1.0
。
对于某些策略(如LaMAML),您可能需要安装带有额外软件包的Avalanche,例如pip install avalanche-lib[extra]
。
有关如何安装Avalanche的更多详细信息,请查看此处的完整指南。pip install pandas
。官方指南。请将您的工作目录设置为项目根文件夹。
可以通过简单地从experiments
文 件夹导入函数并执行它来运行实验。
默认情况下,实验将在可用时在GPU上运行。
每个实验的输入参数是一个可选的参数字典,用于实验中。如果为None
,将使用默认参数(取自原始论文)。
from experiments.split_mnist import synaptic_intelligence_smnist # 选择实验 # 可以为None以使用默认参数 custom_hyperparameters = {'si_lambda': 0.01, 'cuda': -1, 'seed': 3} # 运行实验 result = synaptic_intelligence_smnist(custom_hyperparameters) # Avalanche指标字典 print(result)
请将您的工作目录设置为项目根文件夹。 您应该将项目根文件夹添加到您的PYTHONPATH中。
例如,在Linux上,您可以全局设置:
export PYTHONPATH=${PYTHONPATH}:/path/to/continual-learning-baselines
或仅为当前命令设置:
PYTHONPATH=${PYTHONPATH}:/path/to/continual-learning-baselines command to be executed
您可以直接通过控制台使用默认参数运行实验。 打开控制台并通过指定其路径运行所需的Python文件。
例如,要在分割MNIST上运行突触智能:
python experiments/split_mnist/synaptic_intelligence.py
要使用自定义参数执行实验,请参考上一节。
请将您的工作目录设置为项目根文件夹。
您可以运行所有测试:
python -m unittest
或者您可以通过提供格式为tests.strategy_class_name.test_benchmarkname
的测试名称来指定测试。
例如,要在分割MNIST上运行突触智能,您可以运行:
python -m unittest tests.SynapticIntelligence.test_smnist
如果您使用了这个仓库,就意味着您使用了Avalanche,请记得引用我们在CLVision @ CVPR2021工作坊上发表的参考论文:"Avalanche: 一个端到端的持续学习库"。 这将帮助我们在机器学习社区中提高Avalanche的知名度,最终使其成为一个更好的工具:
@InProceedings{lomonaco2021avalanche,
title={Avalanche: an End-to-End Library for Continual Learning},
author={Vincenzo Lomonaco and Lorenzo Pellegrini and Andrea Cossu and Antonio Carta and Gabriele Graffieti and Tyler L. Hayes and Matthias De Lange and Marc Masana and Jary Pomponi and Gido van de Ven and Martin Mundt and Qi She and Keiland Cooper and Jeremy Forest and Eden Belouadah and Simone Calderara and German I. Parisi and Fabio Cuzzolin and Andreas Tolias and Simone Scardapane and Luca Antiga and Subutai Amhad and Adrian Popescu and Christopher Kanan and Joost van de Weijer and Tinne Tuytelaars and Davide Bacciu and Davide Maltoni},
booktitle={Proceedings of IEEE Conference on Computer Vision and Pattern Recognition},
series={2nd Continual Learning in Computer Vision Workshop},
year={2021}
}
我们一直在寻找愿意帮助我们完成为社区提供稳健实验这一具有挑战性任务的新贡献者。您想加入我们吗?步骤很简单!
experiments/benchmark_folder
中创建适当的脚本。如果基准测试不存在,您可以添加一个。experiment.py
文件中填写您的代码。脚本应返回相关测试使用的指标。tests/target_results.csv
中为您的实验添加预期结果。您可以添加一个数字或一个数字列表。tests/strategy_folder/experiment.py
中编写单元测试。遵循现有测试的简单结构。README.md
中的表格。/path/to/avalanche
添加到您的PYTHONPATH
中即可)。git bisect
使用本仓库提供的gitbisect_test.sh
来检索引入回归的avalanche提交。
git bisect start HEAD v0.1.0 -- # HEAD(当前版本)是坏的,v0.1.0是好的
git bisect run /path/to/gitbisect_test.sh /path/to/continual-learning-baselines optional_test_name
git bisect reset
gitbisect_test.sh
脚本需要一个指向continual-learning-baselines
目录的必填参数,以及一个指定特定单元测试路径的可选参数(例如,tests.EWC.test_pmnist
)。如果未提供第二个参数,将运行所有单元测试。HEAD
和v0.1.0
引用更改为任何avalanche提交。一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平 台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的 技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。