TransformerRanker 高效地为下游分类任务找到最适合的语言模型的工具 !

科技   2024-11-15 09:01   上海  

备注好友:方向-学校/公司-姓名/昵称

【AIGC 先锋科技】交流群

在自然语言处理(NLP)的分类任务中,通常的做法是选择一个预训练的语言模型(PLM),然后针对特定下游任务进行微调。然而,考虑到目前可用的PLM数量非常庞大,一个实际挑战是如何确定哪一个PLM将最适合特定下游任务。

为了解决这个问题,作者在这篇论文中引入了TRANSFORMERRANKER,这是一个轻量级的库,它可以高效地对PLM进行分类任务的排名,而无需进行计算成本高昂的微调。

作者的库实现了当前用于可转移性估计的方法(LogME, H-Score, kNN),并结合了层聚合选项,作者通过实证证明这些方法可以产生PLM的顶级排名(Garbas et al., 2024)。

作者设计的接口既轻量又易于使用,允许用户直接连接到 HuggingFace 的TRANSFORMERS和DATASETS库。

用户只需选择一个下游分类任务和一个PLM列表,即可创建一个对他们任务可能最适合的PLM的排名。

作者将TRANSFORMERRANKER作为一个pip可安装的开源库提供。

1 简介

自然语言处理(NLP)中的分类任务通常是通过从模型仓库中选择预训练语言模型(PLM)并对其进行微调来解决的。然而,现有的大量的PLM使得从模型仓库中选择最佳性能的PLM成为实际挑战。作者将介绍TransformerRanker,一种轻量级的库,能够有效地对分类任务中的PLM进行排名,且不需要进行计算成本高昂的再训练。

作者的库实现了当前的 迁移性估计 (LogME,H-Score,kNN)方法,并结合了层汇聚选项,作者在实证研究中证明了这可以获得最先进的PLM排名(Garbas等人,Garbas等,2024)。作者设计了接口非常轻量级且易于使用,允许用户直接连接到HuggingFace transformers和datasets库。

用户只需选择一个下游分类任务和一列表的PLM,就可以创建一个可能最适合该任务的最佳PLM的排名。作者将TransformerRanker作为可pip-安装的开源库公开发布。

1 介绍

目前存在大量的预训练Transformer语言模型(PLM),可以通过模型仓库获得(例如,通过模型仓库;Wolf等人,2019)。从实际的角度来看,这提出了一个问题,即哪种PLM在微调后会执行最佳性能。由于微调PLM既需要消耗大量计算资源又对超参数(如微调时使用的学率)敏感,因此对所有模型进行详细搜索是不可能的。在实际应用中,这限制了用户只能检测少量的PLM,可能导致最佳适合特定任务的PLM被遗漏。

为了解决这个问题,以前的工作提出了几种 迁移性估计 方法。这些方法通过使PLM的内部状态冻结来避免与微调PLM相关的高计算成本。显著的例子包括H-Score 和LogME(You等人,2021)。在作者的先前的研究中,作者发现通过将特征从更深层引入估计过程可以提高这些方法的性能。作者实证地证明,这一过程可以得到更好的每模型估计,因为根据下游任务的不同,Transformer模型中的不同层最适合提供特征。此外,作者证明了在累积各层之间可以增加选择过程的鲁棒性,对每个模型使用不同的预训练目标,从而在多样化的PLM之间进行更好的比较。

迁移性估计的Python库。 本篇论文中,作者将以前的研究中在层逐步分析和迁移性估计方法中的工作合并到单个库中,并提供了对任何可用的HuggingFace transformers的库中transformer LMs的排名的三步接口(请参见图1)。作者的目标是两个方面:

  • 首先,为实践者提供一个易于使用的迁移性估计来选择PLMs的方法。为此,作者设计了一个简单且直接连接到HuggingFace transformers和datasets库的界面。从这些,用户只需选择一个下游分类任务和一列表的PLM。使用作者的默认设置,库将输出一个针对其任务的可能最佳适合的PLM的排名。
  • 其次,为迁移性估计领域的研究行人提供具有多种最新估计器和聚合方法来组合和比较的单库,以帮助研究行人工作。

