0%

Incremental Learning

[TOC]

一. 引入:一个线性模型的例子

  1. 假设我们首先得到了一个模型训练的结果:$f(x_1,x_2)=3x_1+4x_2+2$,需要根据新样本$(2,2,12)$来更新模型

  2. 采用增量学习的方式,即是在该模型参数上进行微调而不是重新开始训练

    • 即:$f(x_1,x_2)=3\times 2+4\times 2+2=16$,和真实值12差距为4
    • 采用梯度下降进行更新:$\omega_i^{t+1}=\omega_i^{t}-\eta \frac{\partial{L}}{\partial{\omega_i}}$
    • 采用均方误差为损失函数:$L=\frac{1}{2}(f(x_1,x_2)-y)^2$

      • 其求导为:$(f(x_1,x_2)-y)\frac{\partial{f(2,2)}}{\partial{\omega_i}}$
      • 求偏导得到:$\frac{\partial{f(2,2)}}{\partial{\omega_1}}=2$,$\frac{\partial{f(2,2)}}{\partial{\omega_2}}=2$,$\frac{\partial{f(2,2)}}{\partial{\omega_3}}=1$
      • 带入梯度下降公式得到$w_1=3-\eta·4·2=3-8\eta$,$w_2=4-\eta·4·2=4-8\eta$,$w_3=2-\eta·4·1=2-4\eta$
    • 用这些结合超参数$\eta$更新公式即可

二.概念

  • 允许在不重新训练整个模型的情况下,通过添加心的数据和标签来增强已经训练好的模型
  • 与Batch Learning相对的,可以在已经被训练好的情况下持续学习新知识
  • 用于解决模型训练的一个普遍缺陷:灾难性遗忘(catastrophic forgetting)

2.1 灾难性遗忘

  • 概念:一般的机器学习模型(尤其是基于反向传播的深度学习方法)在新任务上训练时,在旧任务上的表现通常会显著下降
  • 原因:传统模型假设数据分布是固定或平稳的,训练样本是独立同分布的,但是当新数据来的时候,训练数据的分布就是非平稳的,模型从非平稳的数据分布中持续不断地获取知识时,新知识会干扰旧知识,从而导致模型性能的快速下降,甚至完全覆盖或遗忘以前学习到的旧知识
  • 稳定性-可塑性困境(stability-plasticity dilemma):希望模型一方面必须表现出从新数据中整合新知识和提炼已有知识的能力(可塑性),另一方面又必须防止新输入对已有知识的显著干扰(稳定性)

2.2 增量学习

  • 类似持续学习、终生学习

  • 使用环境:在连续的数据流中训练模型,随着时间的推移,更多的数据逐渐可用,同时旧数据可能由于存储限制或隐私保护等原因而逐渐不可用,并且学习任务的类型和数量没有预定义(例如分类任务中的类别数)

  • 辨析增量学习和在线学习:

    • 前者通常要求每个样本只能使用一次,且数据全都来自于同一个任务,而增量学习是多任务的,但它允许在进入下一个任务之前多次处理当前任务的数据

  • 特点:

    1. 学习新知识的同时能够保留以前学习到的大部分知识,也就是模型在旧任务和新任务上均能表现良好

    2. 计算能力与内存应该随着类别数的增加固定或者缓慢增长,最理想的情况是一旦完成某一任务的学习,该任务的观测样本便被全部丢弃

    3. 模型可以从新任务和新数据中持续学习新知识,当新任务在不同时间出现,它都是可训练的

三.实现

  • 关于其他划分方式和不同类别的增量学习的优缺点对比可见:A Comprehensive Study of Class Incremental Learning Algorithms for Visual Tasks

3.1 基于正则化的增量学习

  • 通过给新任务的损失函数施加约束的方法来保护旧知识不被新知识覆盖
  • 不需要用旧数据来让模型复习已学习的任务
  • LwF :Learning without Forgetting (ECCV 2016)-里程碑之作

3.2 基于回放的增量学习

3.3 基于参数隔离的增量学习

:模糊聚类

  • 模糊聚类:跟聚类相比使用模糊集合的概念,允许数据点属于多个聚类,并且可以量化这种隶属关系
  • 常见的增量模糊聚类算法:增量模糊C均值聚类(Incremental Fuzzy C-means Clustering Algorithm,IFCM)

    • 基本思路是:每次只考虑新增加的数据,将新增加的数据与现有的聚类中心进行比较,更新聚类中心和隶属度矩阵。该算法通过增量更新聚类中心和隶属度矩阵来实现增量学习
  • 一般步骤: