Parameter-Efficient Transfer Learning with Diff Pruning
About
While task-specific finetuning of pretrained networks has led to significant empirical advances in NLP, the large size of networks makes finetuning difficult to deploy in multi-task, memory-constrained settings. We propose diff pruning as a simple approach to enable parameter-efficient transfer learning within the pretrain-finetune framework. This approach views finetuning as learning a task-specific diff vector that is applied on top of the pretrained parameter vector, which remains fixed and is shared across different tasks. The diff vector is adaptively pruned during training with a differentiable approximation to the L0-norm penalty to encourage sparsity. Diff pruning becomes parameter-efficient as the number of tasks increases, as it requires storing only the nonzero positions and weights of the diff vector for each task, while the cost of storing the shared pretrained model remains constant. It further does not require access to all tasks during training, which makes it attractive in settings where tasks arrive in stream or the set of tasks is unknown. We find that models finetuned with diff pruning can match the performance of fully finetuned baselines on the GLUE benchmark while only modifying 0.5% of the pretrained model's parameters per task.
Related benchmarks
| Task | Dataset | Result | Rank | |
|---|---|---|---|---|
| Natural Language Understanding | GLUE | SST-293.77 | 452 | |
| Natural Language Understanding | GLUE (test) | SST-2 Accuracy94.9 | 416 | |
| Natural Language Understanding | GLUE (val) | SST-294.2 | 170 | |
| Image Classification | Oxford Flowers-102 (test) | Top-1 Accuracy92.37 | 131 | |
| Image Classification | Caltech101 (test) | -- | 121 | |
| Natural Language Understanding | GLUE (test dev) | MRPC Accuracy90.2 | 81 | |
| Author Profiling | PAN16 (test) | Task Score93.6 | 80 | |
| Image Classification | EuroSAT (test) | -- | 59 | |
| Text Classification | FCDL18 | Task Accuracy82.8 | 32 | |
| Text Classification | BIOS | Task Accuracy84.6 | 32 |