searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

论文分享:Editing Models with Task Arithmetic(上)

2024-05-24 07:17:05
96
0

1、介绍

预训练的模型通常被用作机器学习系统的骨干。在实践中,我们经常想在预训练后编辑模型,为了提高下游任务的性能,减轻偏见或不想要的行为,与人类偏好调整模型,或使用新信息更新模型。

在这项工作中,我们提出了一种新的基于任务向量编辑神经网络的范式,它编码必要的信息,以完成给定的任务。受最近关于权重插值的启发,我们通过取经过任务微调的模型的权重并减去相应的预先训练的权重来获得这样的向量(图1a)。

我们展示了可以通过任务算术来编辑各种模型——对任务向量执行简单的算术操作(图1b-d)。例如,减去一个向量可以用来消除不需要的行为或未学习的任务,而添加任务向量会导致更好的多任务模型,甚至提高单个任务的性能。最后,当任务形成类比关系时,可以结合任务向量来提高数据稀缺的任务的性能。

通过减法进行遗忘。用户可以减去任务向量来减轻不良行为,甚至完全忘记特定的任务,比如OCR。在第3节中,我们从一个对有毒数据进行微调的语言模型中减去了一个任务向量,减少了被归类为有毒数据的世代的比例,而流畅性几乎没有变化。我们还减去了图像分类任务的任务向量,导致我们希望忘记的任务的精度大大降低,而ImageNet精度损失很小。

图1

 

通过加法进行学习。添加任务向量可以产生更好的多任务模型,或提高单个任务的性能。在第4节中,我们添加了来自各种图像模型的任务向量,并将结果模型的性能与进行了专门的微调模型进行比较。我们发现,该模型可以与进行了专门微调的模型相媲美。添加两个任务向量可以保持98.9%的准确率,并且随着任务向量的增加,整个任务集的平均性能也会增加。此外,添加来自不同任务的任务向量可以使用文本模型提高目标任务的性能。

任务类比。当我们可以形成“king - man + woman = queen”形式的任务类比时,结合前三个任务的任务向量可以提高第四个任务的性能,即使在很少或没有训练数据可用的情况下。在第5节中,我们展示了可以通过不使用来自该任务的标记数据,来改进该任务的泛化能力。更具体地说,通过结合来自第二个情绪分析数据集的任务向量和使用来自这两个领域的未标记数据产生的任务向量来提高情绪分析任务的准确性。我们还在对图片和草图进行分类之间使用类比,以提高很少或没有可用数据的任务的准确性。

总的来说,使用任务算法编辑模型非常简单、快速、有效。在内存或计算方面,在推理时间上没有额外的成本,因为我们只对模型权重进行元素级操作。此外,向量操作很便宜,允许用户快速实验多个任务向量。通过任务算法,从业者可以复用或转移他们创建的模型中的知识,或从众多公开可用的模型中的知识,所有这些都不需要访问数据或额外的培训。

 

2、 任务向量

为了达到我们的目的,我们用一个数据集和一个用于微调的损失函数来构造了一个任务。记 θ_pre 是一个预先训练过的模型的权重, θ_ft^t 对任务t进行微调后对应的权重。任务向量 τ_t = θ_ft^t - θ_pre。当任务从上下文中清晰时,我们省略下标t,将任务向量简单地称为τ。

任务向量可以应用于来自相同体系结构的任何模型参数,通过元素级添加,使用一个可选的缩放项λ,这样得到的模型就有权重 新的 θ_new = θ + λτ . 在我们的实验中,缩放项是使用保留的验证集来确定的。请注意,使用λ = 1向预先训练过的模型添加单个任务向量等同于对模型在该任务上进行微调。

继Ilharco等人之后,我们关注于开放式模型,在那里可以对下游任务进行微调,而不引入新的参数。在微调引入新参数的情况下(例如,一个新的分类头),我们可以遵循Matena和Raffel,只合并共享的权重,但这种探索留给未来的工作。

使用任务算法编辑模型。我们关注任务向量上的三个算术表达式,如图1所示:减去一个任务向量,将任务向量添加在一起,并将任务向量组合起来形成类比。所有操作都按元素顺序应用于权重向量。

当减去一个任务向量τ时,令结果向量 τ_new = -τ 对应于在微调模型和预训练模型之间的外推。所得到的模型在目标任务上更差,在对照任务上的性能变化很小(第3节)。通过τ_new = Σ τ_i来添加两个或多个任务向量 τ_i,来产生了一个精通所有任务的多任务模型,有时甚至比对单个任务进行微调的模型有收益(第4节)。最后,当任务A、B、C和D形成“A是B,正如C是D”的类比时,任务向量 τ_new = τ_C+ (τ_B - τ_A) 提高了任务D的性能,即使该任务只有很少或没有数据(第5节)。

对于所有的操作,通过应用τ获得的模型权重新的是由 θ_new = θ + λ · τ_new得到的,其中缩放项λ是使用保留的验证集来确定的。

 

3、通过减法忘记

在本节中,我们将展示减去任务向量是降低其在目标任务上的性能的有效方法,而不会严重损害其他地方的性能。遗忘或“忘却”可以帮助减轻训练前学习到的不希望的偏见;完全忘记任务可能是可取的,或出于伦理原因,如防止图像分类器识别人脸,或通过OCR“阅读”个人信息。

这些干预措施不应该对模型在处理编辑范围之外的数据时的行为产生实质性影响。因此,我们测量控制任务的准确性,除了评估任务向量来源的目标任务。我们的实验证明了忘记任务向量对编辑图像分类和文本生成模型的有效性。

1、图像分类

对于图像分类,我们使用CLIP模型和Ilharco等人研究的8个任务中的任务向量。我们在附录B中探讨了其他任务,包括OCR和人员识别。对于对照任务,我们使用ImageNet。我们通过对每个目标任务进行微调来生成任务向量,详见附录B.1。

我们与另外两个基线进行了比较,一个是通过向增加损失的方向移动(即,通过梯度上升)进行微调,如Golatkar等人,另一个是减去一个随机向量,该随机向量的每一层与相应的任务向量层具有相同的大小。其他细节见附录B.2。

如表1所示,减去任务向量是降低目标任务精度的最有效的编辑策略,但对控制任务的影响很小。例如,减去任务向量使ViT-L/14的平均目标精度降低了45.8个百分点,而对照任务的精度变化不大。相比之下,使用随机向量对目标精度没有太大的影响,而使用梯度上升的微调会严重降低对照任务的性能。我们在附录B中提供了其他结果。

 

表1

 

2 、文本生成

我们研究我们是否可以通过减去一个被训练来做该行为的任务向量来减轻一个特定的模型行为。特别是,我们的目标是减少不同大小的GPT-2模型产生的有毒输出的数量。我们通过对来自Civil Comments中毒性评分大于0.8的数据进行微调来生成任务向量,然后减去这些任务向量。与第3.1节一样,我们还比较了在微调时使用梯度上升的基线,并使用相同大小的随机任务向量。此外,我们还对来自民事评论(毒性评分小于0.2)的无毒样本进行了微调,类似于Liu等人的工作。我们用Detoxify测量了模型的一千条输出的毒性。对于对照任务,我们在WikiText-103上测量了语言模型的困惑度。

如表2所示,使用负任务向量进行编辑是有效的,将毒性生成从4.8%减少到0.8%,同时将对照任务的困惑度保持在预训练模型的0.5点以内。相比之下,采用梯度上升的微调通过将对照任务的性能降低到不可接受的水平,从而降低了毒性生成,而对无毒数据的微调在减少任务生成和控制任务方面都比任务向量差。作为实验对照,添加一个随机向量对WikiText-103的困惑度影响不大。我们在附录C中提供了额外的实验细节和结果。

表2

 

4 、通过加法学习

现在,我们将注意力转向添加任务向量,要么建立能够同时熟练完成多个任务的多任务模型,要么提高单任务的性能。该操作允许我们重用和转移任何来自内部模型的知识,或从大量的公开可用的微调模型,而不需要额外的训练或获取训练数据。我们在各种图像分类和自然语言处理任务进行了尝试。

1 、图像分类

我们从第3节中使用的相同的8个模型开始,对一组不同的图像分类任务(Cars、DTD、EuroSAT 、GTSRB、MNIST、RESISC45、SUN397和SVHN)进行了微调。在图2中,我们展示了通过从这些任务中添加所有的任务向量对所获得的准确性。为了解释任务难度的差异,我们通过对该任务进行微调的模型的准确性来对每个任务的准确性进行标准化。经过归一化后,微调模型在各自任务上的性能是1,因此使用多个专门模型的平均性能也是1。如图2所示,添加成对的任务向量可以使单一模型大大优于zero-shot模型,并且与两个专门微调过的模型相媲美(平均标准化准确率为98.9%)。

 

图2

 

 

图3

 

除了成对任务之外,我们还探索为任务的所有可能的子集添加任务向量(总计2^8)。在图3中,我们展示了结果模型的标准化精度在所有8个任务中的平均平均值。随着可用任务向量数量的增加,可以产生更好的多任务模型。当所有任务向量都可用时,通过添加任务向量产生的最佳模型尽管将多个模型压缩为一个模型,但平均性能达到91.2%。其他实验和细节见附录D。

2 、自然语言处理

除了构建多任务模型外,我们还探讨了添加任务向量是否是提高单一目标任务性能的有效方法。为了实现这一目标,我们首先根据GLUE基准测试中的四个任务来微调t5基模型,如Wortsman等人所述。然后,我们在HuggingFace上搜索兼容的检查点,总共找到427个候选。我们尝试将每个相应的任务向量添加到我们的微调模型中,根据保留的验证数据选择最佳的检查点和缩放系数。如表3所示,与微调相比,添加任务向量可以提高目标任务的性能。其他细节和实验——包括从HuggingFace的公共检查点构建多任务模型——见附录D。

表3

 

表4

 

 

0条评论
0 / 1000
z****n
4文章数
0粉丝数
z****n
4 文章 | 0 粉丝
原创

论文分享:Editing Models with Task Arithmetic(上)

2024-05-24 07:17:05
96
0

1、介绍

预训练的模型通常被用作机器学习系统的骨干。在实践中,我们经常想在预训练后编辑模型,为了提高下游任务的性能,减轻偏见或不想要的行为,与人类偏好调整模型,或使用新信息更新模型。

在这项工作中,我们提出了一种新的基于任务向量编辑神经网络的范式,它编码必要的信息,以完成给定的任务。受最近关于权重插值的启发,我们通过取经过任务微调的模型的权重并减去相应的预先训练的权重来获得这样的向量(图1a)。

我们展示了可以通过任务算术来编辑各种模型——对任务向量执行简单的算术操作(图1b-d)。例如,减去一个向量可以用来消除不需要的行为或未学习的任务,而添加任务向量会导致更好的多任务模型,甚至提高单个任务的性能。最后,当任务形成类比关系时,可以结合任务向量来提高数据稀缺的任务的性能。

通过减法进行遗忘。用户可以减去任务向量来减轻不良行为,甚至完全忘记特定的任务,比如OCR。在第3节中,我们从一个对有毒数据进行微调的语言模型中减去了一个任务向量,减少了被归类为有毒数据的世代的比例,而流畅性几乎没有变化。我们还减去了图像分类任务的任务向量,导致我们希望忘记的任务的精度大大降低,而ImageNet精度损失很小。

图1

 

通过加法进行学习。添加任务向量可以产生更好的多任务模型,或提高单个任务的性能。在第4节中,我们添加了来自各种图像模型的任务向量,并将结果模型的性能与进行了专门的微调模型进行比较。我们发现,该模型可以与进行了专门微调的模型相媲美。添加两个任务向量可以保持98.9%的准确率,并且随着任务向量的增加,整个任务集的平均性能也会增加。此外,添加来自不同任务的任务向量可以使用文本模型提高目标任务的性能。

