SupSup:使用网络掩膜进行终身学习.

本文主要讨论终身学习问题,即使用同一个模型解决许多不同的任务。比如同时进行MNIST,CIFARImageNet的图像分类任务,通常的解决方法是针对这些任务分别设计不同的网络,对其在相应的数据集上进行训练。尽管这样做通常能够取得较好的表现,但需要大量的时间和内存,因此往往把这种策略得到的平均准确率作为终身学习方法的准确率上界。在这篇论文中,作者提出了一种终身学习的模型SupSup,其不仅能够解决不同的任务,还能够对不知道属于哪个任务中的测试图像进行快速准确的分类。

1. 训练过程

随机初始化一个网络,网络的参数值$W$在训练中并不改变。引入一个mask矩阵$M$,随机对网络的每个连接赋予$0/1$值,从而构造一个子网络$W \otimes M$。模型在训练时针对某一特定任务上的数据集训练一个对应的mask。因此对于所有任务共享一个主网络,在解决每一个任务时根据其相应的mask使用一个子网络,因此这一步也被称作supermask。本文所解决的图像分类任务都不复杂,因此即使不更新网络参数,模型也能获得较好的表现。

2. 推断过程

推断时,若已知测试图像$x$所属的数据集$i$,便可以直接选用对应任务的子网络$W \otimes M^i$进行测试:

\[p=f(x,W \otimes M^i)\]

当测试图像所述任务未知时,通常的解决办法是将其在所有子网络上进行测试,选择其中熵最小的测试结果作为最终的预测结果。但是这么做需要对所有子网络应用一次前向传播过程,需要占用大量的时间和算力。为解决这个问题,作者引入了superposition的概念。为每一个子网络$i$引入一个系数$\alpha_i \in [0,1]$,表示该网络对于该图像的适合程度。若共有$k$个任务,则初始化为$\alpha_i =\frac{1}{k}$。则此时模型的预测结果为:

\[p(\alpha)=f(x,W \otimes (\sum_{i=1}^{k} \alpha_i M^i))\]

仍然期望预测结果的熵$\mathcal{H}$最小,通过梯度下降算法实现:

\[\alpha ← \alpha - \eta \nabla_{\alpha} \mathcal{H}(p(\alpha))\]

在实际实现时,为减少计算复杂度,采用下述两种方法之一:

  1. One-Shot:选用单次梯度结果最小的子网络;
  2. Binary:使用二分搜索进行选择,每次将负梯度最小的一半置零。

3. 过剩神经元与新的目标函数

为了进一步提高模型表现,作者使用了过剩神经元(superfluous neuron)。如果对于某个特定任务只有$10$个类别,则网络的输出层一般设置为$10$。作者在输出层设置了更多的神经元$»10$,称这些神经元为s-neurons。尽管这些神经元在预测中都会被模型抑制,但这种做法能够提高模型的表现。进一步地,作者设计了新的目标函数$\mathcal{G}$用于代替熵$\mathcal{H}$,该目标函数衡量所有s-neurons $v’$的logits大小(经过softmax函数之前的值):

\[\mathcal{G}(y;\alpha) = log(\sum_{v'=1}^{n}exp(y_{v'}))\]

4. 实验分析

从下图可以看出,相较于其他终身学习方法,SupSup以较少的模型尺寸实现了更高的识别准确率:

当训练时给定图像所属的任务类别,而测试时不给定其类别(即GN)时各模型的表现如下:

当训练和测试时都不给定图像的类别(即NN),模型也能维持较好的表现。当任务数量增长时,表现略有下降:

下图是在PotatedMNIST数据集(随机旋转MNIST数据集)和PermutedMNIST数据集(随机交换MNIST数据集中图片的像素值)上不同模型的表现:

从下图中可以看到,当目标函数$\mathcal{G}$代替熵$\mathcal{H}$时,给定足够数量的s-neurons,模型会有更好的表现: