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

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

2024-05-24 01:53:59
139
0

改变预训练模型的行为方式——例如,提高它们在下游任务中的表现或减轻在训练前学习到的偏见——是开发机器学习系统时常见的一种做法。在这项工作中,我们提出了一个新的范式来指导神经网络的行为。一个任务向量指定了一个预先训练过的模型的权重空间中的一个方向,这样向该方向的运动就可以提高任务的性能。我们通过在对任务进行微调后,从同一模型的权重中减去一个预训练模型的权重来构建任务向量。我们证明了这些任务向量可以通过减法和加法等算术运算来修改和组合,并相应地引导所得到的模型的行为。减去一个任务向量会降低目标任务的性能,而在对照任务上的模型行为变化不大。此外,同时添加任务向量可以同时提高多个任务的性能。最后,当任务通过“a是B和C是D”形式的类比关系联系起来时,结合来自三个任务的任务向量可以提高第四个任务的表现,即使没有使用来自第四个任务的数据进行训练。总的来说,我们对几种模型、模式和任务的实验表明,任务算法是一种简单、高效、有效的模型编辑方法。

5任务类比

在本节中,我们将以“A到B如同C到D”的形式探索任务类比,并表明使用前三个任务的向量的任务算法可以提高任务D的性能,即使该任务的数据很少或没有可用。

 

泛化能力。对于许多目标任务,收集未标记的数据比收集人工注释更容易、也更便宜。当目标任务的标记数据不可用时,我们可以使用有标记数据的辅助任务和一个无监督学习目标,通过任务类比来提高目标任务的准确性。例如,下面我们展示了一个用Yelp数据进行情绪分析的目标任务。利用任务类比,我们可以构造一个任务向量 τ_yelp_sent τ_amazon_sent + (τ_yelp_lm - τ_amazon_lm),其中τ_amazon_sent辅助任务(使用来自Amazon的数据进行情绪分析)中的有标签数据上微调后得到的权重,τ_yelp_lm 和τ_amazon_lm是通过对来自两个数据集的输入进行(无监督的)语言建模而获得的任务向量。

 

在表4中,我们展示了使用这种任务类比,在多个尺度上提高了T5模型的准确性,例如对来着Amazon和Yelp的数据进行二元情绪分析作为目标任务。我们的经验发现,给予情绪分析任务向量更高的权重会导致更高的准确性,因此我们对这些实验使用了两个独立的尺度系数——一个用于情绪分析任务向量,另一个用于语言建模任务向量。详细信息见附录E.1。对于所有的模型和数据集,使用任务向量优于对剩余的辅助情绪分析任务的微调,接近于对目标任务的微调性能

 

数据很少的亚种群。一些亚种群的数据往往稀缺——例如,室内环境中的狮子比室外的狮子或狗(室内或室外)的图像更为罕见。当这些亚种群可以跟其他具有更丰富数据进行类比(如本例)时,我们就可以应用任务类比,例如,τ_lion_indoors τ_lion_outdoors + (τ_dog_indoors - τ_dog_outdoor).

 

我们通过创建四个子种群来探索这个场景,使用imageNethuman sketches数据集之间的125个重叠类来探索这个场景。我们将这些类分成两个大小大致相等的子集,创建四个子种群A、B、C和D,其中(A、C)和(B、D)共享相同的类,并且(A、B)和(C、D)共享相同的风格(照片素描图)。虽然这些亚群在我们的实验中有许多类,但我们使用了简化的子集,例如“真正的狗”、“真正的狮子”、“素描狗”和“素描狮子”。我们在附录E.3中提供了更多的细节和样本。

 

 

4

 

 

5

 

给定一个目标子种群,我们通过对剩余的子种群上独立地微调三个模型来创建任务向量,然后通过任务算法e将它们进行组合,τ_sketch_lion τ_sketch_dog + (τ_real_lion - τ_real_dog),从而实现对目标亚种群“素描狮子”的识别。我们在图4中显示了四个目标亚群的平均值。与预训练模型相比,任务向量平均提高了3.4个百分点。此外,当来自目标子群的一些数据可用于微调时,从编辑后的模型开始训练比从预训练模型开始训练能达到更高的精度。单独从类比(没有额外的数据)中获得的收益与为目标子种群收集和注释大约100个训练样本的收益大致相同。

 