TransformerRanker支持NLP分类任务的两个主要类别:

  • 文本分类任务(例如,question分类[20],情感分析[21]或文本隐含关系[22]) 中的分类任务,在这种分类决策上针对整个文本(或文本对)作出分类,
  • 序列标记任务 中的分类任务,例如命名实体识别(NER;Sang和Meulder, 2003)和词性标签[23],在这种分类决策上针对每个单词进行。

2 TransformerRanker

作者首先讨论了 TransformerRanker 的安装程序(第 2.1 节)和用于排名变形器模型的标准三步工作流程(第 2.2 节)。然后,作者讨论了实现的估计器(第 2.3 节)和层聚合方法(第 2.4 节)。

Setup

TransformerRanker是基于Python实现的,最低要求版本为3.8。安装该库可以通过运行以下命令实现:pip install transformer-ranker。这将下载最新版本和所有必要依赖项,包括torch和transformers。另一种方法是从GitHub直接克隆库。

Three-Step Workflow

本文用一个简单的示例来说明三步工作流程。作者将使用这个示例来说明如何找到最适用于英语语言命名实体识别任务[27]的Transformer模型。

列表(1)中的示例说明,作者的界面定义了三个主要步骤:首先,选择用于训练和测试任务的数据集,在本例中是CoNLL-03。接下来,创建一个语言模型列表进行排名。最后,初始化并运行排名器,以获得一个表示哪种模型最适合CoNLL-03的排名。

第一步:加载你的数据集。为了覆盖大量的现有自然语言处理(NLP)数据集,作者提供了对HuggingFace数据集库中可用的所有数据集的支持。第一步涉及加载现有的或自定义的数据集,只需提供相应的数据集名称(在本例中为'conll03')。如列表(1)所示,没有引入任何包装器;直接在由Dataset和DatasetDict类提供结构的Dataset和DatasetDict的返回值上进行操作。

第二步:创建候选模型列表。下一步是选择感兴趣的语言模型。列表可以包括指向HuggingFace模型库中的 Transformer 或通过Transformers库中的AutoModel类已加载的模型。在列表(1)的示例中,作者只是定义了一组字符串标识符作为作者的候选模型。

通常,用户可能会通过在HuggingFace模型库中选择最受欢迎(即下载次数最多的模型)来选择候选模型。一般来说,作者建议用户选择在这个列表中,使用不同的预训练目标和数据集训练的模型。因为这可能导致显著的性能差异。为了帮助新用户入门,作者准备了两组预定义的语言模型列表。第一个包含较小的模型(即流行的PLM的较小和基础模型)。第二个包含较大的模型。

根据项目的计算要求,建议用户选择较小或较大的PLM。

第三步:排名模型。最后一步是初始化TransformerRanker并运行它。初始化需要将数据集作为参数传递。数据集在内部预处理,只保留必要的列(例如文本和标签)。接下来,通过将语言模型列表传递给run方法,共同执行排名过程,同时可以设置可选的超参数(请参阅列表(1))。

有两个超参数可以设置以优化排名方法的速度:首先,用户必须指定一个batch_size,这将表示在一次前向传播中嵌入多少数据点。根据可用的GPU内存,这个参数可以增加以加快处理速度。其次,用户可以提供一个可选的超参数dataset_downsample,将数据集降采样为原始大小的百分比。这可能会在模型排名中显著提高速度,如作者在第3.3节中实验所示。作者在列表(2)中给出了如何将数据集降采样为原始大小的20%的示例。

此外,还有两个超参数可以配置迁移估计方法。默认使用基于H-score的估计器(本文的估计器选择)和层平均作为层聚合方法,这一组合作者已经发现可以获得最佳排名(Garbas等人,2024)。因此,作者将建议大多数用户使用这些默认设置。然而,也有可能更换估计器和聚合方法,使用本文第2.3和2.4节中讨论的其他选项,并使用estimator和layer_aggregation参数进行配置。在列表(2)中,作者 illustrate 了使用替代的kNNbest layer的示例。

