Life Long Learning

it2025-02-04  7

Life Long Learning

目标遇到的问题,挑战:相关算法1. 抗遗忘: Elastic Weight consolidation(EWC)2. 抗遗忘: 训练能够生成之前task样本的模型3. 提升: Gradient Episodic Memory (GEM)4. Model Expansion1. Progressive Neural Networks2. Expert Gate3. Net2Net 参考: 如果真的实现一个网络处理所有问题, 离真正的人工智能就不远了.

目标

希望一个模型能够对多种类型的目标进行处理(learning).在不同的目标依次学习的前提下, 不遗忘之前学习到的知识.

遇到的问题,挑战:

遗忘: 学习了新的task2之后, 老的task1 准确度下降. 需要保证task1的准确性, 同时希望task2也能学好.提升: 希望不同任务之间能够触类旁通, 不同任务之间互相辅助.模型复杂度控制: 如何判断学习task2之后, task1的效果下降是模型参数太少还是真的由于先后原因被遗忘. 以及什么条件下需要增加参数.curriculum learning. 学习的先后顺序也非常重要.

在线流式训练中, 早期的样本和当前的样本所包含的内容也可能不同, 只不过变化是连续的, 不像多任务中, 各个任务是有一个明确的变化节点. 所以很有可能也存在这种问题.

相关算法

1. 抗遗忘: Elastic Weight consolidation(EWC)

大体思路, 如果一个参数对之前的任务非常重要, 那么在当前任务训练时, 尽量不要修改它: L ′ ( θ ) = L ( θ ) + λ ∑ i b i ( θ i − θ i b ) 2 L'(\theta) = L(\theta) + \lambda \sum_{i}b_i(\theta_i -\theta_i^b)^2 L(θ)=L(θ)+λibi(θiθib)2 其中, b i b_i bi为控制 θ i \theta_i θi变化程度的参数. θ i \theta_i θi为当前的学习参数, 而 θ i b \theta_i^b θib为上一个task学习到的 θ i \theta_i θi的值. 最简单的 b i b_i bi 参数, 通过 θ i \theta_i θi的二次导数绝对值大小决定.

2. 抗遗忘: 训练能够生成之前task样本的模型

conducting multi-task learning by generating pseudo-data using generative model.

有点类似人类大脑自己回想问题, 自己创造case

3. 提升: Gradient Episodic Memory (GEM)

希望新的task的训练过程中, 对老的task的效果也有提升. 具体做法是, 在使用 θ i t j \theta_i^{t_j} θitj的gradient g i t j g_i^{t_{j}} gitj更新 θ i t j \theta_i^{t_j} θitj的时候, 参考之前task中 θ i \theta_i θi 的gradient g i t j − 1 g_i^{t_{j-1}} gitj1, g i t j − 2 g_i^{t_{j-2}} gitj2, g i t j − 3 g_i^{t_{j-3}} gitj3…, g i t 1 g_i^{t_{1}} git1. 使用历史gradient修正当前 g i t j g_i^{t_{j}} gitj g i ′ g_i^{'} gi, 使得: g i ′ . g i t k ≥ 0 , ∀ 0 ≤ k ≤ j g_i^{'} . g_i^{t_{k}} \ge 0 , \forall 0 \le k \le j gi.gitk0,0kj 意思就是修正后的方向不与之前的方向重冲突.

4. Model Expansion

1. Progressive Neural Networks

每有一个新的Task, 创建新的网络, 新网络的各层, 接入老Task等层的前一层当输入:

2. Expert Gate

每当有一个新任务, 通过一个Task Detector 网络, 判断新任务和那个任务最像, 使用最像的网络, 来init 一个新的task的model. 每一个新任务, 一个新的model.

3. Net2Net

当当前的任务学习的准确率不高时, 对网络的节点进行分裂. 一分为二, 将layer变宽.

参考:

李宏毅深度学习
最新回复(0)