任务类比。当我们可以形成“king - man + woman = queen”形式的任务类比时,结合前三个任务的任务向量可以提高第四个任务的性能,即使在很少或没有训练数据可用的情况下。在第5节中,我们展示了可以通过不使用来自该任务的标记数据,来改进该任务的泛化能力。更具体地说,通过结合来自第二个情绪分析数据集的任务向量和使用来自这两个领域的未标记数据产生的任务向量来提高情绪分析任务的准确性。我们还在对图片和草图进行分类之间使用类比,以提高很少或没有可用数据的任务的准确性。

总的来说,使用任务算法编辑模型非常简单、快速、有效。在内存或计算方面,在推理时间上没有额外的成本,因为我们只对模型权重进行元素级操作。此外,向量操作很便宜,允许用户快速实验多个任务向量。通过任务算法,从业者可以复用或转移他们创建的模型中的知识,或从众多公开可用的模型中的知识,所有这些都不需要访问数据或额外的培训。

 

2、 任务向量

为了达到我们的目的,我们用一个数据集和一个用于微调的损失函数来构造了一个任务。记 θ_pre 是一个预先训练过的模型的权重, θ_ft^t 对任务t进行微调后对应的权重。任务向量 τ_t = θ_ft^t - θ_pre。当任务从上下文中清晰时,我们省略下标t,将任务向量简单地称为τ。

任务向量可以应用于来自相同体系结构的任何模型参数,通过元素级添加,使用一个可选的缩放项λ,这样得到的模型就有权重 新的 θ_new = θ + λτ . 在我们的实验中,缩放项是使用保留的验证集来确定的。请注意,使用λ = 1向预先训练过的模型添加单个任务向量等同于对模型在该任务上进行微调。

继Ilharco等人之后,我们关注于开放式模型,在那里可以对下游任务进行微调,而不引入新的参数。在微调引入新参数的情况下(例如,一个新的分类头),我们可以遵循Matena和Raffel,只合并共享的权重,但这种探索留给未来的工作。

使用任务算法编辑模型。我们关注任务向量上的三个算术表达式,如图1所示:减去一个任务向量,将任务向量添加在一起,并将任务向量组合起来形成类比。所有操作都按元素顺序应用于权重向量。

当减去一个任务向量τ时,令结果向量 τ_new = -τ 对应于在微调模型和预训练模型之间的外推。所得到的模型在目标任务上更差,在对照任务上的性能变化很小(第3节)。通过τ_new = Σ τ_i来添加两个或多个任务向量 τ_i,来产生了一个精通所有任务的多任务模型,有时甚至比对单个任务进行微调的模型有收益(第4节)。最后,当任务A、B、C和D形成“A是B,正如C是D”的类比时,任务向量 τ_new = τ_C+ (τ_B - τ_A) 提高了任务D的性能,即使该任务只有很少或没有数据(第5节)。

对于所有的操作,通过应用τ获得的模型权重新的是由 θ_new = θ + λ · τ_new得到的,其中缩放项λ是使用保留的验证集来确定的。

 

3、通过减法忘记

在本节中,我们将展示减去任务向量是降低其在目标任务上的性能的有效方法,而不会严重损害其他地方的性能。遗忘或“忘却”可以帮助减轻训练前学习到的不希望的偏见;完全忘记任务可能是可取的,或出于伦理原因,如防止图像分类器识别人脸,或通过OCR“阅读”个人信息。

这些干预措施不应该对模型在处理编辑范围之外的数据时的行为产生实质性影响。因此,我们测量控制任务的准确性,除了评估任务向量来源的目标任务。我们的实验证明了忘记任务向量对编辑图像分类和文本生成模型的有效性。

1、图像分类

对于图像分类,我们使用CLIP模型和Ilharco等人研究的8个任务中的任务向量。我们在附录B中探讨了其他任务,包括OCR和人员识别。对于对照任务,我们使用ImageNet。我们通过对每个目标任务进行微调来生成任务向量,详见附录B.1。

我们与另外两个基线进行了比较,一个是通过向增加损失的方向移动(即,通过梯度上升)进行微调,如Golatkar等人,另一个是减去一个随机向量,该随机向量的每一层与相应的任务向量层具有相同的大小。其他细节见附录B.2。

