Dynamic memory to alleviate catastrophic forgetting in continuous learning settings

Dynamic memory to alleviate catastrophic forgetting in continuous learning settings

冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲!

一、总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、翻译

0. 摘要

abstract:
在医学成像中,技术进步或诊断程序的变化导致图像外观的连续变化。 扫描仪制造商,重建内核,剂量,其他特定于协议的设置或造影剂的管理都是影响图像内容的示例,这些图像内容与扫描的生物学无关。 这样的域和任务偏移使模型随着时间的过去而过时,限制了机器学习算法在临床例程中的适用性。在这里,我们通过调整模型以适应源域中看不见的变化,同时抵消灾难性的遗忘效应,从而解决了连续学习场景中的数据转移问题。我们的方法使用动态内存,以方便演练不同的训练数据子集,以减轻遗忘。我们评估了我们的方法,通过两种不同的扫描仪协议和合成分类任务获得的常规临床CT数据。 实验表明,动态内存在具有多个数据移位的环境中对抗灾难性遗忘,而不需要明确知道这些移位何时发生。

1. 引言

introduction:
在临床实践中,尽管具有相同的基础生物学,但医学图像是通过不断变化的策略,协议,扫描仪硬件或设置产生的,从而导致扫描的视觉外观不同。 在大多数情况下,这种视觉外观变化对临床医生而言是直觉的,并且不会削弱他们评估扫描的能力。 但是,当数据分布发生变化时,基于机器学习的方法的性能可能会大大降低。 持续学习通过在新情况下顺序更新模型,使模型适应变化的数据和新任务。
这些案例的ground truth标签可以例如通过纠正性标签获得。 然而,灾难性的遗忘是影响持续学习方法的主要不良现象。即当针对新任务或不同的数据分布持续更新模型时,模型性能将在先前的任务上降低。 减轻灾难性遗忘是持续学习的主要挑战之一。
在这里,我们为新的数据顺序可用于模型训练的情况提出了一种方法。我们旨在利用此类数据流来频繁更新现有模型,而无需保持整个数据可用。我们假设一个现实世界的临床环境,随着时间的推移,视觉域的变化和分类目标的出现可能会逐渐发生,并且关于此类数据最终变化的信息对于持续学习系统而言是不可用的。图1说明了方案和实验设置。 训练有素的模型(基本模型)已经过训练,可以很好地完成某些分类任务。 随后,连续数据流用于更新模型,以了解在给定新数据的情况下初始任务的变化。 该模型应在新数据上变得准确,同时在以前技术产生的数据上保持准确。 因此,然后在所有任务上评估最终模型,以评估灾难性遗忘的影响和分类性能。 请注意,此处我们使用“任务”一词来表示对同一目标但移动的视觉域的检测,而不是其他目标类别。

相关工作

related work:
存在各种方法组来解决随着时间的推移连续更新机器学习模型的问题,例如连续学习,连续领域自适应或主动学习。 他们在关于问题设置,可用数据和所需监督级别的相似但不同的假设下进行操作。 例如,连续域自适应假设要移动新数据,但与先前数据紧密相关。 持续学习不对域迁移做出任何假设,并且不限于在新数据中执行的特定任务(例如增量学习)。 主动学习的特点是自动选择对监督有益的示例。 在这项工作中,我们提出了一种连续学习技术,该技术也可以归类为有监督的连续域自适应方法。
已经提出了各种连续学习的方法,以减轻顺序学习多个任务的情况下的灾难性遗忘。 在网络中保留先前知识的一种流行方法是弹性权重合并(EWC)。 EWC是一种正则化技术,旨在约束模型参数,这些参数对于训练新任务期间执行先前任务至关重要。已有其他代替方法为当添加新信息[11]时,通过演练过去的示例[8]或代理信息(伪行为)[10],尝试克服灾难性的遗忘。在医学成像领域,持续学习已被证明可以减少分割和分类任务中的灾难性遗忘。Karani等提出了特定领域的批处理规范层,以适应新的领域(不同的MR协议),同时学习各种大脑区域的分割。Baweja等应用EWC顺序学习正常的大脑结构和白质病变分割。 Ravishankar提出了一种假排练技术和针对气胸分类的特定任务dense layers训练。这些当前方法期望有关训练示例所属领域的信息可用于学习系统。 在现实世界中的医学成像数据中,此类信息可能在图像级别不可用(例如,治疗策略的更改或跨部门的不同硬件更新)。 同时,协议或扫描仪制造商的更改可能不会自动导致模型性能下降,并且将每个协议视为一个新的域可能会带来不利影响,例如过度拟合。

贡献

contribution:
我们提出了一种持续学习连续或反复变化的领域的方法。 这与大多数以前的将更新视为顺序添加明确指定的任务的方法形成对比。 与现有的排练方法相反,我们提出了一种自动推断数据移位而无需明确知识的技术。 为此,该方法维护了先前看到的示例的不同内存,这些示例是基于网络中的高级别表示动态更新的。

2.方法

method:
我们使用新的训练数据不断更新已训练模型的参数。 我们的方法组合了这些训练数据,以捕获新颖的数据特征,同时维持整个训练语料库的多样性。 它从先前看到的数据(动态内存M)和新示例(输入迷你批处理B)中选择示例,以形成用于模型更新的训练数据(训练迷你批处理T)。
我们的方法是一种排练方法,用于应对持续学习中的灾难性遗忘。 我们采用固定大小的M的动态内存(DM)
M = { < m 1 , n 1 > , . . . , < m M , n M > } M=\{<m_1,n_1>,...,<m_M,n_M>\} M={<m1,n1>,...,<mM,nM>}
其中包含图像标签对 < m , n > <m,n> <m,n>,它们在连续训练期间被存储并最终被替换。为了减轻灾难性的遗忘,在每个更新步骤中都会使用一部分M的案例进行排练。至关重要的是,M的多样性代表了所有任务的视觉变化,即使没有关于训练示例的任务标签也是如此。由于M的大小是固定的,所以这种方法的最关键步骤是确定将哪些样本保留在M中,以及将哪些样本替换为新样本。为此,我们基于以下规则定义了内存更新策略:(1)每个新case将会被储存在memory中(2)一个新的case将只会替代memory中同类别的case(3)memory中将被替代的case根据高级度量将是与替代case非常接近。规则1允许内存动态地适应变化。 规则2防止内存中的类不平衡,规则3防止在视觉上较远的情况下替换以前的情况。规则3中使用的度量很关键,因为它可以确保将先前任务的case保存在memory中,并且不会随着时间的流逝而完全替换掉。 我们基于格拉姆矩阵 G l ∈ R N l × N l G^l\in R^{N_l\times N_l} GlRNl×Nl定义一个高级度量,其中 N l N_l Nl是第 l l l层中特征图的数量。 G i j l ( x ) G_{ij}^l(x) Gijl(x)定义为给定样本图像 x x x的层 l l l中两个特征图 i i i j j j的矢量化激活 f i l ( x ) f_{il}(x) fil(x) f j l ( x ) f_{jl}(x) fjl(x)之间的内积 G i j l ( x ) = 1 N l M l f i l ( x ) T f j l ( x ) G_{ij}^l(x)=\frac{1}{N_lM_l}f_{il}(x)^Tf_{jl}(x) Gijl(x)=NlMl1fil(x)Tfjl(x)其中, M l M_l Ml表示矢量化特征图中的元素数量(宽度×高度)。对于一组卷积层 L L L,我们将两个图像 x x x y y y之间的克距离 δ ( x , y ) \delta(x,y) δ(x,y)定义为: δ ( x , y ) = ∑ l ∈ L 1 N l 2 ∑ i = 1 N l ∑ j = 1 N l ( G i j l ( x ) − G i j l ( y ) ) 2 \delta(x,y)=\sum_{l\in L}\frac{1}{N_l^2}\sum_{i=1}^{N_l}\sum_{j=1}^{N_l}(G_{ij}^l(x)-G_{ij}^l(y))^2 δ(x,y)=lLNl21i=1Nlj=1Nl(Gijl(x)Gijl(y))2
使用格拉姆矩阵的基本原理是,格拉姆矩阵对高级样式信息进行编码在这里,我们对这种样式信息感兴趣,不仅在内容方面而且在不同的视觉外观方面都保持多样化的记忆。相似的格拉姆距离已经被应用在风格迁移比较两张自然图像等计算机视觉方法中了。
在连续训练过程中,在从数据流中获取B个序列case(图像b和标签c) B = { < b 1 , c 1 > , . . . , < b B , c B > } B=\{<b_1,c_1>,...,<b_B,c_B>\} B={<b1,c1>,...,<bB,cB>}之后执行内存更新。依次地,B的每个元素替换M的元素。更正式地讲,给定输入样本 { < b i , c i > } \{<b_i,c_i>\} {<bi,ci>},该样本将用索引替换M中的元素 ξ ( i ) = arg min ⁡ j δ ( b i , m j ) ∣ c i = n j , j ∈ { 1 , . . . , M } \xi(i)=\argmin_j\delta(b_i,m_j)|c_i=n_j,j\in\{1,...,M\} ξ(i)=jargminδ(bi,mj)ci=nj,j{1,...,M}在连续训练的初始阶段,存储器中填充了数据流的元素。 只有达到一个类在内存中的期望比例后,才应用替换策略。在内存更新后,通过合并大小为T的training-mini-batch T = { < t 1 , u 1 > , . . . , < t T , u T > } T=\{<t_1,u_1>,...,<t_T,u_T>\} T={<t1,u1>,...,<tT,uT>}来完成模型更新。模型预测错误标签的B中每个错误分类元素被添加到T中,额外的情况从M随机抽取,直到|T|=T。最后,使用training-mini-batch T进行正向和反向传递以更新模型的参数。

