
摘要
本文提出了一种在单一深度神经网络中添加多个任务的方法,同时避免灾难性遗忘。受网络剪枝技术的启发,我们利用大型深度网络中的冗余来释放参数,这些参数随后可以用于学习新任务。通过执行迭代剪枝和网络再训练,我们能够在保证性能下降最小和存储开销最小的情况下,依次将多个任务“打包”到单个网络中。与以往使用代理损失以维持旧任务准确性的工作不同,我们始终针对当前任务进行优化。我们在多种网络架构和大规模数据集上进行了广泛的实验,观察到比以往工作更好的抗灾难性遗忘的鲁棒性。特别是,我们能够在一个已经使用ImageNet训练过的VGG-16网络中添加三个细粒度分类任务,并实现接近单独为每个任务训练的网络的准确性。代码可在https://github.com/arunmallya/packnet 获取。
代码仓库
Lucasc-99/PackNet-Continual-Learning
pytorch
GitHub 中提及
arunmallya/packnet
官方
pytorch
GitHub 中提及
Lucasc-99/packnet_cl
pytorch
GitHub 中提及
kamsyn95/CL_DNN
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| continual-learning-on-cifar100-20-tasks | PackNet | Average Accuracy: 67.5 |
| continual-learning-on-cubs-fine-grained-6 | PackNet | Accuracy: 80.41 |
| continual-learning-on-flowers-fine-grained-6 | PackNet | Accuracy: 93.04 |
| continual-learning-on-imagenet-fine-grained-6 | PackNet | Accuracy: 75.71 |
| continual-learning-on-sketch-fine-grained-6 | PackNet | Accuracy: 76.17 |
| continual-learning-on-stanford-cars-fine | PackNet | Accuracy: 86.11 |
| continual-learning-on-wikiart-fine-grained-6 | PackNet | Accuracy: 69.40 |