查看结果。排名被编译为一个Results目标,可以打印出来以查看语言模型的排名及其迁移分数。作者在CoNLL-03共享任务上为20个语言模型生成的示例排名请参阅图2。

在显示的列表中,最佳估计的模型将位于顶部。实践者可以使用这个信息来选择最值得信赖的PLM,并使用另一个框架如Flair(Akbik等人,2019)或Transformers(Wolf等人,2020)来 fine-tune 它们。

Estimators

每种PLM都会由一个估计器对其适用于分类任务进行评估。作者提取隐藏状态并将它们转换为词或句 Level 嵌入,如附录A中所述。默认情况下,这些嵌入存储在GPU上,或者如果指定,则将其移动到CPU。一旦存储,它们将使用一个可用估计器进行评估:

最近邻嵌入 suitability可以通过最近邻视角进行评估。作者将k近邻(kNN)算法Cover和Hart(1967)作为估计器,将其应用于整个数据集。在top-k搜索过程中,计算所有数据点之间的自距离避免。为了管理内存,作者将距离计算和top-k搜索分批处理,消除了存储大量距离矩阵的需求。在作者的实现中,计算使用PyTorch,并在SVD和固定点迭代所需的矩阵乘法上利用GPU进行并行处理。kNN估计器具有一个超参数

LogMEYou等(2021)假设嵌入和标签之间存在线性关系,并提出了一个算法来估计贝叶斯证据。与训练线性层以找到最佳权重集不同,LogME通过对权重进行边缘化来计算模型证据的封闭形式解。通过证据最大化,两个关键参数,,用于控制正则化强度和噪声。这两个参数使用固定点迭代更新以最大化边缘似然。LogME通过在特征矩阵上进行奇异值分解(SVD),然后每个类别迭代最大化来实现。作者在PyTorch中实现此估计器以加速SVD和矩阵乘法。

H-ScoreBao等(2019)通过评估它们基于其变化区分类的可靠性,来评估嵌入的适用性。直觉是适配的表示应该具有低类内变差和高类间差异,这由类均值在协方差计算中使用来捕获。通过仅依赖协方差矩阵,H-Score度量类可分性,无需训练或迭代方法。Ibrahim等人(2023)在高维设置中的协方差估计实际问题,并提出了一种收缩基版本,该版本对协方差矩阵进行规范化并使用伪反向进行改进的稳定性。作者在PyTorch和GPU上使用它来加速矩阵运算,特别是协方差计算和伪反向。

Layer Aggregation Strategies

迁移性估计方法可以通过将语言模型的更深层隐藏状态纳入估计过程中来得到改进。该库支持三种选项:last layer,使用语言模型的最后一层隐藏状态,这是从预训练模型中提取特征的常见做法;layer mean,将所有层隐藏状态平均为单个表示;以及 best layer ,对语言模型中的所有层分别评分并选择得分最高的层。直觉上,将聚合设置为 best layer,模型按照它们特定任务层的得分进行排名。

前两种方法只需要针对一个模型进行一次估计,而 best layer 需要针对每层进行一次估计。识别具有最佳估计值的层不仅在模型排名上有用,还可以在模型内部检测最适合的层。同一模型内部不同层的任务专业知识是由Xie等人(2022年)研究的,他们使用了用于内部和跨类变异性的相似度指标。结果表明,提出的度量方式对于训练线性层具有很好的相关性,并能够正确识别分类任务中的适合层。

3 Experiments

在本节中,作者介绍了不同排名方法的估计质量,并评估了数据降采样对运行时间和估计质量的影响。作者还进行了实验来衡量作者使用GPU加速实现的运行时间。最后,作者呈现了一个TransformerRanker的实例实际应用。

Accuracy of Transferability Estimation

