Life Long Learning

为什么需要持续学习?

  • [[Catastrophic Forgetting]] #card

    • 举的例子中提到模型依次学习不同任务,任务学习过后就会遗忘。将不同任务混合训练,在不同任务上都有比较好的表现。

    • [[Multi-Task Learning]] 可以解决遗忘,但是每次新增加任务都需要从头训练。

      • LLL 不希望保留之前任务的 数据

      • Life Long Learning 的 upper bound

  • 可塑性和稳定性 train a model for each task #card

    • 存储多个模型

    • 不同任务间的知识迁移

  • 和 finetune 有什么区别? [[Transfer Learning]] #card

    • 关注其他任务的学习能不能提高目标任务的表现,侧重训练后新任务表现怎么样。

    • LLL 关注训练新任务后,旧任务表现怎么样。

  • [[不同学习场景对比]]

分类

  • 任务增量型持续学习(Task-Incremental CL)

  • 类增量型持续学习(Class-Incremental CL)

  • 域增量型CL(Domain-Incremental CL)

  • 任务不可知型持续学习(Task-Agnostic CL)

    • 模型在测试过程中可能会应对任意位置的任务

    • 需要模型学到的特征能够容易地泛化到任意新场景

如何评估效果?

  • a sequence of task

  • Ri,jR_{i,j}: 训练 task i 后 task j 的效果

    • i > j j 是否被遗忘?

    • i < j 任务 i 能否被迁移到任务 j

  • 指标

    • Accuracy =1Ti=1TRT,i=\frac{1}{T} \sum_{i=1}^{T} R_{T, i}

    • Backward Transfer =1T1i=1T1RT,iRi,i=\frac{1}{T-1} \sum_{i=1}^{T-1} R_{T, i}-R_{i, i}

      • 评估遗忘程度(下降程度)

      • 一般结果小于 0

    • Forward Transfer =1T1i=2TRi1,iR0,i=\frac{1}{T-1} \sum_{i=2}^{T} R_{i-1, i}-R_{0, i}

为什么会发生 [[Catastrophic Forgetting]] #card

  • 不同任务损失最小的参数空间可能不同

解决方法

  • Selective Synaptic Plasticity

    • Regularization-based Approach

    • 思路:保留模型先前学习到的重要参数,只改变不重要的参数学习新任务。

    • L(θ)=L(θ)+λibi(θiθib)2L^{\prime}(\boldsymbol{\theta})=L(\boldsymbol{\theta})+\lambda \sum_{i} b_{i}\left(\theta_{i}-\theta_{i}^{b}\right)^{2}

      • θib\theta ^b_i 之前学习到的参数

      • bib_i 评估 θib\theta ^b_i 对前面模型的重要性

        • bi=0b_i = 0 会出现 [[Catastrophic Forgetting]]

        • bi 过大会出现新任务学习不好 intransigence

        • bi 由人为设定,如果由模型学习,bi=0 后一项损失最小。

        • 如何选择?

          • 训练完模型后,如果改变某个参数对模型影响大,设置 bi 很小。反之,设置 bi 很大
      • 例子

        • SGD 代表之前的方法,学习 B 和 C 后,A 的效果明显下降。

        • L2 代表 bi=1b_i = 1,B 和 C 很难学习

+ 研究如何计算不同的 bi 值

  + Elastic Weight Consolidation (EWC)

  + [\[\[Synaptic Intelligence\]\]](/post/logseq/Synaptic%20Intelligence.html) (SI) 参数改变对损失函数的影响

  + Memory Aware Synapses (MAS) 参数改变对模型输出的影响

  + RWalk

  + Sliced Cramer Preservation (SCP)

+ gradient episodic memory

  + 对梯度更新方向做出限制

    + task 1 和 task 2 的梯度做点积大于 0,让两个任务的梯度更新方向尽可能相同。

  + 需要记录过去 task 的梯度信息 (远小于过去task的数据量)
  • Additional Neural Resource Allocation

    • 增加额外神经元资源分配

    • progressive neural networks

  + 不动已经训练好的模型参数,将它做为下一个模型某些层的输入,再增加模型学习新任务的参数。

+ PackNet

  + 不增加神经元数量,每个任务只使用部分模型参数

+ Compacting, Picking, and Growing (CPG)

  + 上面两种方法结合
  • Memory Reply

    • Generating Data

      • 生成器生成之前任务的 pseudo-data 加到新任务数据中,然后一起训练。

[[Life Long Learning/tree]]

Ref

作者

Ryen Xiang

发布于

2024-10-05

更新于

2025-01-07

许可协议


网络回响

评论