3. 实验和结果

experiments and results:
我们使用来自临床常规的医学图像在现实的环境中评估和研究了DM方法。 为此,我们收集了第3.1节中描述的代表性数据集。 基于这些数据,我们设计了一个具有三个任务(A,B和C)的学习场景,其中,随着时间的推移,输入数据的变化会不断更新在任务A上预先训练的分类器。 图1说明了学习方案,数据和实验设置。 在连续数据集中,我们创建了两个偏移,(1)扫描仪协议之间的模态偏移,以及(2)通过将目标结构从高强度更改为低强度来进行目标偏移。

3.1 数据集

dataset:
总共,我们从个别研究中收集了8883份胸部CT扫描,每一份都在分割肺的中心提取了一片轴向切片。每次扫描都是在西门子扫描仪上进行的,其中B3重构核和3mm切片厚度(B3/3)或B6重构核和1mm切片厚度(B6/1)。
在这里插入图片描述
我们收集了3784例B3/3协议和5099例B6/1协议。我们在50%的案例中以猫的形式在随机位置,旋转和缩放比例上合成一个目标结构(另请参见图1)。通过在200到400亨斯菲尔德单位(HU)之间随机增加一个偏移量来雕刻高强度目标结构,并在200到400 HU之间减去一个低强度目标结构。 选择了一个合成目标以促进数据集的收集,并创建一个没有标签噪音的数据集。 表1列出了收集的数据,并显示了划分为基础,连续,验证和测试划分以及分层为三个任务。高强度目标结构是通过随机添加200到400个Hounsfield单元(HU)之间的偏移量和低强度目标结构通过减去200到400HU来雕刻的。选择一个合成目标是为了方便数据集的收集,以及创建一个没有标签噪声的数据集。 表1列出了收集的数据,并显示了划分为基础、连续、验证和测试拆分以及分层为三个任务。

3.2 实验

experiments:
我们通过微调经过预先训练的Res-Net50 模型来创建基本模型(任务A)。 给定此基本模型,我们使用不同的策略在连续训练集上不断更新模型参数:
naive:通过对数据流进行顺序训练而作为基线方法,而没有任何针对灾难性遗忘的特定策略
EWC: EWC根据费雪矩阵来调整对于先前任务至关重要的权重。 我们在基础集(任务A)上训练后计算了费雪矩阵,以便在进一步更新中,对该任务重要的权重进行调整。
EWC-fBN:在初步实验中,我们发现EWC不适合在发生模态转换的情况下使用批处理规范层的网络。 其原因是,EWC的正则化不会影响批范数参数(均值和方差),并且这些参数会不断被新数据更新。 因此,为量化此影响,我们显示了在基础训练完成后固定批处理规范层的结果。
DM:本文描述的方法。 所有实验的input mini batch size B和training mini batch size T已设置为8。 除非另有说明,否则已使用32的内存大小M计算了结果。已在覆盖多个比例尺的整个网络的特征图上计算了gram矩阵。 具体来说,我们在增加通道数量之前使用了最后卷积层的特征图。 也就是说,对于Res-Net50,我们在具有256、512、1024和2048个特征的四个地图上计算矩阵。
除了连续场景外,我们还以传统的基于时期的方式训练了上限网络,一次使用了所有训练数据(完全训练)。 所有培训过程均运行了五次,以评估变异性和鲁棒性,并对结果进行平均。所有模型均使用Adam优化器和二进制交叉熵作为分类任务的损失函数进行训练。
通过上述方法,我们通过每30次迭代计算验证集上的分类精度,研究了训练过程中的动态(dynamics)。
分别在每个任务的测试集上训练后,计算定量结果。 使用[8]中定义的分类精度,后向传输(BWT)和前向传输(FWT)。 BWT和FWT分别衡量学习新任务对先前学习的任务和未来任务的性能的影响。 因此,较大的BWT和FWT值是可取的。 具体而言,负BWT可以量化灾难性遗忘。
研究了mem大小M在训练过程中和训练后对我们方法性能的影响。 我们纳入了将M设置为16、32、64、80、128和160的实验。

3.3 结果