国王和女王。我们探索一个图像分类器是否可以学习一个新的类别(例如,“国王”),使用来自三个相关类的数据,形成一个类比关系(例如“女王”、“男人”和“女人”)。我们的结果显示在附录E.2中尽管没有新目标类别的训练数据,但任务类比比预训练模型获得了很大的准确性提高

 

6 结论

在本节中,我们将通过探索不同任务的任务向量之间的相似性,以及不同学习率和随机种子的影响,来进一步深入了解之前的研究结果。附录A中提供了其他分析,包括关于集合ensemble)和权重平均之间的联系的讨论。最后,我们讨论了我们的方法的一些局限性。

 

任务向量之间的相似性。在图5中,我们探讨了不同任务的任务向量之间的余弦相似性,以努力了解如何通过将多个模型合并为单一的多任务模型(第4节)。我们观察到来自不同任务的向量通常接近正交,并推测这使得在向量相加时能尽量小地干涉其他任务。当任务在语义上彼此相似时,我们也观察到更高的余弦相似性。例如,图5(左)中最大的余弦相似性是在MNIST、SVHN和GTSRB之间,其中识别数字对任务至关重要,以及EuroSAT和RESISC45之间,这两者都是卫星图像识别数据集。这种“任务空间”的相似性有助于解释Ilharco等人的一些结果其中将在一项任务进行微调的权重加入到预训练模型权重中(在我们的术语中,叫做应用单个任务向量有时会提高那些没有训练数据的任务的准确性(例如加入MNIST任务向量可以提高在SVHN上的精度) 。

 

 

6:在进行微调时,学习率的影响。添加在MNIST和EuroSAT上进行微调CLIP ViT-L/14模型的任务向量,较低的学习率效果最好同时较低的学习率让微调模型在目标任务上取得最高精度。

 

7:任务向量如何在整个微调过程中演变。 左:微调过程中任务向量(中间任务向量)与最终任务向量之间的余弦相似度。右图:通过添加来自MNIST和EuroSAT的中间任务向量而获得的准确性。添加中间任务向量可以导致较高的准确性,同时微调的步骤要少得多。

 

对学习率的影响。在图6中,我们观察到,当使用任务向量和微调单个模型时,增加学习率都会降低准确性,但对于单个模型,下降更为缓慢。这些发现与其他文献的发现一致,当使用更大的学习率时,两个微调模型之间的准确率以线性路径下降。因此,虽然在微调单个模型时,更大的学习率可能是可以接受的,但我们建议在使用任务向量时更加谨慎。此外,我们假设,当添加来自自然语言处理任务的向量时,更大的学习率可以解释一些差异在这些任务中,我们采用由社区中其他人微调的模型。

 

在整个微调过程中,任务向量的演变。在图7中,我们展示了任务向量是如何在整个微调过程中演化的。中间任务向量快速收敛到微调结束时得到的最终任务向量的方向。此外,在模型中添加两个图像分类任务中间任务向量,其精度仅经过几百步后就达到饱和。这些结果表明,使用中间任务向量是一种有效的方法,节省计算精度危害小。

 

限制。任务向量被限制在具有相同架构的模型中,因为它们依赖于对模型权重的元素级操作。此外,在我们所有的实验中,我们只对从相同的预训练初始化微调出来的模型进行算术运算,尽管新出现的工作放松这一假设。我们还注意到,一些架构非常流行,并且有“标准”初始化——例如,在撰写本文时,有超过3000个模型从相同的基本初始化进行微调,超过800个模型从相同的t5-small从零进行微调。

 

7 相关工作

loss landscape和权重插值。近年来,神经网络损失面loss surfaces)的几何结构引起了几位作者的兴趣。尽管神经网络是非线性的,但以往的经验发现,两个神经网络权重进行插值可以保持原有的高准确性,只要这两个神经网络共享部分的优化轨迹。

 

在微调的情况下,当预训练模型的权重逐渐向微调对应的方向移动时,精度稳步提高。除了单一任务,Matena & RaffelIlharco发现,当多个模型在同一初始化中对不同的任务进行微调时,平均它们的权重可以提高微调任务的准确性。Li等人也发现了类似的结果。Choshen等人表明,通过平均其权重来“融合”微调模型,为新的下游任务的微调创造了一个更好的起点。Wortsman等人发现,平均在多个任务上进行微调的模型的权重可以提高一个新的下游任务的准确性,而不需要进行任何进一步的训练。这些发现与第4节中显示的结果一致。在这项工作中,我们超越了模型之间的插值,研究了模型之间的外推和组合它们的其他方法(第3节和第5节)。

 

