Apricot:一种修复深度学习模型的权重自适应方法

互联不一般哥 2024-03-15 00:15:08

摘要

深度学习(DL)模型本质上是不精确的。为了解决这个问题,现有的技术会在更大的训练数据集上,或者借助故障注入模型,又或者使用 DL 模型中失败测试案例的理解,对 DL 模型进行重新训练。本文提出了 Apricot,一种新型的权重适应方法,用于迭代修复 DL 模型。Apricot 从原始 DL 模型中生成一组这样的简化 DL 模型(rDLM)。在每次迭代中,对于输入 DL 模型(iDLM)经历的每一个失败的测试案例,Apricot 都会调整这个 iDLM 的每个权值,倾向这些 rDLM 正确分类测试案例的平均权重或远离这些 rDLM 错误分类相同测试案例的平均权重,随后在原始训练数据集上训练权重调整后的 iDLM,为下一次迭代生成一个新的 iDLM。在 5 个最先进的 DL 模型上的实验表明,Apricot 可以将这些模型的测试准确率提高 0.87%-1.55%,平均为 1.08%。实验还揭示了这些 rDLM 在 Apricot 中的互补性。

1 介绍

深度学习模型(简称为 DLM)是一个深度学习网络(DNN),它的神经元之间的连接用一组权重进行初始化,其中这种权重是从训练过程中获得的。

如果一个 DLM 不够准确,就应该“修正”它。一种策略是用额外的测试案例来扩展训练数据集。收集这些测试用例,例如通过自动生成对抗性用例或从其他来源收集,需要额外的成本和时间。

另一种策略是利用原始训练数据集进一步优化 DLM,例如,通过逐步改变参数,探索不同的权重分配,产生 DLM 底层 DNN 的变体,或者混合使用它们以在训练它们之前生成进化的 DLM。

第三种策略是用原始训练数据集来优化一个 DLM,但与上段所说的策略不同,在其优化过程中,不在每次迭代时使用多个 DLM 变体。例如,MODE 识别出一个隐藏层,其神经元中包含的特征对暴露 DLM 的错误行为最有代表性。从输入层到这个识别层的层被重构,形成一个特征模型,这样的特征模型可以指导选择输入以此重新训练 DLM。正则化技术使 DLM 的权重矩阵更加稀疏,以减少不重要的权重对分类结果的影响。这些技术通常在 DLM 的训练过程中,通过在损失函数中加入一个正则化项(如 Lp norm)进行粗调。直观地讲,很多训练不良的权值都很小,但并不是所有权值小的权值都是训练不良的。在 DLM 中选择少数(和未知)的不良训练的权重,并在粗糙层次上修复 DLM 是一个挑战。

在这项工作中,本文提出了 Apricot,一种新型的权重调整方法来修复深度学习模型。本文的主要贡献有三个方面:

• 本文介绍了 Apricot。它通过失败的测试用例将原始 DLM 和一组 rDLM 连接起来,这为修复原始 DLM 的不良训练权重提供了指导,这使它有别于正则化和其他调试工作。它不会生成任何基于故障的 DLM,这使得它不同于基于故障(测试、调试或修复)的技术。

• 本文介绍了对 Apricot 的评估,表明 Apricot 对于提高模型精度是可行的。

• 这项工作表明,使用多个 rDLM,可以通过探索所有这些 DLM 之间的连接,为修复原始 DLM 提供有趣的见解。

2 背景

A.深层神经网络(DNNs)

一个典型的深度神经网络(DNN)包含一组层级,如输入层、输出层和多个隐藏层,每层包含一组神经元。相邻层的神经元是相连的。一个神经元是一个函数,它从其传入的连接中接收一个或多个输入。每个这样的连接都带有一个叫做权重的值。神经元将这些加权输入相加,可能带有一些偏置常数或正则化项,计算出一个加权和,并将这个和传递给一个激活函数(通常具有非线性型),以产生一个输出,代表是否有输入,传递给它的输出连接(例如作为其他神经元的传入连接)。

为了获得 DLM 的权重矩阵集,可以在训练数据集上训练 DLM。然而,DLM 中存在训练不良的权重可能会导致 DLM 的行为错误。除了给定的训练数据集的数据质量的限制,以及 DLM 在训练过程中是否过度拟合或拟合不足外,DLM 中招致训练不良的权重的一个普遍看法是,训练数据集中的一些输入可能会相互冲突,即两个输入或两批输入之间的参数(即权重)的更新方向可能是相反的。

