使用神经网络进行持续学习的最先进方法是什么?

人工智能 神经网络 参考请求 增量学习 在线学习 灾难性遗忘
2021-11-09 15:29:42

似乎有很多关于随机梯度下降和灾难性遗忘问题的文献和研究,但我找不到太多关于使用神经网络架构执行持续学习的解决方案。

通过持续学习,我的意思是通过输入数据流(可能在使用普通批次和时期进行部分初始训练之后)改进模型(在使用时)。

许多现实世界的分布可能会随着时间逐渐变化,所以我相信我们应该能够以在线方式训练 NN。

你知道哪些是关于这个主题的最先进的方法,你能给我指出一些关于它们的文献吗?

3个回答

我从您的问题中了解到,您在应用在线学习时试图避免灾难性的遗忘。

这个问题应该通过实施减少不同任务的灾难性遗忘的方法来解决。乍一看,它们似乎不适用,因为改变的是数据而不是特定的任务,而是改变数据导致任务的改变。假设您的目标是对不同品种的狗进行分类。您的在线数据集演变为排除“大丹犬”。你的神经网络在经过足够多的时期后会忘记“大丹人”。该任务仍然通过对不同品种进行分类来达到其目的,但任务仍然发生了变化。它从承认“大丹犬”为犬种转变为不承认“大丹犬”为犬种。权重更改为排除它们,但我链接的方法尝试并保持权重不变,即使它不是用于在线学习的目的。只需将包含这些技术的超参数设置为低,因为我相信数据不会立即发生变化,但会随着时间的推移而变化,你应该没问题。

最明显的技术是在训练时存储信息。这称为伪排练有了这个,至少你可以使用随机梯度,但随着数据集的增长,你需要内存和资源。

然后尝试减少权重对旧任务的影响,以保持与它们的相关性。结构正则化

后来这些人实施了HAT,这似乎使一些权重保持不变,而另一些则适应新任务。

你知道哪些是关于这个主题的最先进的方法,你能给我指出一些关于它们的文献吗?

这个答案已经提到了一些方法。更具体地说,目前,最常见的持续学习方法(即在尝试解决灾难性遗忘问题的同时逐步学习更多数据)是

  • 动态/变化的拓扑方法
  • 正则化方法
  • 排练(或伪排练)方法
  • 集成方法
  • 混合方法

你也可以看看这个答案如果您对最新技术的详尽概述(至少到 2019 年)感兴趣,您应该阅读论文Continual lifelong learning with neural networks: A review(2019,由 Parisi 等人撰写)。

有许多不同的方法试图避免神经网络中的灾难性遗忘。在这里不可能总结所有的贡献。

然而,除了已经提到的技术之外,还有一些稀疏方法试图解开网络在不同任务或学习步骤上的内部表示。稀疏性通常会有所帮助,但网络必须学会使用它,通过构造来施加结构性稀疏性是不够的。此外,您可以利用贝叶斯方法,通过它您可以将置信度度量与您的每个权重相关联,并使用此度量来减少遗忘。此外,元学习可用于元学习一个模型,该模型对于忘记不同的任务序列具有鲁棒性。

另外,我可以建议您查看ContinualAI wiki,它维护了一个按持续学习策略类型分类并标有附加信息的更新出版物列表。免责声明:我是ContinualAI协会的成员)。