模型干预措施。考虑到再训练模型在大多数情况下是非常昂贵的,一些作者研究了在预训练后使用干预来修改模型行为的更有效的方法,用不同的名称来描述这个过程,如补丁patching)、编辑editing)、对齐(aligning)或调试debugging)。与以前的文献相比,我们的工作提供了一种独特的编辑模型的方法,通过重新使用微调后的模型,可以以模块化和高效的方式添加或删除功能。更接近我们的工作的是Subramani等人,他探索了在隐藏状态中添加向量的转向语言模型。相比之下,我们的工作在预先训练过的模型的权重空间中应用向量,而没有修改标准的微调程序。

 

任务嵌入。Achille等人、Vu等人,探讨了用连续嵌入表示任务的策略,以预测任务的相似性和可转移性,或创建分类关系。虽然我们构建的任务向量可以用于这些目的,但我们的主要目标是将它们作为工具来指导预训练模型的行为。此外,Lampinem & McClelland提出了一个基于任务之间关系的调整模型的框架。与他们的工作相比,我们的框架只使用模型权重的线性组合。

 

8 结论

本文介绍了一种基于任务向量上的算术运算的编辑模型的新范式。对于不同的视觉和NLP模型,添加多个专门的任务向量可以使一个模型在所有目标任务上表现良好,甚至提高在单个任务上的性能。减去任务向量允许用户删除不需要的行为,例如,有毒的生成,甚至完全忘记特定的任务,同时保留其他地方的性能。最后,任务类比利用现有数据来提高数据稀缺的领域或子种群上的性能。

 

对任务向量的算术运算只涉及添加或减去模型权值,因此计算是有效的,特别是与涉及额外微调的替代方案相比。因此,用户可以很容易地实验各种模型编辑,大量地复用迁移来自公开可用的微调模型的知识。由于这些操作会产生相同大小的单一模型,因此它们不会产生额外的推理成本。代码可在github的mlfoundations/task_vectors

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

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

2024-05-24 01:53:59
139
0

改变预训练模型的行为方式——例如,提高它们在下游任务中的表现或减轻在训练前学习到的偏见——是开发机器学习系统时常见的一种做法。在这项工作中,我们提出了一个新的范式来指导神经网络的行为。一个任务向量指定了一个预先训练过的模型的权重空间中的一个方向,这样向该方向的运动就可以提高任务的性能。我们通过在对任务进行微调后,从同一模型的权重中减去一个预训练模型的权重来构建任务向量。我们证明了这些任务向量可以通过减法和加法等算术运算来修改和组合,并相应地引导所得到的模型的行为。减去一个任务向量会降低目标任务的性能,而在对照任务上的模型行为变化不大。此外,同时添加任务向量可以同时提高多个任务的性能。最后,当任务通过“a是B和C是D”形式的类比关系联系起来时,结合来自三个任务的任务向量可以提高第四个任务的表现,即使没有使用来自第四个任务的数据进行训练。总的来说,我们对几种模型、模式和任务的实验表明,任务算法是一种简单、高效、有效的模型编辑方法。

5任务类比

在本节中,我们将以“A到B如同C到D”的形式探索任务类比,并表明使用前三个任务的向量的任务算法可以提高任务D的性能,即使该任务的数据很少或没有可用。

 

泛化能力。对于许多目标任务,收集未标记的数据比收集人工注释更容易、也更便宜。当目标任务的标记数据不可用时,我们可以使用有标记数据的辅助任务和一个无监督学习目标,通过任务类比来提高目标任务的准确性。例如,下面我们展示了一个用Yelp数据进行情绪分析的目标任务。利用任务类比,我们可以构造一个任务向量 τ_yelp_sent τ_amazon_sent + (τ_yelp_lm - τ_amazon_lm),其中τ_amazon_sent辅助任务(使用来自Amazon的数据进行情绪分析)中的有标签数据上微调后得到的权重,τ_yelp_lm 和τ_amazon_lm是通过对来自两个数据集的输入进行(无监督的)语言建模而获得的任务向量。

 

