Z. Li and D. Hoiem, "Learning without Forgetting," in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 40, no. 12, pp. 2935-2947, 1 Dec. 2018, doi: 10.1109/TPAMI.2017.2773081.

训练策略

Learning without Forgetting 是一种较早提出的持续学习方法 ,它的训练策略不同于我们常见的Fine-tune、Extraction和Joint Training。由下图可以表示他们的差异性:

特征提取在新数据集表现不好,微调会影响旧数据集,联合训练数据集太麻烦,所以他们都不太行。文章提出的LWF方法据说可以解决这个困境。

训练细节

简而言之,LWF方法首先定义两个网络并且都是基于Alexnet预训练的,分别用于旧模型(loss_old)与新模型(loss2_new),旧模型不进行参数更新,是一个工具人,新模型参与参数更新(方式为:建立一个全新的全连接层并进行参数初始化,然后给予FC提前训练的权重,接着替代新模型last_FC,最后进行训练)

#全连接层更新替换方式
new_fc = nn.Linear(in_features, new_out_features)
kaiming_normal_init(new_fc.weight)
new_fc.weight.data[:out_features] = weight
new_fc.bias.data[:out_features] = bias
# Replace the old FC layer
net.classifier[6] = new_fc

本质上感觉就是固定的简易联合训练.....不过LWF很好的诠释了持续学习的需求,展现不变性与应变性。

#损失函数部分with torch.no_grad():for batch_idx, (inputs, targets) in enumerate(testloader):inputs, targets = inputs.to(device), targets.to(device)targets += out_featuresoutputs = net(inputs)soft_target = net11(inputs)loss1 = criterion(outputs, targets)loss = loss1outputs_S = F.softmax(outputs[:, :out_features] / T, dim=1)outputs_T = F.softmax(soft_target[:, :out_features] / T, dim=1)loss2 = outputs_T.mul(-1 * torch.log(outputs_S))loss2 = loss2.sum(1)loss2 = loss2.mean() * T * Tloss = loss1 * alpha + loss2 * (1 - alph#a)#FC参数初始化部分
def kaiming_normal_init(m):if isinstance(m, nn.Conv2d):nn.init.kaiming_normal_(m.weight, nonlinearity='relu')elif isinstance(m, nn.Linear):nn.init.kaiming_normal_(m.weight, nonlinearity='sigmoid')

利用LWF方法解决灾难性遗忘相关推荐

  1. 如何利用增量学习的方法来解决灾难性遗忘的问题?

    增量学习是一种逐步学习新数据的方法,通过在新数据上更新模型而不是从头开始训练.这种方法在很大程度上可以缓解灾难性遗忘问题,因为它试图在学习新知识的同时保留已有知识.以下是一些使用增量学习解决灾难性遗忘 ...

  2. AI也有健忘症?英国41岁教授专访:解决灾难性遗忘

      视学算法报道   编辑:Joey 好困 [导读]罗切斯特大学计算机科学家在持续学习领域的开创性研究,有望解决算法一直以来存在的灾难性遗忘问题. 如何实现持续学习,让AI不断片? 近日,来自罗切斯特 ...

  3. 如何解决灾难性遗忘和概念漂移这两个问题?

    对于灾难性遗忘,解决方案通常包括增量学习.迁移学习.经验回放等.这些方法在许多场景下都能有效地缓解灾难性遗忘,从而使模型能够在学习新任务或新数据时保留先前学到的知识.然而,在某些复杂的场景中,如神经网 ...

  4. 谁来救救过拟合?透过现象看本质,如何利用正则化方法解决过拟合问题

    前言 声明:后期原力计划活动期间的博文都会转入到对应的收费专栏. 博主后续会不断更新该领域的知识: 人工智能AI实战系列代码全解析 手把手教你ML机器学习算法源码全解析 有需要的小伙伴赶紧订阅吧. 在 ...

  5. 怎样缓解灾难性遗忘?持续学习最新综述三篇

    本文转载自公众号"夕小瑶的卖萌屋",专业带逛互联网算法圈的神操作 ----->我是传送门 关注后,回复以下口令: 回复[789] :领取深度学习全栈手册(含NLP.CV海量综 ...

  6. 机器人操作持续学习论文(1)原文阅读与翻译——机器人操作中无灾难性遗忘的原语生成策略学习

    Primitives Generation Policy Learning without Catastrophic Forgetting for Robotic Manipulation 1机器人操 ...

  7. NeurIPS 2021 | 通过寻找平坦最小值,克服小样本增量学习中的灾难性遗忘

    ©作者 | FlyingBug 单位 | 哈尔滨工业大学(深圳) 研究方向 | 小样本学习 写在篇首 本文分享的这篇论文是 NeurIPS 2021的一篇 Few-Shot 增量学习 (FSCIL) ...

  8. 神经网络的多任务学习方法,避免灾难性遗忘

    神经网络非常擅长学习一件事.无论是下棋还是折叠蛋白质,只要有足够的数据和时间,神经网络都能取得惊人的效果.不幸的是,网络目前无法擅长一项以上的任务.你可以训练一个网络擅长某件事,但是一旦你试图教给网络 ...

  9. 论文速递:通过模拟大脑-解决深度学习中的灾难性遗忘

    来源:混沌巡洋舰 灾难性遗忘指的是:不像人类,当深度学习模型被训练完成新的任务时,他们很快就会忘记以前学过的东西.8月13号的自然通讯论文Brain-inspired replay for conti ...

最新文章

  1. SpringBoot自定义参数验证器
  2. 从 2017 OpenStack Days China 看国内云计算的发展现状
  3. Flask服务部署与简单内网穿透
  4. HDU 1754线段树
  5. 服务器之select
  6. 正式发布 .Net2.0 大文件上传服务器控件
  7. 【报告分享】2020海外留学趋势报告.pdf(附下载链接)
  8. leetcode —— 字符串相关(28、344)
  9. java的核心类库_Java核心类库
  10. 小米手环6NFc支持Android,小米手环6支持nfc吗 小米手环6有没有nfc功能
  11. java软件工程师自我评价_JAVA工程师简历自我评价
  12. 关于iOS 报Command failed with exit 128: git错误额解决方案
  13. [研究生]你该如何“精读”一篇文章?文献管理与文献笔记:以VCNet为例
  14. 大数据技术学习带来的思考
  15. CentOS 8: No URLs in mirrorlist error
  16. opengl绘制卡通人物哆啦A梦
  17. python刷新cdn_使用Python解析阿里云CDN日志
  18. Spark的搭建及实现单词统计
  19. 三星Galaxy S22、三星Galaxy22+和三星Galaxy22 Ultra区别
  20. [智能硬件]是什么?智能硬件应用领域包括哪些?

热门文章

  1. ant design pro侧边栏子菜单添加不成功的解决办法
  2. 2419286-92-1,Sulfo-Cy5.5 NHS ester,磺酸基Cyanine5.5-活性酯,用于标记抗体
  3. RichTextbox 操作
  4. QQ技巧一,群发邮件
  5. 基于python实现读取区块信息
  6. 工具篇:搜索工具 ag
  7. Mybatis 的foreach标签 1
  8. (萌新笔记)C++与C的不同
  9. 菜鸟裹裹给快递员发福利:万元信用贷 500万激励金红包
  10. Git提交无法检测到邮箱问题!