图增量学习笔记

借这篇博客记录图增量学习的笔记。

现有的图上的增量学习没有提出新的思路,基本是将现有的增量学习方法移植到图上,可以沿用之前的分类。图上的「灾难性遗忘」现象有着相同的本质,以子图分类任务为例,下图展示了一个传统的网络模型在先后学习三个任务时在各个任务上的表现,可以看到,网络只在当前任务上能够取得好的表现,对于旧任务都会有显著的性能下降。

ImVuee.png

回放

ER_GNN[AAAI’21]

ER_GNN是一个典型的回放类增量学习方法,它在学习新任务时仍然能够使用旧任务的数据。类似于同类其他方法,ER_GNN的核心就是如何选取旧任务有代表性的数据。论文中用的是Experience Buffer(经验库)来指代存储旧任务数据的数据结构。给定训练集$D_i^{tr}$和经验库$B$,目标就是在其上训练一个分类器,来达到在新旧任务上都取得好的性能。分类任务的一个常用的损失函数是交叉熵函数:

对于来自新任务训练集和旧任务经验库的信息,需要一个参数$\beta$进行平衡,得到下面的目标式:

上面介绍的还是一些通用的方法,在其他领域的增量学习方法上也适用,论文的核心还是提出在图上如何对经验库$B$进行选取,给出了三种策略:

Mean of Feature

这个策略跟iCaRL基本一致,也就是选取每个类别中最靠近类别均值的样本作为代表性样本

Coverage Maximizaiton

这个策略的思想是,虽然有代表性的顶点只占少数,但我们可以在特征空间中将它们最大化。具体的做法是,将每个类别中的顶点进行排序,排序的依据是与其他类别距离小于$d$的顶点的数量:

排序越靠前,也就意味着该顶点与其他类别的顶点越重叠,它所携带的信息就越没有区分性,因此为了保存旧任务的信息,应该选取排序靠后的,也就是$\mathcal{N}\left(v_{i}\right)$最小的顶点作为代表性顶点。

Influence Maximization

这个策略跟正则化类方法有点类似,就是通过损失函数来反应各个顶点的重要性。一个最直观的做法是,每次从训练集中去除一个顶点进行重新训练,两次结果的差异就能翻译去除顶点的重要性,但这几乎是不现实的,因为要对每个顶点进行重训练。所以论文借鉴了影响函数(influence function)中的理论,即使不重新训练也能得到想要的结果。

TWP[AAAI’21]

TWP对于已经学习过的旧任务数据无法再访问,它通过计算网络中每个参数在不同任务以及拓扑结构上的重要性,固定对于旧任务重要的参数,将重要性低的参数用作新任务的学习,从而达到避免对旧任务知识的遗忘。

同样地,衡量一个参数对于一个任务的重要性类似于MAS的做法,通过损失函数在该参数上的梯度来决定:

论文的一个创新之处在于定义了参数在图拓扑结构上的重要性。以GAT网络为例,TWP将中心顶点与邻域顶点之间的attention系数视为拓扑结构上的重要性,则类似地可以通过求attention系数在某个参数上的梯度来得到:

值得注意的是,特定任务的损失函数都是给定的,所以对于参数的梯度是一个值,而每一层的attention系数没有所谓的损失函数,因此会得到一个多维向量$e_i^{(l)}=[e_{i1}^{(l)},\dots,e_{i|N_i|}^{(l)}]$。论文将拓扑结构上的损失函数定义为:

最后通过超参数$\lambda$来平衡这两部分损失函数的比例。

上面介绍的主要是对于单个任务要怎么学习,那对于增量学习的场景下,新旧任务之间如何继续保持网络的性能,论文也是通过定义一个损失函数来对旧任务上重要的参数进行惩罚,使得它们在学习新任务时尽量不变动:

其中$I_n$表示网络参数在旧任务上的重要性,$W_n^*$表示网络在任务$\Gamma_n$的最优参数。上面的损失函数能够让低重要性的网络参数重新学习来适应新任务,而重要性高的参数保持固定。最后,为了避免因为固定太多的参数而导致网络在新任务上重新调整学习的余地很小,论文另外加了一个L1正则项来保证网络的学习能力:

当前任务为$\Gamma_{k+1}$,加入正则项后能避免在该任务上网络参数的重要性都很高,这样一来也就不存在不重要的参数用来学习新任务。