深度自适应增量学习(Incremental Learning Through Deep Adaptation)
深度自适应增量学习(Incremental Learning Through Deep Adaptation)
翻译论文:Incremental Learning Through Deep Adaptation
代码:https://github.com/rosenfeldamir/incremental_learning
该方法取得2017 cvpr Visual Decathlon Challenge 竞赛冠军
注:翻译中可能存在用词不准的情况,如有发现,欢迎留言
##摘要:
\quad鉴于现有的训练过的神经网络,通常需要学习新的能力而不妨碍已经学过的人的表现。现有的方法要么学习次优解决方案,需要联合培训,要么大大增加每个添加域的参数数量,通常与原始网络一样多。我们提出了一种称为深度适应网络(DAN)的方法,将新学习的过滤器限制为现有过滤器的线性组合。 DAN在原始域中精确地保持性能,与标准微调程序相比,需要一小部分(通常取决于网络体系结构的13%)参数数量,并且在较少的培训周期内收敛到相当或更好的性能水平。当与标准网络量化技术结合使用时,我们将参数成本进一步降低到原来的3%左右,精度可以忽略不计或没有损失。可以控制学习的体系结构以在各种学习表示之间切换,从而使单个网络能够解决来自多个不同领域的任务。我们进行了广泛的实验,展示了我们的方法在一系列图像分类任务中的有效性,并探索了其行为的不同方面。
##1.引言
\quad尽管深度神经网络在图像分类[1],语义分割[2],目标检测[3],语音识别[4]医学图像分析[5]等等各个领域继续显示出显着的性能增益,仍然是这样的情况,通常情况下,需要为每个新任务训练单独的模型。给定两种完全不同的形式或性质的任务,例如预测单词序列中的下一个单词与预测图像中某个对象的类别,理所当然的是每个都需要不同的体系结构或计算。一个更受限制的情景 - 我们打算在这项工作中处理的一个情景 - 是学习一个能够在多个相关领域运行良好的表示。这种情况最近由Rebuffi等人提出。 [6]作为多领域学习(MDL),将其置于多任务学习之外,即在同一个领域执行不同的任务。 MDL的一个例子是图像分类,其中图像可能属于不同的领域,例如绘图,自然图像等。在这样的设置中,期望解决方案可以自然地会:
1)利用相同的计算流水线
2)要求每个添加域的所需参数数量适度增加
3)保留已学习数据集的性能(避免“灾难性遗忘”)
4)逐步学习,放弃对联合训练的要求,例如在先前学过的任务的训练数据不再可用的情况下。
\quad我们的目标是让网络在遵守上述要求的同时逐一学习一系列相关任务。我们这样做是通过增加一个已经学习过另一个任务的控制器模块学习新的任务。控制器模块的参数经过优化,以最大限度地减少新任务的损失。在这个阶段不需要原始任务的训练数据。原始任务数据上的网络输出保持原样;任何数量的控制器模块可以被添加到每一层,使得单个网络可以同时编码多个不同的域,其中从一个域到另一个域的转换可以通过设置二进制交换变量或自动控制来完成。由此产生的架构是DAN,表示深度自适应网络。我们证明了我们的方法在最近推出的Visual Decathlon Challenge [6]上的有效性,它的任务是生成一个分类器,以在十个不同的图像分类数据集上运行良好。虽然每个新学到的任务只增加13%的原始参数数量(具体数量取决于网络架构),但平均性能超过了微调所有参数的平均性能 - 没有加倍参数数量的负面影响和灾难性遗忘。在这项工作中,我们专注于各种数据集中的图像分类,因此在我们的实验中,“任务”一词是指特定的数据集/域。所提出的方法可扩展到多任务学习,例如执行图像分割和分类的单个网络,但本文不讨论这一点。
\quad我们的主要贡献在于引入了一种改进的传输学习方法,这种方法与微调所有网络参数以实现新任务一样有效,能够精确保留旧任务性能,需要一部分(网络相关,通常为13%)在新权重方面的成本的分数,并且能够在任何数量的学习任务之间切换。 实验结果验证了该方法对各种图像分类数据集的适用性。
\quad我们介绍了该方法的两个变体,一个完全参数化的版本,其优点如上所述,一个参数少得多,对于可比数目的参数显着地执行浅传递学习(即特征提取)。 在下一节中,我们将回顾一些相关的工作。 第3节详细介绍了所提出的方法。 在第4节中,我们展示了各种实验,包括与相关方法的比较,以及探索如何使我们的方法更有效的各种策略,随后进行了一些讨论和总结发言。
##2.相关工作
###2.1 多任务学习
\quad在多任务学习中,目标是训练一个网络同时在同一个输入上执行多个任务。这通常通过对所有任务进行联合训练来完成。这样的训练是有利的,因为单个表示被用于所有任务。另外,据说多重损失是另一个正规化者。一些例子包括面部标志定位[7],语义分割[8],3D推理[9],对象和零件检测[10]等。虽然所有这些学习在同一数据集上执行不同的任务,但最近的工作[11]探索了单个网络在各种图像分类数据集上执行任务的能力。我们还旨在对来自多个数据集的图像进行分类,但我们建议以逐一学习而非共同学习的方式进行。与我们的方法相一致的是[6]中介绍的数据集特定的附加残差单元。我们与第4节中的这项工作进行了比较。我们的工作与[12]有些相似,其中两个网络共同训练,附加的“cross-stitch”单元允许来自一个网络的每一层具有输出的附加输入线性组合从另一个下层。但是,我们的方法不需要联合培训,并且需要的参数显着减少。
###2.2 增量学习
\quad向神经网络添加新的能力常常导致所谓的“灾难性遗忘”[13],阻碍了网络工作在旧任务中表现良好的能力。解决这个问题最简单的方法是固定网络的所有参数,并使用其倒数第二层作为特征提取器,然后可以训练分类器[14],[15]。虽然保证不改变旧的性能,但观察到的结果大大低于对整个架构进行微调[3]。 Li和Hoiem [16]的工作提供了这种方法几种变体的简洁分类。另外,他们提出了一种微调整个网络的机制,同时通过引入一个损失函数来保证旧任务的性能,该函数鼓励旧特征的输出在新引入的数据上保持不变。虽然他们的方法为每个新任务添加了非常少量的参数,但并不能保证该模型在旧任务中保留其全部功能。 Rusu等人[17]显示新的表示可以与旧的表示一起添加,同时保持旧的任务性能不受影响。但是,这需要为每个添加的任务复制原始网络的参数数量。在Kirkpatrick等人[18]如果发现它们对于旧任务很重要,则神经元的学习率降低。我们的方法完全保留了旧的表示,同时导致每个添加任务的参数数量适度增加。最近,Sarwar等人[19]提出通过分享早期层次的子集和分裂后期层次来逐步培训网络。通过构建,他们的方法也保留了旧的表示。然而,正如他们的实验所显示的,重新学习新网络分支的参数,无论是用类似的分布随机初始化还是仅仅复制旧分支,都会导致比没有任何网络共享的学习更糟的性能。我们的方法在重新利用现有权重的同时,获得的结果平均好于简单的转移学习或从零开始学习。
###2.3 网络压缩
\quad多篇关于减少神经网络的数量权重的文章已经发表[20],[21],增加加速[22]或避免过度拟合[23],使用编码, 量化,修剪和张量分解。 这些方法可以与我们的方法结合使用,以进一步改善结果,如我们在第4节中所示。
##3.方法
\quad我们从一些符号开始。让T 成为一些需要学习的任务。具体而言,我们使用深度卷积神经网络(DCNN)去学习图像分类解决T 这个图像分类任务。当代大多数DCNN都遵循一个共同的结构:对于每一个输入 xix_{i}xi,DCNN通过让输入在一组中 lll 个层 ϕi\phi _{i}ϕi,i∈1...li\in 1...li∈1...l 之间用交错的非线性传递来计算输入的表示形式。网络的初始(较低)层是计算块,例如:在更新的结构中与可选的残差单元进行卷积[24]。我们的方法同样适用于有或没有残差连接的网络。至少有一个全连接层 fif_{i}fi,i∈1...ci\in 1...ci∈1...c 被附加到最后一个卷积层的输出。设 ΦFN=σ(ϕl)∘...σ(ϕ2)∘σ(ϕ1)\Phi _{FN}=\sigma(\phi _{l})\circ ...\sigma(\phi _{2})\circ\sigma(\phi _{1})ΦFN=σ(ϕl)∘...σ(ϕ2)∘σ(ϕ1) 是网络N 的所有卷积层的组成,由非线性交织。我们使用一种结构,所有的非线性σ都是相同的函数,没有可调参数。用