链接:http://arxiv.org/abs/2112.10021
简介
这是一篇在情感分类Sentiment Classification运用连续学习Continual Learning的paper,提出了KAN。
连续学习一般有两种setting:
- Class continual learning (CCL):在CCL中,每个任务由一个或多个要学习的类组成。在这个阶段,所有的类都只建立了一个模型。在测试中,可以将来自任何类的测试实例呈现给模型,让它进行分类,而不给它任何训练中使用的任务信息。
- Task continual learning (TCL):在TCL中,每个任务都是一个单独的分类问题(例如,一个任务对不同品种的狗进行分类,另一个任务对不同类型的鸟进行分类)。TCL在一个神经网络中构建一组分类模型(每个任务一个)。在测试中,系统知道每个测试实例属于哪个任务,只使用任务的模型对测试实例进行分类。
本文在TCL的情况下进行情感分析的连续学习任务,
通常,一家SA(情感分析)公司必须为许多客户工作,而每个客户都希望研究公众对其产品/服务的一个或多个类别及其竞争对手的产品/服务的看法。
对每一类产品/服务进行情感分析是一项任务。出于保密性,客户通常不允许SA公司与任何其他客户共享其数据或将其数据用于任何其他客户。因此,连续学习很适合这项工作。
在本例中,我们还希望在不违反机密性的情况下,随着时间的推移提高SA准确性。这就提出了两个关键的挑战:
- (1)如何在不使用前一个任务数据的情况下,将从前一个任务中学到的知识转移到新的任务中,帮助新任务更好地学习;
- (2)如何在不使用CF的情况下,对前一个任务的旧模型进行改进。在[15]中,作者发现CL有助于提高文档级情感分类(SC)的准确性,SC是SA[13]的子问题。
在本文中,我们提出了一个更好的模型,称为KAN (Knowledge Accessibility Network)。注意,这里的每个任务都是一个两类SC问题,也就是说,对一个产品的评论是正面的还是负面的进行分类。
我之前阅读的终身学习paper大多将重心放在抵抗遗忘catastrophic forgetting,但本文的重心在于知识迁移Knowledge Transfer:之前学过的任务能不能帮助解决以后学的任务;后学的任务能不能巩固增强之前学过的任务。
这是情感分析的特殊性导致的:情感分析是一个二分类问题,不同的任务之间相似度很大(电影评论和美食评论虽然是两个任务,但两者的情感词是基本一样的),也就是说不同任务之间有很多相通的知识,并不会产生较为严重的遗忘。所以工作的重心要放在知识迁移上。
为此,本文提出了KAN,包含两个部分:主要持续学习网络(main continual learning,MCL)和可访问性网络(accessibility,AC)。
- MCL的主要组成部分是知识库(Knowledge Base,KB),用于存储从所有训练任务中学习到的知识。
- 在学习每一个新任务时,AC网络决定过去的哪一部分知识对新任务有用并可以共享。
- 也就是说,每学习一个新任务,共享知识就会被增强一次,从而使得知识既可以向前迁移,也可以向后迁移。
Related Work
在此之前,只有一个工作是将连续学习运用到情感分类:SRK。但是SRK在学习新任务的时候保护过去的知识,只能向前迁移不能向后迁移,并且他的向后迁移也很差。相比起来KAN就能前后迁移。
同时,SRK也指出:情感分类任务不怕遗忘,因为任务相似度太高了。
KAN
KAN受人脑的启发:我们的大脑会记录知识的可访问性。如果我们之前的一些知识对新任务有用(即,新任务和之前的一些任务之间的共享知识),我们的大脑将这些部分设置为可访问的,以实现前向知识转移。这也使落后的知识转移成为可能,因为它们现在是可访问的,我们有机会根据新的任务数据加强它们。对于以前的知识中那些无用的部分,它们被设置为不可访问,从而保护它们不被更改。
受到这个想法的启发,本文设计了一个内存和可访问性机制。
我们需要解决两个关键问题:
- (1)如何决定知识的可访问性,即识别出之前的知识中对新任务有用的部分;
- (2)如何利用识别出的有用/共享知识来帮助新任务学习,同时又保护其他部分。
KAN结构如图所示:
整体结构
KAN包含两部分:MCL网络(紫色)和AC网络(黄色)。MCL在持续学习和测试阶段都使用(AC在测试中不使用,除了从任务ttt生成的掩码ata_tat)。
我们来看看MCL的结构:
首先最上面是情感分类头(Pos/Neg),每个任务特制一个;
下面是稠密层(dense layers);
在下面是知识库KB,因为本文用了RNN(内部是GRU),所有叫KB-RNN。注意:知识库包含所有的知识,分为任务特定的知识和共享的知识。
再来看AC的结构:
输入任务的id ttt,进入AC-EMB,得到任务的embedding。其中AC-EMB是一个随机初始化的embedding layer。
然后产生一个任务掩码ata_tat,来决定知识库中的哪一部分知识(或单元)可以被当前任务ttt访问。
总结起来,KAN的输入是任务的id ttt和文档ddd。它们被用于通过掩码ata_tat和{ hiKB}\{h_i^{KB}\}{ hiKB} (KB-RNN中的hidden state)链接训练这两个组件。
AC Training
在AC训练阶段,只有任务embedding(Task Embedding, AC- emb)、AC- RNN等黄色框中的内容是可训练的。
假设知识库已经保留了从任务0…t−10…t-10…t−1中学习到的知识。当新的任务ttt到达时,我们首先训练AC部分,来生成一个二进制的任务掩码ata_tat(一个与KB {
hiKB}\{h_i^{KB}\}{
hiKB}大小相同的矩阵),以指示KB- RNN中的哪些单元可以被新的/当前的任务ttt访问。
由于掩码是基于新的任务数据进行训练的,KB-RNN中之前的知识是固定的,所以那些没有被屏蔽的KB-RNN单元(意味着它们对新任务是有用的)就是条目在ata_tat中为1的可访问单元(未屏蔽)。其他单元是不可访问的,它们的条目在ata_tat中为0(屏蔽)。
MCL Training
AC训练结束后,我们开始MCL训练。在这个阶段,只有KB-RNN和紫色框中的其他部分是可训练的。训练后的二进制的任务掩码ata_tat以元素为单位乘以KB-RNN的输出向量。这个操作保护了那些不可访问的单位,因为没有梯度流穿过它们,同时允许那些可访问的单位被更新,因为掩码不会停止它们的梯度。
Continual Learning in KAN
在算法1中给出了KAN中持续学习的算法。
对于每个新任务,首先进行AC训练,然后进行MCL训练。
一个例外是在第一个任务(算法1的3-4行),一开始KB没有知识,AC没有什么可以使用的,所以我们在AC之前训练MCL(和KB)先获得一些知识。但是,在第一个任务之后,对于每个新任务,AC总是在MCL(和KB)之前训练(第6-7行)。
Details of Accessibility Training
AC训练的目的是检测在给定新的任务数据的情况下,知识库中保留知识的可访问性。
如图1和算法2所示,它以训练示例ddd和训练后的知识库KB-RNN Wt−1KB−RNNW^{KB-RNN}_{t-1}Wt−1