Continual Learning
一个模型负责把客户消息分派给“订单”和“退货”两个部门。它认得出“我的包裹在哪里?”这样的消息。现在公司新设了投诉部门。你用有关商品损坏的消息继续训练模型。投诉分派得越来越准,可一部分询问配送的消息也开始落到新部门去了。如果只检查投诉,就会产生进步的错觉。
你需要的是教模型学会新的东西,同时保住原有的能力。这正是 Continual Learning 的目标:在依次到来的数据或任务上学习,并顾及模型此前已经学会的内容。这个名称指的是一个问题和一类方法;它并不保证不会遗忘。Kirkpatrick et al., Overcoming catastrophic forgetting in neural networks, §1 描述了这种需求。

我们在学习和检验中改变了什么
假设早先训练所用样本的完整存档已经无法取得。在它被删除之前,我们留下了一小份样本:20 条已知正确部门的消息。一种可行的方法,是把这份样本掺进新的投诉样本里。这样,后续训练同时也会得到信号,要求模型继续正确处理“我的包裹在哪里?”。重新使用旧样本,是 van de Ven 和 Tolias, Three scenarios for continual learning, §3.3 所描述的策略之一。
另见:Experience Replay——保存一小份旧样本,并把它掺入新的学习之中。
评估团队另外保留一份旧消息测试集,我们不拿它来训练。每次更新之后,旧类别和新类别都要检查。下面的数字是虚构的例子,不是研究结果;每个测试集包含 100 条消息。
| 模型版本 | 旧消息分派正确 | 投诉分派正确 |
|---|---|---|
| 新一轮学习之前 | 90/100 | 0/100——没有这个类别 |
| 只学习投诉之后 | 40/100 | 92/100 |
| 掺入旧消息样本学习之后 | 89/100 | 87/100 |
最后一个版本更好地保住了原有的能力,尽管识别投诉不如第二个版本。这张表说明的是该比较什么;它并不承诺加入 20 条样本后就会得到这样的结果。
条件会改变难度
在我们的例子里,模型要自己从所有学过的部门中做选择。如果给出“这是一条新类别的消息”这样的提示,测试就会变容易。在比较各种方法时,这类提示以及任务之间的边界是否可得,是很重要的(van de Ven 和 Tolias, §2–2.3)。小样本可能漏掉少见的问题;平均成绩好,并不能证明每一项能力都保住了。
- Catastrophic Forgetting [Polski] 描述的是旧能力的显著退化;其中的演示展示了新的学习如何改变共用的设置。
- Fine-tuning [Polski] 是在选定的样本上对模型继续训练。每一轮训练之后,我们也要检查原有的能力。
- Knowledge Distillation [Polski] 可以把较旧模型给出的指引传递给正在更新的模型;这与保存原始消息是不同的策略(van de Ven 和 Tolias 论文的 §3.3)。
文字和插图在 AI 的协助下完成;消息、样本大小和表中的结果都是自拟的教学示例。插图表现的是保留原有技能这一目标,而不是模型的构造。