在表4中,我们展示了使用这种任务类比,在多个尺度上提高了T5模型的准确性,例如对来着Amazon和Yelp的数据进行二元情绪分析作为目标任务。我们的经验发现,给予情绪分析任务向量更高的权重会导致更高的准确性,因此我们对这些实验使用了两个独立的尺度系数——一个用于情绪分析任务向量,另一个用于语言建模任务向量。详细信息见附录E.1。对于所有的模型和数据集,使用任务向量优于对剩余的辅助情绪分析任务的微调,接近于对目标任务的微调性能

 

数据很少的亚种群。一些亚种群的数据往往稀缺——例如,室内环境中的狮子比室外的狮子或狗(室内或室外)的图像更为罕见。当这些亚种群可以跟其他具有更丰富数据进行类比(如本例)时,我们就可以应用任务类比,例如,τ_lion_indoors τ_lion_outdoors + (τ_dog_indoors - τ_dog_outdoor).

 

我们通过创建四个子种群来探索这个场景,使用imageNethuman sketches数据集之间的125个重叠类来探索这个场景。我们将这些类分成两个大小大致相等的子集,创建四个子种群A、B、C和D,其中(A、C)和(B、D)共享相同的类,并且(A、B)和(C、D)共享相同的风格(照片素描图)。虽然这些亚群在我们的实验中有许多类,但我们使用了简化的子集,例如“真正的狗”、“真正的狮子”、“素描狗”和“素描狮子”。我们在附录E.3中提供了更多的细节和样本。

 

 

4

 

 

5

 

给定一个目标子种群,我们通过对剩余的子种群上独立地微调三个模型来创建任务向量,然后通过任务算法e将它们进行组合,τ_sketch_lion τ_sketch_dog + (τ_real_lion - τ_real_dog),从而实现对目标亚种群“素描狮子”的识别。我们在图4中显示了四个目标亚群的平均值。与预训练模型相比,任务向量平均提高了3.4个百分点。此外,当来自目标子群的一些数据可用于微调时,从编辑后的模型开始训练比从预训练模型开始训练能达到更高的精度。单独从类比(没有额外的数据)中获得的收益与为目标子种群收集和注释大约100个训练样本的收益大致相同。

 

国王和女王。我们探索一个图像分类器是否可以学习一个新的类别(例如,“国王”),使用来自三个相关类的数据,形成一个类比关系(例如“女王”、“男人”和“女人”)。我们的结果显示在附录E.2中尽管没有新目标类别的训练数据,但任务类比比预训练模型获得了很大的准确性提高

 

6 结论

在本节中,我们将通过探索不同任务的任务向量之间的相似性,以及不同学习率和随机种子的影响,来进一步深入了解之前的研究结果。附录A中提供了其他分析,包括关于集合ensemble)和权重平均之间的联系的讨论。最后,我们讨论了我们的方法的一些局限性。

 