B.DLM 中训练不当的权重及其修复

在文献中,DLM 的错误可以分为两种:结构错误和训练错误。结构性错误是指 DLM 的结构(包括层的类型、层与层之间的连接、激活函数的类型和分配)没有设计好。自动修复这类错误的速度很慢,因为除了要使候选的 DLM 得到充分的训练和测试外,候选的数量是巨大的,使得搜索空间比修复训练错误大得多。

训练错误指的是 DLM 的权重矩阵中的一些权重由于训练过程不足或训练数据集的偏差而没有得到很好的训练。在本文中把这些权重称为训练不良的权重。

解决训练不良权重问题的一个相关方法是直接通过再训练修改一些权重矩阵中的权重。用不同的数据集重新训练一个 DLM(如在原始训练数据集中加入更多的输入),或者在重新训练前使用不同的权重矩阵集对 DLM 进行初始化,将产生一组新的权重矩阵。

向训练数据集增加更多的输入被广泛认为是修复训练不良的权重的一种实用且最常见的方法。尽管如此,使用更多的输入进行再训练在数据收集和标注方面是很费力的,而且在很多情况下,寻找足够多的输入可能是不切实际的。

3 APRICOT

A. 概述

Apricot 是一种新型的权重适应方法,用于修复深度学习模型。Apricot 的整体流程如图 1 所示。有两个阶段:训练阶段和适应阶段。

图 1 Apricot 修复深度神经网络的整体过程

在训练阶段,将训练数据集 T0 划分为多个子集 Tsub={T1,T2,…,Tn},其中 U_i=1^nTi=T0。(为了保证 rDLM 得到充分的训练,每个子集的大小要足够大)。注意,子集之间可能会有一些重叠,也可能没有。接下来,Apricot 在 T0 上训练 D0,然后在 Ti 上训练所有 rDLM Di,i=1 ~ n。

在适应阶段,Apricot 将 T0 分成一系列的批次。它依次对这些批次进行处理。在处理每一个批次时,它调用了两个活动的序列:权重调整,然后是再训练。在权重调整活动中,每个批次 b 接受一个 DLM 作为输入(称为输入 DLM,简称 iDLM)。Apricot 识别 b 中 iDLM 所有失败的测试用例。对于每一个这样的失败的测试用例 x,它将 rDLM 的集合分为两个分区:一个分区(表示为 CorrectSubModels(x))包含了这些每一个都对 x 进行了正确分类的 rDLM,另一个分区(表示为 IncorrectSubModels(x))包含了所有剩余的 rDLM(即这些每一个都对 x 进行了错误的分类)。然后,它将 iDLM 的权重向 CorrectSubModels(x)中这些 rDLM 的平均权重调整,或远离 IncorrectSubModels(x)中这些 rDLM 的权重。在再训练活动中,Apricot 使用整个训练数据集 T0 来训练 iDLM(该 iDLM 是由同一批次的权重调整活动产生的),以产生一个 DLM 作为处理下一个批次的迭代的输入。

算法 1 产生 rDLM

B.通过 rDLMs 调整 DLM 的权重

Apricot 的训练和适应阶段的算法分别如算法 1 和 2 所示。

在算法 1 中,给定训练数据集和原 DLM 的 DNN(如层的类型和各层的参数)作为算法的输入。在第 1 行中,算法创建了原始训练数据集的 n 个子集,其中原始训练数据集被指定为输入(train_x)和相应的预期结果(train_y)。然后,它将每个这样的子集反馈送到一个相应的 rDLM,该 rDLM 与给定的 DLM 具有相同的结构,首先从 dnn 中复制 DNN,然后使用该子集训练 rDLM(行 3-7)。最后收集训练后的 rDLM 作为输出(第 6 行和第 8 行)。

算法 2 通过 rDLM 调整 DLM 权重

算法 2 介绍了使用一组训练好的 rDLM 调整 DLM 的权重的过程。