results:
训练过程中的动态如图2所示。正如所料,naive显示出在引入新任务之后,任务A(准确度从0.91降至0.51)和B(准确度从0.93降至0.70)的灾难性遗忘。 如果没有任何方法可以抵消遗忘,则在对模型进行顺序更新后,先前任务的知识就会丢失。 在将任务B和C数据引入数据流之后,EWC对任务A表现出灾难性的遗忘(0.92至0.54)。 从任务A到B的转变是一种模态转变,网络的批处理规范层适应于第二种模态,并且丢失了有关第一种模态的知识。 尽管EWC保护了对于任务A很重要的权重,但是在修改批处理规范层之后,这些权重就没有用了。EWC-fBN通过将批处理规范层与与任务A相关的权重固定在一起来避免此问题。在此设置中,可以将目标转移到任务C.后观察到任务B的遗忘效果(准确性从0.90降到0.70)。 这种影响是由于EWC要求知道何时发生转移。 因此,在我们的方案中,EWC仅调整对任务A重要的权重。如前所述,DM通过动态地适应变化的数据而没有此要求。 使用DM方法时,只会出现轻微的遗忘,并且在训练后,所有三个任务的性能均达到了约0.85的可比性能。
在这里插入图片描述

定量结果显示在表2中。naive的方法(-0.32)和EWC(-0.20)的大负BWT值表明这些方法遭受灾难性的遗忘。 使用EWC-fBN可以减轻对任务A的遗忘,但是当引入任务C时,该模型会忘记对任务B的部分知识(图2中可见)。 DM和EWC-fBN都具有可比的后向和前向传输功能。 表2中的准确度值表明DM在所有任务上的表现均相当好,而其他方法则显示出忘记了任务A(naive和EWC)和任务B(naive和EWC-fBN)的迹象。
在这里插入图片描述
训练期间记忆体大小的影响如图3a所示。对于16的小M,适应新任务的速度很快。但是,这种有限的存储器只能存储有限的数据可变性,从而导致灾难性的遗忘效应。增加内存大小会减少灾难性的遗忘效果,但会减慢对新任务的适应。对于研究的两个最大尺寸,尤其是在目标移动(任务C)之后,128和160的适应速度较慢。原因是,任务A的更多元素存储在内存中,并且需要进行更多迭代才能用任务C的样本填充内存。这降低了绘制任务C的元素的可能性,从而降低了任务的训练速度C.出于同样的原因,随着内存容量的增加,任务A的准确性也会提高,因为第一个任务的示例在网络上更为常见。结果表明,设置内存大小是在更快地适应新数据和更多灾难性遗忘之间的权衡。在我们的设置中,训练对M分别为32、64和80的效果很好。考虑到内存大小在16至160之间,设置M = 32导致验证集的最高平均准确度为0.87(图3b)。因此,我们使用此模型与测试集上的其他连续学习方法进行比较。
在这里插入图片描述

4. 结论

conclusion:
在这里,我们提出了一种持续的学习方法来应对由于协议,参数设置或临床环境中不同扫描仪的变化而引起的模态和任务转移。 我们表明,保持对各种训练样本的记忆可以减轻深度学习分类模型的灾难性遗忘。 我们提出了一种内存更新策略,该策略能够自动处理数据分布中的偏移,而无需有关域成员身份以及发生偏移的瞬间的明确信息。

三、纸质版材料

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

The error "too many open files" typically occurs when a system reaches its limit for opening files simultaneously. This issue is commonly seen in web servers when there are too many connections to upstream servers or when there is a high volume of incoming requests. To resolve this issue, you can try the following steps: 1. Increase the file limit: You can increase the maximum number of open files allowed by the system. This can be done by modifying the `ulimit` settings. For example, you can run the command `ulimit -n 4096` to set the maximum number of open files to 4096. 2. Optimize your code: Check if there are any file handles that are not being properly closed after use. Make sure you close connections to upstream servers or release any file resources that are no longer needed. 3. Check resource usage: Monitor the resource usage of your server, including CPU, memory, and disk I/O. High resource utilization can contribute to the "too many open files" error. Optimize your code and consider scaling your infrastructure if necessary. 4. Configure connection pooling: If your application connects to upstream servers frequently, consider implementing connection pooling. This allows you to reuse existing connections instead of creating new ones for each request, reducing the number of open files. 5. Review server configuration: Check your web server configuration (e.g., Nginx, Apache) and ensure it is properly tuned for high traffic and handle a large number of connections. Adjusting parameters like worker processes or threads can help alleviate the file limit issue. If the problem persists after following these steps, you may need to consult with a system administrator or a DevOps professional to further investigate and resolve the issue specific to your system setup.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值