表格1总结了Garbas等人(2024年)的研究结果。在该研究中,各种估计器的排名以及层聚合方法与通过完全微调和高参数选择得到的模型进行了比较。为了进行排名比较,作者使用了皮尔逊相关系数ρ和加权肯德尔相关系数τ。作者在两种任务家族(单词级分类和句子级分类)的6个任务上呈现平均得分。

H-score在皮尔逊ρ中的表现优于LogME,分别为0.88和0.86。在加权肯德尔τ方面,H-score和LogME表现相似,平均得分为0.75和0.74,其中LogME在单词级任务上的τ更高。对于这两个指标,最高的分数都使用_层均值_聚合方法获得。与他们的原始工作一致,H-score和LogME都优于线性和KNN方法。

因此,作者将H-score与_层均值_作为TransformerRanker的默认估计器。然而,请注意,其他估计器可能从不同的层聚合策略中受益。例如,kNN在_最佳层_策略(见表1)上实现了最佳性能。因此,作者为用户提供选择估计器和层聚合器的选项。

Effect of Dataset Downsampling

图3显示了使用包含22K句子的数据集估计大型预训练语言模型(DeBERTa-large(He等人,2020))可迁移性的所需时间。使用整个数据集进行估计大约需要一分钟。作者将其运行时间分为三部分:模型下载、数据集嵌入和估计嵌入适用性。模型下载仅在第一次运行时发生,如果它不是本地已经存储。最耗时的部分是完整数据集的嵌入。

由于降采样可以显著加速嵌入,作者进行了一项实验,即将CoNLL-03数据集降采样到50%,20%,10%和5%。如图3所示,数据集可以大幅度降采样而不降低相关性。

Runtime of Estimators

作者通过运行实验来评估kNN、H-score和LogME估计器的实现。在实验中,作者使用了10万个嵌入,隐层大小为1024。与原始实现不同,TransformerRanker中的估计器可以利用GPU加速。因此,作者在两个设备上测得了运行时间。

表2显示,H-score的计算速度比LogME快,这与原始工作[14]的结果一致。作者还发现,kNN的实现是三个估计器中最慢的。此外,作者还注意到GPU加速带来了显著的速度提升,相当于大约一个数量级的GPU计算速度。

Demonstration

为了展示TransformerRanker在实际使用中的例子,作者选择了一个典型的实践者可能会采用的默认策略:在HuggingFace上使用最热门的德语PLM。在这种情况下,作者的 Baseline 是 

(1)bert-base-german-cased,最常下载的德语模型,以及(2) xlm-roberta-base,最常下载的多语言模型。

作者使用TransformerRanker从作者预定义的 Baseline 模型列表中找到一个有前景的额外模型。作者将GermEval18任务下的数据集降采样到50%以进行模型选择。所有模型的排名如图4所示:在这里,TransformerRanker估算mdeberta-base是最适合这个任务的模型。

然后,作者微调已识别出的模型(mdeberta-base)并将其与两个 Baseline 模型(bert-base-german-cased,xlm-roberta-base)按照各自微调后的精确度进行比较。如表3所示,作者发现mdeberta-v3-base显著优于两个 Baseline 模型。这个例子说明了使用自动化迁移性估计识别适用于下游任务的合适PLM的潜力。

4 Conclusion and Outlook

本文介绍TransformerRanker,这是一个助益研究行人和实践者有系统地选择适合其下游NLP任务的合适PLM(预训练语言模型)库。这种方法在很大程度上节省了时间,其基础方法产生的候选模型排名与模型实际下游性能排名高度相关。

未来的工作将扩展所涉及的下游任务范围,并采用新的方法评估可迁移性。例如,目前正在为回归任务(限于LogME和kNN估计器)添加实验支持。此外,作者邀请社区在研究中使用TransformerRanker,并添加其他估计器,如高斯Bhattacharyya系数Pandy等人(2021年)和其他新的层聚合方法。




集智书童
书童带你领略视觉前沿之美,精选科研前沿、工业实用的知识供你我进步与学习!
 最新文章