在第 1-2 行中,分别通过函数 GetWeights()和 EvaluateModel()收集给定 iDLM 的权重和该 iDLM 所达到的测试精度。然后,通过函数 GetBatch()将整个训练数据集划分为一组批次,其中每一个批次都包含了特定数量的输入 xBatch 和这些输入的相应预期结果 yBatch(行 3)。对于每个批次中的每个测试用例 x 及其对应的预期结果 y,通过函数 ModelPrediction()收集所有 rDLM 以及 iDLM 对 x 的分类结果(第 6-7 行)。如果 iDLM 对 x 的分类正确,则不调整 iDLM 的权重(第 8-9 行)。另一方面,如果 iDLM 对 x 的分类不正确,那么 rDLM 的集合就会被分成两个分区:分别在第 11 行和第 15 行的 correctSubModels 和 incorrectSubModels。如果没有模型对 x 进行正确分类,则不会进行调整(第 12-13 行)。这是因为本文的调整策略(将在下一段介绍)需要正确分类的 rDLM 提供权重调整的方向。请注意,如果没有 rDLM 对 x 进行错误分类,调整程序将继续进行。如果 correctSubModels 是非空的,那么 correctSubModels 和 incorrectSubModels 的平均权重都是通过 16-17 行的函数 AvgWeights()来计算的。Apricot 计算平均权重的方法如下:

其中 n 为 rDLM 的总数,Wi 为每个 rDLM 的权重矩阵。所有 rDLM 的矩阵都是通过将相应的元素相加,然后计算权重的平均值。在第 18-19 行中,计算 iDLM 和 correctSubModels 之间的权重差,以及 iDLM 和 incorrDiff 之间的权重差,分别由变量 corrDiff 和 incorrDiff 保存。在第 20 行中,它通过函数 setWeights()更新 iDLM 各权重的值来调整 iDLM 的权重。

函数 AdjustWeights()需要策略作为输入。Apricot 包括以下三种权重调整策略(分别表示为策略 1、2、3):

其中,w^(k)是跨越第 5-23 行的 for 循环第 k 次迭代后,iDLM 中相应边的调整后的权重,其中 rl 是代表学习率的常数,p_corr 和 p_incorr 分别是正确和不正确分类的 rDLM 的比例。也就是说,让 a 和 b 分别是 rectSubModels 和 incorrectSubModels 集合中 rDLM 的数量,有 p_corr=a/(a+b),p_incorr=b/(a+b)。

Apricot 的目标是最小化当前权重与正确 SubModels 的权重之间的距离和最大化与不正确 SubModels 的权重之间的距离。

表 1 CNN 结构

在对当前批次进行上述权重调整活动后,算法在测试数据集上评估调整后的 iDLM(第 24 行)。它在整个训练数据集上对调整后的 iDLM 进行若干个代的训练。它还应用一个贪心算法来保留测试精度最高的 DLM。更具体地说,在第 25-29 行中,如果一个调整后的 iDLM 的测试精度高于迄今为止获得的最佳案例的测试精度,那么这个特别调整后的 iDLM 的权重将被保存。如果不是,则将该 iDLM 的权重回溯到迄今为止获得的最佳情况(第 31-32 行)。在第 34 行中,iDLM 的权重被设置为迄今为止建立的最佳案例。

4 实验与数据分析

A.实验设置

本文应用 Keras 提供的 API 来训练模型。训练过程的设置如下:对于 CNN1,将 epochs 设置为 20,batch size 设置为 256。在 CNN2 的训练过程中,将 epochs 设置为 125,batch size 设置为 64。此外,使用图像数据生成器来丰富训练数据集。对于 CNN3,分别设置 epochs 和 batch size 为 50 和 128。对于 ResNet-20 和 ResNet-32,设定了 120 和 128 的时间间隔和批量大小。此外,在 ResNet 模型的训练过程中应用了图像数据生成器。将所有 CNN 的激活函数设置为 ReLU。

本文对三种 CNN 模型采用了三种代表性的结构,表 1 中总结了这些模型。这些模型具有不同数量的卷积层和超参数。CNN1 包含两个块。第一个块由两个卷积层和 64 个内核组成,然后是一个最大池化层。第二块与第一块相似,但内核的数量设置为 128 个。输出部分由三个全连接层组成,分别为 256、256、10 个神经元。与 CNN1 相比,CNN2 和 CNN3 的结构相似。在 CNN2 中,应用了 BatchNormalization 层。在 CNN3 中,应用了一个全局平均池化层。

这些 DLMs 的摘要如表 2 所示。列 1 是在实验中实现的 DLM。列 2 是每个 DLM 的参数数量。列 3 和列 4 是每个 DLM 在 CIFAR-10 数据集上 5 次运行的平均训练精度和平均测试精度。在训练过程中,只保存测试精度最高的模型。

表 2 DNN 模型的描述性总结

B.结果

表 3 总结了训练原始 DLM 和相应的 rDLM 所消耗的时间。第 2 列至第 5 列分别列出了 DLM 的训练时间、相应 rDLM 的总训练时间、rDLM 的数量和 rDLM 的平均训练时间。训练一个 DLM 的时间要比训练一个 rDLM 的时间长很多。CNN1、CNN2、CNN3、ResNet-20 和 ResNet-32 的训练 DLM 分别需要 1 分 46 秒、31 分 39 秒、5 分 47 秒、28 分 30 秒和 31 分 21 秒。在实验中,依次训练了 rDLM,值得注意的是,这些 rDLM 可以用分布式和并行的方式进行训练和收集。列 6 显示了训练 rDLM 与训练 DLM 相比时间减少的百分比。平均来说,训练一个 rDLM 比训练一个相应的 DLM 减少了 71.0%的时间。

表 3 DLM 和 RDLMS 训练时间总结

rDLM 的训练过程结果如表 4 所示。第 2 列至第 5 列分别代表平均训练精度、测试精度及其对应的标准差。从它们相对较小的标准差可以看出,rDLM 的训练精度很接近,测试精度也是如此。

表 4 RDLMS 综述

rDLM 的精度分布如图 1 所示。对于每个 DLM,总共训练了 100 个 rDLM。每个子图总结了 5 次运行中获得的 100 个 rDLM 的精度。x 轴代表实验中产生的 rDLM 的训练/测试精度,y 轴代表具有相应精度的 rDLM 的数量。绿色的条形图代表训练精度,蓝色的条形图代表测试精度。一般来说,rDLM 的测试精度明显低于原始 DLM 20%以上。看来,rDLM 是在一个小得多的训练数据集子集上进行训练的,因此获得和学习的信息和特征较少。

图 2 实验中减少的 DLM 所达到的训练精度和测试精度

适应阶段的实验结果如表 5 和图 3 所示。第 2 至 10 列分别是使用策略 1、2、3 的适应阶段完成后的平均训练准确率、平均测试准确率和测试准确率的最大增益(即 Apricot 在实验中测试准确率的最高增幅)。粗体数字表示实验中最高的平均测试精度或测试精度的最高增益。第 11 至 12 列分别是 3 种策略的总体平均收益和最大收益。图 3 是 5 次运行中实现的详细训练和测试精度。对于每个 DLM,两个子图分别报告训练和测试精度。这 4 个条形图分别在每个图中从左到右排列。蓝色的方框代表原始 DLM 实现的训练和测试精度,橙色、绿色和红色的方框分别代表应用策略 1、2 和 3 后 DLM 实现的训练和测试精度。总的来说,修正后的 DLM 的训练精度和测试精度都比原 DLM 高很多。此外,三种策略都能提高 DLM 的精度。

图 3 DLMs 在实验中达到的训练精度和测试精度

表 5 适应过程的实验结果

实验结果显示,对于策略 2,Apricot 在 3 个 CNN 模型上的准确率持续提高了 0.89%-1.55%,平均提高了 1.19%;在 2 个 ResNet 模型上的准确率提高了 0.87%-0.92%,平均提高了 0.895%。Apricot 通过应用策略 1,在所有 DLM 上实现了 1.00%-2.18%的测试精度的最高提升。注意到,Apricot 不需要额外的输入来训练给定的模型,应用 Apricot 之前两个 ResNet 实现的准确率分别为 91.00%和 91.95%,Apricot 实现了显著的提升。通过综合三种策略的结果,所有模型的平均改进率为 1.08%,平均最大精度增益为 1.536%。在本文看来,Apricot 带来了一个可喜的结果,代表了实验中生产具有修复权重的 DLM 的一个可行方向。

C.进一步分析

Apricot 在三个 CNN 模型上实现了比 ResNet-20 和 ResNet-32 更显著的改进。除了这两个模型在测试数据集上取得了较高的准确率外,本文认为另一个原因是 ResNet 的结构更加复杂。

与策略 1 和策略 3 相比,策略 2 除了在 CNN2 上取得了较为明显的改进外,其他方面都取得了较好的效果,但策略 2 在 CNN2 上取得的效果为 1.12%,相对较高。结果表明,rDLMs 在实验中对调整权重和优化原 DLM 有一定的作用。

一些优化方法,如正则化,也有助于提高 DLM 的精度。本文的工作与神经网络正则化的区别在于,本文的目标是利用 rDLM,在 rDLM 的指导下,通过调整原 DLM 的权重,进一步优化 DLM,但正则化方法的目的是通过使权重矩阵变得更稀疏(加入 L0 规范)或使权重变得更小(加入 L2 规范),使权重发生显著变化,从而提高精度或增强鲁棒性。此外,本文的方法能否进一步提高经过正则化的 DLM 的精度,值得探讨。

D.对有效性的威胁

在实验过程中,本文发现,如果原来的 DLM 被过度拟合,即训练精度接近 100%,Apricot 很难修复 DLM。这是因为在适应过程中,Apricot 只关注原 DLM 预测错误的输入。如果训练精度接近 100%,则可能不会触发或很少触发适应过程。

一个可能的问题是,在 Apricot 中,权重调整依赖于生成的 rDLM 的原始权重,也就是说,整体调整结果依赖于 rDLM 的性能。如果这些 rDLM 没有经过充分的训练,那么要想找到更好的解决方案将更具挑战性。为了克服这个问题,可以在 Apricot 中使用更多的 rDLM(目前实验使用了 20 个这样的 rDLM),减少潜在偏差的影响,并可能进一步提高 Apricot 所达到的精度性能,但在某些情况下,训练更多的模型可能会很耗时。

另一个可能的问题是,rDLM 与原始的 DLM 相比,可能会保留不同的特征,或者 rDLM 和 DLM 可能会学习到相似的特征,但这些特征相对于架构中的节点顺序,以不同的排列方式保留。这个问题可以通过在开始的时候增加一个初始化步骤来缓解,即首先在经过若干个 epoch 后对 DLM 进行训练,然后将架构和粗略训练的权重都复制到 rDLM 中。这个初始化步骤有类似的概念。它确保一些特征可以保留在权重和后期的训练过程中,确保 DLM 和 rDLM 的神经元和权重在相同的位置执行相同的任务。这种初始化步骤的有效性需要进一步研究,将其作为未来的工作。

5 总结

本文提出了 Apricot,一种新型的权重调整方法,用于迭代进化 DLM。本文的想法是,在较小的数据集上训练的 DLM 可以提供有用的权重调整和适应信息,从而进一步优化较大的 DLM。Apricot 生成一组 rDLM,调整原始 DLM 的权重,使之向着这些 rDLM 的平均权重调整,这些 rDLM 各自正确地分类一个输入,或远离这些 rDLM 的平均权重,这些 rDLM 各自错误地分类相同的输入,其中有关的输入是原始 DLM 所经历的一个失败的测试案例。如果权重调整后获得了更高的测试准确率,则会触发训练过程以进一步提高。在 CIFAR-10 数据集和 5 个 DLM 上的实验结果表明,Apricot 可以将这些 DLM 的测试准确率提高 0.87%-1.55%,平均为 1.08%,而 Apricot 在实验中取得的最高测试准确率提高幅度为 1.00%-2.18%,平均值为 1.536%。

未来工作的一个方向是调试和修复深度学习模型。有一些具有挑战性的问题,比如评估一小组权重对整体 DLM 的影响和修复 DLM。本文观察到,在理解深度神经网络的行为和这些网络的修复工作的基础需求之间还有很大的差距。此外,仅通过测试精度或鲁棒性来评估深度神经模型的性能,在某些情况下可能还是不够的。希望在未来对这些问题进行研究。

致谢

本文由南京大学软件学院 2021 级硕士颜昌粤翻译转述,2020 级博士生尹伊宁审核。

0 阅读:0

互联不一般哥

简介:感谢大家的关注