如表1所示,减去任务向量是降低目标任务精度的最有效的编辑策略,但对控制任务的影响很小。例如,减去任务向量使ViT-L/14的平均目标精度降低了45.8个百分点,而对照任务的精度变化不大。相比之下,使用随机向量对目标精度没有太大的影响,而使用梯度上升的微调会严重降低对照任务的性能。我们在附录B中提供了其他结果。

 

表1

 

2 、文本生成

我们研究我们是否可以通过减去一个被训练来做该行为的任务向量来减轻一个特定的模型行为。特别是,我们的目标是减少不同大小的GPT-2模型产生的有毒输出的数量。我们通过对来自Civil Comments中毒性评分大于0.8的数据进行微调来生成任务向量,然后减去这些任务向量。与第3.1节一样,我们还比较了在微调时使用梯度上升的基线,并使用相同大小的随机任务向量。此外,我们还对来自民事评论(毒性评分小于0.2)的无毒样本进行了微调,类似于Liu等人的工作。我们用Detoxify测量了模型的一千条输出的毒性。对于对照任务,我们在WikiText-103上测量了语言模型的困惑度。

如表2所示,使用负任务向量进行编辑是有效的,将毒性生成从4.8%减少到0.8%,同时将对照任务的困惑度保持在预训练模型的0.5点以内。相比之下,采用梯度上升的微调通过将对照任务的性能降低到不可接受的水平,从而降低了毒性生成,而对无毒数据的微调在减少任务生成和控制任务方面都比任务向量差。作为实验对照,添加一个随机向量对WikiText-103的困惑度影响不大。我们在附录C中提供了额外的实验细节和结果。

表2

 

4 、通过加法学习

现在,我们将注意力转向添加任务向量,要么建立能够同时熟练完成多个任务的多任务模型,要么提高单任务的性能。该操作允许我们重用和转移任何来自内部模型的知识,或从大量的公开可用的微调模型,而不需要额外的训练或获取训练数据。我们在各种图像分类和自然语言处理任务进行了尝试。

1 、图像分类

我们从第3节中使用的相同的8个模型开始,对一组不同的图像分类任务(Cars、DTD、EuroSAT 、GTSRB、MNIST、RESISC45、SUN397和SVHN)进行了微调。在图2中,我们展示了通过从这些任务中添加所有的任务向量对所获得的准确性。为了解释任务难度的差异,我们通过对该任务进行微调的模型的准确性来对每个任务的准确性进行标准化。经过归一化后,微调模型在各自任务上的性能是1,因此使用多个专门模型的平均性能也是1。如图2所示,添加成对的任务向量可以使单一模型大大优于zero-shot模型,并且与两个专门微调过的模型相媲美(平均标准化准确率为98.9%)。

 

图2

 

 

图3

 

除了成对任务之外,我们还探索为任务的所有可能的子集添加任务向量(总计2^8)。在图3中,我们展示了结果模型的标准化精度在所有8个任务中的平均平均值。随着可用任务向量数量的增加,可以产生更好的多任务模型。当所有任务向量都可用时,通过添加任务向量产生的最佳模型尽管将多个模型压缩为一个模型,但平均性能达到91.2%。其他实验和细节见附录D。

2 、自然语言处理

除了构建多任务模型外,我们还探讨了添加任务向量是否是提高单一目标任务性能的有效方法。为了实现这一目标,我们首先根据GLUE基准测试中的四个任务来微调t5基模型,如Wortsman等人所述。然后,我们在HuggingFace上搜索兼容的检查点,总共找到427个候选。我们尝试将每个相应的任务向量添加到我们的微调模型中,根据保留的验证数据选择最佳的检查点和缩放系数。如表3所示,与微调相比,添加任务向量可以提高目标任务的性能。其他细节和实验——包括从HuggingFace的公共检查点构建多任务模型——见附录D。

表3

 

表4

 

 

文章来自个人专栏
阿辉的自然语言处理
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0