利用LWF方法解决灾难性遗忘
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方法解决灾难性遗忘相关推荐
- 如何利用增量学习的方法来解决灾难性遗忘的问题?
增量学习是一种逐步学习新数据的方法,通过在新数据上更新模型而不是从头开始训练.这种方法在很大程度上可以缓解灾难性遗忘问题,因为它试图在学习新知识的同时保留已有知识.以下是一些使用增量学习解决灾难性遗忘 ...
- AI也有健忘症?英国41岁教授专访:解决灾难性遗忘
视学算法报道 编辑:Joey 好困 [导读]罗切斯特大学计算机科学家在持续学习领域的开创性研究,有望解决算法一直以来存在的灾难性遗忘问题. 如何实现持续学习,让AI不断片? 近日,来自罗切斯特 ...
- 如何解决灾难性遗忘和概念漂移这两个问题?
对于灾难性遗忘,解决方案通常包括增量学习.迁移学习.经验回放等.这些方法在许多场景下都能有效地缓解灾难性遗忘,从而使模型能够在学习新任务或新数据时保留先前学到的知识.然而,在某些复杂的场景中,如神经网 ...
- 谁来救救过拟合?透过现象看本质,如何利用正则化方法解决过拟合问题
前言 声明:后期原力计划活动期间的博文都会转入到对应的收费专栏. 博主后续会不断更新该领域的知识: 人工智能AI实战系列代码全解析 手把手教你ML机器学习算法源码全解析 有需要的小伙伴赶紧订阅吧. 在 ...
- 怎样缓解灾难性遗忘?持续学习最新综述三篇
本文转载自公众号"夕小瑶的卖萌屋",专业带逛互联网算法圈的神操作 ----->我是传送门 关注后,回复以下口令: 回复[789] :领取深度学习全栈手册(含NLP.CV海量综 ...
- 机器人操作持续学习论文(1)原文阅读与翻译——机器人操作中无灾难性遗忘的原语生成策略学习
Primitives Generation Policy Learning without Catastrophic Forgetting for Robotic Manipulation 1机器人操 ...
- NeurIPS 2021 | 通过寻找平坦最小值,克服小样本增量学习中的灾难性遗忘
©作者 | FlyingBug 单位 | 哈尔滨工业大学(深圳) 研究方向 | 小样本学习 写在篇首 本文分享的这篇论文是 NeurIPS 2021的一篇 Few-Shot 增量学习 (FSCIL) ...
- 神经网络的多任务学习方法,避免灾难性遗忘
神经网络非常擅长学习一件事.无论是下棋还是折叠蛋白质,只要有足够的数据和时间,神经网络都能取得惊人的效果.不幸的是,网络目前无法擅长一项以上的任务.你可以训练一个网络擅长某件事,但是一旦你试图教给网络 ...
- 论文速递:通过模拟大脑-解决深度学习中的灾难性遗忘
来源:混沌巡洋舰 灾难性遗忘指的是:不像人类,当深度学习模型被训练完成新的任务时,他们很快就会忘记以前学过的东西.8月13号的自然通讯论文Brain-inspired replay for conti ...
最新文章
- SpringBoot自定义参数验证器
- 从 2017 OpenStack Days China 看国内云计算的发展现状
- Flask服务部署与简单内网穿透
- HDU 1754线段树
- 服务器之select
- 正式发布 .Net2.0 大文件上传服务器控件
- 【报告分享】2020海外留学趋势报告.pdf(附下载链接)
- leetcode —— 字符串相关(28、344)
- java的核心类库_Java核心类库
- 小米手环6NFc支持Android,小米手环6支持nfc吗 小米手环6有没有nfc功能
- java软件工程师自我评价_JAVA工程师简历自我评价
- 关于iOS 报Command failed with exit 128: git错误额解决方案
- [研究生]你该如何“精读”一篇文章?文献管理与文献笔记:以VCNet为例
- 大数据技术学习带来的思考
- CentOS 8: No URLs in mirrorlist error
- opengl绘制卡通人物哆啦A梦
- python刷新cdn_使用Python解析阿里云CDN日志
- Spark的搭建及实现单词统计
- 三星Galaxy S22、三星Galaxy22+和三星Galaxy22 Ultra区别
- [智能硬件]是什么?智能硬件应用领域包括哪些?