PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning
Arun Mallya, Svetlana Lazebnik
TL;DR
PackNet introduces a weight-based, iterative pruning and retraining framework to sequentially add multiple tasks to a single network while preserving prior task performance, thereby mitigating catastrophic forgetting without storing full task-specific models. By pruning unused parameters after each task and freezing the remaining weights, new tasks reuse existing representations and require only lightweight per-task masks, achieving near-independently trained task performance with modest storage overhead. The approach scales across architectures (VGG-16, ResNet, DenseNet) and datasets (ImageNet, Places365, CUBS, Cars, Flowers), outperforms proxy-loss methods like LwF, and handles large-scale and fine-grained classification tasks with strong robustness. These results suggest a practical, scalable path to multi-task learning within a single network, with potential extensions toward jointly learning weights and sparsity masks.
Abstract
This paper presents a method for adding multiple tasks to a single deep neural network while avoiding catastrophic forgetting. Inspired by network pruning techniques, we exploit redundancies in large deep networks to free up parameters that can then be employed to learn new tasks. By performing iterative pruning and network re-training, we are able to sequentially "pack" multiple tasks into a single network while ensuring minimal drop in performance and minimal storage overhead. Unlike prior work that uses proxy losses to maintain accuracy on older tasks, we always optimize for the task at hand. We perform extensive experiments on a variety of network architectures and large-scale datasets, and observe much better robustness against catastrophic forgetting than prior work. In particular, we are able to add three fine-grained classification tasks to a single ImageNet-trained VGG-16 network and achieve accuracies close to those of separately trained networks for each task. Code available at https://github.com/arunmallya/packnet
