草庐IT

ACL2022挖宝 CMR

51Ann 2023-03-28 原文

CMR

看一张比较有说服力的图(是师姐让我看的这个文章,她觉得对她的论文有用。我就开始看,然后把图直接pia给她,她说“好有说服力的一张图”)。

当我们离线训练好一个模型$f_0$之后,我们把它部署出去,当他遇到分布外的数据(out of distribution data)的时候,就会报错,产生一个$E_1$。然后我们就需要回来把这个模型更新,就得到我们的新模型$f_1$,然后再把它部署上线;它又会遇到分布外的一些数据,然后会报错产生一个$E_2$ ,然后我们再把这个模型拿回来再更新,得到一个$f_2$ 。如此循环往复。

CMR 方法 旨在通过在不发生灾难性遗忘的情况下改进 $f_t$ 来修复错误情况。

关于持续学习和交代一下遗忘的概念:

方法

基本模型:

使用 BART-base 作为基础模型。

注意,文中的任务目标不是用上游数据集 $D$ 离线训练一个完美的上游模型 $f_0$,而是专注于可以不断改进给定上游模型的 CMR 方法。

持续性微调 Continual fine-tuning:

最直接的方法是始终使用普通优化器(例如Adam )在$E_t$ 上以较小的学习率微调 $f_{t−1}$ 模型几个 epoch,目标是在 $E_t$ 上最小化损失 $L_{Error(t)}$得到微调模型 $f_t$。这样的精炼模型 $f_t$ 应该能够为这些已知错误输出正确的输出。

但是这种方法可能会在这些错误数据上过拟合,从而导致忘记了以前获得的知识,也就是灾难性遗忘。

用到的正则化方法

结合上图,接下来我们介绍几种正则化方法。

防止遗忘的一个常见解决方案是在损失中添加一个时间正则化项以进行连续微调:$L_{total(t) }= L_{Error (t) }+ λL_{Reg (t)}$,从而限制从 $f_{t−1}$ 到 $f_t$ 的参数变化,以避免产生过拟合。

  • Online L2Reg
计算参数之间的 L2 距离使用直观的正则化项。 $$ \mathcal{L}{\mathrm{L} 2 \mathrm{Reg}}(t)=\sum{i}\left(\theta_{t}^{i}-\theta_{t-1}^{i}\right)^{2} $$ 其中$θ_t$ 是 $f_t$ 的参数。

这个正则化项通过对每个参数变化施加惩罚来缓解遗忘问题。

  • Online EWC
弹性权重合并 (Kirkpatrick et al., 2017) 是持续学习(continual learning)的典型正则化方法。和L2正则化不同,L2正则化对每个参数变化给予相等的惩罚,EWC产生加权惩罚。使得对先前任务更重要的参数将具有更大的惩罚权重,引导参数变化找到重叠空间,使先前的知识和新知识都可以的存储在参数中。特别是,它有效地估计了 Fisher 信息矩阵 $F ^{(t)}{ ii}$ 并将它们用于合并加权惩罚: $$ \mathcal{L}{\mathrm{EWC}}(t)=\sum_{j=1}^{t-1}\left(\frac{1}{2} \sum_{i} F_{i i}^{(j)}\left(\theta_{t}^{i}-\theta_{t-1}^{i}\right)^{2}\right) $$ 我们在运算中维护一个值来保存 $F_{ii}$ 总和,对 EWC 扩展,可以用来避免模型调优过程中的计算成本增长。

Replay 方法

持续学习中用到的另一种方法是Replay。

Experience replay

是一种简单而有效的重放方法,它将先前的样本存储到内存模块$M$中,M会随着时间发展不断变大。然后,我们定期(每 $k$ 个时间步长)对$M$的一小部分进行采样得到 $R_t$,作为模型细化的额外训练样本。它使用两个阶段的过程:在 $R_t$ 上微调 $f_{t-1}$ 以获得,然后在 $E_t$ 上微调 $f'{t-1}$ 以获得 $f{t}$。

Maximally interfered replay (MIR)

MIR 不是从 $M$ 中随机选择 $R_t$ ,而是以当前的 $f_{t-1}$ 和 $E_t$ 为条件,选择replay最容易被模型遗忘的样本。MIR从$M$中采样出一个小一点的样本候选池$C$, $C ⊂ M$ ,然后按照“干扰分数”对 $C $中的样本进行排名。最后,MIR 的 $R_t$ 是 $C$ 中得分最高的子集。

在这里加了一个步骤,需要计算干扰分数,我们首先在 $E_t$ 上微调 $f_{t-1}$ 以获得一个虚拟模型 $\hat{f_t}$。然后,我们计算 C 中每个样本的 $f_{t-1}$ 和 $\hat{f_t}$ 的损失,以获得干扰分数(即损失增量): $$ \operatorname{score}\left(x_{i}, y_{i}\right)=: \operatorname{loss}\left(\hat{f}{t}\left(x{i}\right), y_{i}\right)-\operatorname{loss}\left(f_{t-1}\left(x_{i}\right), y_{i}\right) $$

MaxLoss replay

这个是作者自创的replay方法。

  • Accelerating deep learning by focusing on the biggest losers.
  • Ordered SGD: A new stochastic optimization framework for empirical risk minimization.
上边两篇文章表明使用损失最大的样本进行学习可以提高学习效率,因此通过将MIR中的评分函数重新定义为$\operatorname{score}^{\prime}\left(x_{i}, y_{i}\right)=: \operatorname{loss}\left(\hat{f}{t}\left(x{i}\right), y_{i}\right)$,并将其称为 MaxLoss,它采用虚拟模型 $\hat{f_t}$ 中损失最大的样本(而不是 MIR 中的最大增量)。

CMR 的扩展:

  1. Bi-Memory: 在 CMR 中维护两种类型的知识:

    • 上游任务的知识$D$
    • 模型后期遇到的错误 $E_t$
    考虑到上游数据D远大于后期模型实践中遇到的错误 $E_t$ ,作者认为在其他连续学习问题中使用单个内存模块是不合理的。因此,文章中使用两个独立的内存模块 $M_U$ 和 $M_O$,其中上游任务的样本 是 $M_U=D$ ,后期错误积累 $M_O$ 通过添加 $E_t$ 不断扩大。

  2. Mixed-Tuning: 我们选择混合 $R_t$ 和 $E_t$ 来微调 $f_{t-1}$ ,而不是遵循使用 $R_t$的两阶段方法(在 $R_t$ 上微调 $f_{t-1}$ 以获得,然后在 $E_t$ 上微调 $f'{t-1}$ 以获得 $f{t}$)。

评价指标

模型采用了5种评价指标:

  • Error-fixing rates (EFR) 1 $$ \boldsymbol{\operatorname { E F R }}(t)=: \boldsymbol{\operatorname { A c c }}\left(f_{t}, E_{t}\right)=: \frac{\left|\left{(x, y) \in E_{t} \mid f_{t}(x)=y\right}\right|}{\left|E_{t}\right|} . $$

  • Knowledge retention (UKR&OKR) 2 $$ \mathbf{U K R}(t)=: \operatorname{Acc}\left(f_{t}, D\right)\\mathbf{O K R}(t)=: \operatorname{Acc}\left(f_{t}, Q_{<t}\right) $$

  • Cumulative success rates (CSR) 1 $$ \operatorname{CSR}(t)=: 1-\left|E_{<t}\right| /\left|Q_{<t}\right| $$

  • Cumulative success rates (CSR) 1 $$ \mathbf{K G}(t)=: \operatorname{Acc}\left(f_{t}, H\right) $$

结果可视化

有关ACL2022挖宝 CMR的更多相关文章

  1. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  2. 映宇宙2022年营收63亿元:同比下降三成,毛利率提升4.3个百分点 - 2

    3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升

  3. IDEA 2022 创建 Spring Boot 项目详解 - 2

    如何用IDEA2022创建并初始化一个SpringBoot项目?目录如何用IDEA2022创建并初始化一个SpringBoot项目?0. 环境说明1.  创建SpringBoot项目 2.编写初始化代码0. 环境说明IDEA2022.3.1JDK1.8SpringBoot1.  创建SpringBoot项目        打开IDEA,选择NewProject创建项目。        填写项目名称、项目构建方式、jdk版本,按需要修改项目文件路径等信息。        选择springboot版本以及需要的包,此处只选择了springweb。        此处需特别注意,若你使用的是jdk1

  4. 2022年10月23日周赛ZZULIOJ - 2

    文章目录问题B:芝华士威士忌和他的小猫咪们代码&注释问题C:愿我的弹雨能熄灭你们的痛苦代码注释问题D:猜糖果游戏代码注释问题E:有趣的次方代码注释问题F:这是一个简单题代码&注释问题G:打印矩阵代码注释问题H:scz的简单考验代码注释问题I:完美区间代码&注释问题J:是狂热的小迷妹一枚吖~代码&注释2022年10月23日周赛ZZULIOJ问题B:芝华士威士忌和他的小猫咪们时间限制:1Sec内存限制:128MB题目描述芝华士威士忌很喜欢带着他的猫咪们一块跑着玩。但是小猫咪们很懒,只有在离他y米以内才愿意和他一块跑。这天他在坐标为x的位置,他想和他的猫咪们一块跑着玩。有n个小猫咪,第i个小猫咪在坐

  5. 【华为OD机试真题 java、python、c++】荒地电站建设【2022 Q4 100分】(100%通过+复盘思路) - 2

    代码请进行一定修改后使用,本代码保证100%通过率,本题目提供了java、python、c++三种代码。复盘思路在文章的最后题目描述祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源对每平方公里的土地进行了发电评估,其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益。输入描述第一行输入为调研的地区长,宽,以及准备建设的电站【长宽相等,为正方形】的边长最低要求的发电量之后每行为

  6. 玩客云刷机(2022-3-19亲测) - 2

    https://cloud.189.cn/t/BJbYreYbmUj2(访问码:djz6)(网盘2022-4-1更新)一、刷入armbian。1.1使用AmlBurnTool软件烧录首选底包至固件。烧录完成后断开玩客云电源备用。(靠近hdmi的那个口子。)1.2使用WIn32diskimager软件将emmc固件写入U盘。1.3写入成功后,先将U盘插入玩客云靠近网线接口端的USB口,再接入电源。玩客云通电后指示灯会先亮绿灯,再亮蓝灯,红蓝闪烁,最后蓝灯常亮。等到确定蓝灯常亮后,再拔掉U盘、电源。(最好蓝灯常亮后,启动一次玩客云,看看ssh是否正常。)1.4使用WIn32diskimager写入

  7. ruby-on-rails - 为 Rails 应用程序实现 ACL 的最佳方式是什么? - 2

    我只是想比较在Rails中实现ACL时使用的不同解决方案。 最佳答案 我使用授权插件(由BillKatz创建):Rolescanbeauthorizedfortheentireapplication,amodelclass,oraspecificobject.Thepluginprovidesawayofcheckingauthorizationattheclassorinstancemethodlevelusingpermitandpermit?methods.Italsoprovidesenglish-likedynamicme

  8. AiBote 2022 新研发的自动化框架,支持 Android 和 Windows 系统。速度非常快 - 2

    Ai-Bot基于流行的Node.js和JavaScript语言的一款新自动化框架,支持Windows和Android自动化。1、Windowsxpath元素定位算法支持支持Windows应用、.NET、WPF、Qt、Java和Electron客户端程序和ie、edgechrome浏览器2、Android支持原生APP和H5界面,元素定位速度是appium十倍,无线远程自动化操作多台安卓设备3、基于opencv图色算法,支持找图和多点找色,1080*2340全分辨率找图50MS以内4、内置免费OCR人工智能技术,无限制获取图片文字和找字功能。5、框架协议开源,除官方node.jsSDK外,用户可

  9. ruby-on-rails - 将 ACL 设置为 public_read 的文件上传到 AWS S3 - 2

    在我的Rails应用中,我在创建时将客户RMA运输标签保存到S3存储桶中。我刚刚更新到aws-sdkgem的V2,现在我设置ACL的代码不起作用。在V1.X中有效的代码:#SaveslabeltoS3buckets3=AWS::S3.newobj=s3.buckets[ENV['S3_BUCKET_NAME']].objects["#{shippinglabel_filename}"]obj.write(open(label.label('pdf').postage_label.label_pdf_url,'rb'),:acl=>:public_read).write似乎已被弃用,所以

  10. 考勤刷卡 最大和 简单 蓝桥杯省赛 2022 - 2

    问题描述小蓝负责一个公司的考勤系统,他每天都需要根据员工刷卡的情况来确定每个员工是否到岗。当员工刷卡时,会在后台留下一条记录,包括刷卡的时间和员工编号,只要在一天中员工刷过一次卡,就认为他到岗了。现在小蓝导出了一天中所有员工的刷卡记录,请将所有到岗员工的员工编号列出。输入格式输入的第一行包含一个正整数n,表示一天中所有员工的刷卡记录的条数。接下来n行,每行包含一条刷卡记录,每条刷卡记录的格式为:HH:MM:SSID其中HH:MM:SS表示刷卡时间,HH为一个0到23之间的两位十进制整数(可能含前导0)表示时,MM为一个0到59之间的两位十进制整数(可能含前导0)表示分,SS为一个0到59之间的

随机推荐