任务向量之间的相似性。在图5中,我们探讨了不同任务的任务向量之间的余弦相似性,以努力了解如何通过将多个模型合并为单一的多任务模型(第4节)。我们观察到来自不同任务的向量通常接近正交,并推测这使得在向量相加时能尽量小地干涉其他任务。当任务在语义上彼此相似时,我们也观察到更高的余弦相似性。例如,图5(左)中最大的余弦相似性是在MNIST、SVHN和GTSRB之间,其中识别数字对任务至关重要,以及EuroSAT和RESISC45之间,这两者都是卫星图像识别数据集。这种“任务空间”的相似性有助于解释Ilharco等人的一些结果其中将在一项任务进行微调的权重加入到预训练模型权重中(在我们的术语中,叫做应用单个任务向量有时会提高那些没有训练数据的任务的准确性(例如加入MNIST任务向量可以提高在SVHN上的精度) 。

 

 

6:在进行微调时,学习率的影响。添加在MNIST和EuroSAT上进行微调CLIP ViT-L/14模型的任务向量,较低的学习率效果最好同时较低的学习率让微调模型在目标任务上取得最高精度。

 

7:任务向量如何在整个微调过程中演变。 左:微调过程中任务向量(中间任务向量)与最终任务向量之间的余弦相似度。右图:通过添加来自MNIST和EuroSAT的中间任务向量而获得的准确性。添加中间任务向量可以导致较高的准确性,同时微调的步骤要少得多。

 

对学习率的影响。在图6中,我们观察到,当使用任务向量和微调单个模型时,增加学习率都会降低准确性,但对于单个模型,下降更为缓慢。这些发现与其他文献的发现一致,当使用更大的学习率时,两个微调模型之间的准确率以线性路径下降。因此,虽然在微调单个模型时,更大的学习率可能是可以接受的,但我们建议在使用任务向量时更加谨慎。此外,我们假设,当添加来自自然语言处理任务的向量时,更大的学习率可以解释一些差异在这些任务中,我们采用由社区中其他人微调的模型。

 

在整个微调过程中,任务向量的演变。在图7中,我们展示了任务向量是如何在整个微调过程中演化的。中间任务向量快速收敛到微调结束时得到的最终任务向量的方向。此外,在模型中添加两个图像分类任务中间任务向量,其精度仅经过几百步后就达到饱和。这些结果表明,使用中间任务向量是一种有效的方法,节省计算精度危害小。

 

限制。任务向量被限制在具有相同架构的模型中,因为它们依赖于对模型权重的元素级操作。此外,在我们所有的实验中,我们只对从相同的预训练初始化微调出来的模型进行算术运算,尽管新出现的工作放松这一假设。我们还注意到,一些架构非常流行,并且有“标准”初始化——例如,在撰写本文时,有超过3000个模型从相同的基本初始化进行微调,超过800个模型从相同的t5-small从零进行微调。

 

7 相关工作

loss landscape和权重插值。近年来,神经网络损失面loss surfaces)的几何结构引起了几位作者的兴趣。尽管神经网络是非线性的,但以往的经验发现,两个神经网络权重进行插值可以保持原有的高准确性,只要这两个神经网络共享部分的优化轨迹。

 

在微调的情况下,当预训练模型的权重逐渐向微调对应的方向移动时,精度稳步提高。除了单一任务,Matena & RaffelIlharco发现,当多个模型在同一初始化中对不同的任务进行微调时,平均它们的权重可以提高微调任务的准确性。Li等人也发现了类似的结果。Choshen等人表明,通过平均其权重来“融合”微调模型,为新的下游任务的微调创造了一个更好的起点。Wortsman等人发现,平均在多个任务上进行微调的模型的权重可以提高一个新的下游任务的准确性,而不需要进行任何进一步的训练。这些发现与第4节中显示的结果一致。在这项工作中,我们超越了模型之间的插值,研究了模型之间的外推和组合它们的其他方法(第3节和第5节)。

 

模型干预措施。考虑到再训练模型在大多数情况下是非常昂贵的,一些作者研究了在预训练后使用干预来修改模型行为的更有效的方法,用不同的名称来描述这个过程,如补丁patching)、编辑editing)、对齐(aligning)或调试debugging)。与以前的文献相比,我们的工作提供了一种独特的编辑模型的方法,通过重新使用微调后的模型,可以以模块化和高效的方式添加或删除功能。更接近我们的工作的是Subramani等人,他探索了在隐藏状态中添加向量的转向语言模型。相比之下,我们的工作在预先训练过的模型的权重空间中应用向量,而没有修改标准的微调程序。

 

任务嵌入。Achille等人、Vu等人,探讨了用连续嵌入表示任务的策略,以预测任务的相似性和可转移性,或创建分类关系。虽然我们构建的任务向量可以用于这些目的,但我们的主要目标是将它们作为工具来指导预训练模型的行为。此外,Lampinem & McClelland提出了一个基于任务之间关系的调整模型的框架。与他们的工作相比,我们的框架只使用模型权重的线性组合。

 

8 结论

本文介绍了一种基于任务向量上的算术运算的编辑模型的新范式。对于不同的视觉和NLP模型,添加多个专门的任务向量可以使一个模型在所有目标任务上表现良好,甚至提高在单个任务上的性能。减去任务向量允许用户删除不需要的行为,例如,有毒的生成,甚至完全忘记特定的任务,同时保留其他地方的性能。最后,任务类比利用现有数据来提高数据稀缺的领域或子种群上的性能。

 

对任务向量的算术运算只涉及添加或减去模型权值,因此计算是有效的,特别是与涉及额外微调的替代方案相比。因此,用户可以很容易地实验各种模型编辑,大量地复用迁移来自公开可用的微调模型的知识。由于这些操作会产生相同大小的单一模型,因此它们不会产生额外的推理成本。代码可在github的mlfoundations/task_vectors

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