Predicting Fine-Tuning Performance with Probing——通过探针预测微调性能

这篇文章探讨了如何通过探针(probing)方法来预测深度自然语言处理(NLP)模型的微调性能。主要内容总结如下:

  1. 研究背景

    • 大规模NLP模型在语言理解任务中表现出色,通常通过微调性能进行评估。

    • 探针是一种轻量级方法,用于解释模型的内在机制,但探针结果与模型开发过程脱节。

  2. 研究目标

    • 探讨探针结果是否能够预测微调性能,从而为模型开发提供有用的反馈信号。

  3. 方法

    • 使用多个探针任务(如句法和语义任务)对预训练语言模型(如RoBERTa、XLM等)进行探针,获取探针准确率。

    • 通过线性回归分析,使用探针结果预测微调任务的性能。

  4. 主要发现

    • 仅使用三个探针任务的准确率即可预测微调性能,且预测误差比基线小40%至80%。

    • 某些探针任务和特定层的探针结果对预测微调性能更具指示性。

    • 探针方法(如MLP-20和RandomForest-100)在预测微调性能时表现最佳。

    • 即使使用较少的数据样本(如每类400个样本),探针结果仍具有一定的预测能力。

  5. 结论

    • 探针结果可以作为预测微调性能的有效工具,显著提高模型开发效率。

    • 探针方法在计算成本上比微调更为高效,适合在模型开发过程中使用。

  6. 未来工作

    • 进一步验证探针结果在非分类任务(如翻译任务)中的预测能力。

    • 探索其他轻量级方法(如LoRA和前缀调优)在模型开发中的应用。

本文展示了探针方法在深度NLP模型开发中的潜力,提供了一种高效且低成本的性能预测手段。这里是自己的论文阅读记录,感兴趣的话可以参考一下,如果需要阅读原文的话可以看这里,如下所示:

官方项目地址在这里,如下所示:

摘要

近年来,大规模自然语言处理(NLP)模型在语言理解任务中表现出色,通常通过其微调性能进行评估。与此同时,探针(probing)作为一种轻量级的方法,逐渐受到关注,用于解释大规模NLP模型的内在机制。在探针中,后置分类器在“域外”数据集上进行训练,以诊断模型的特定能力。尽管探针分析揭示了模型的一些内在机制,但这些发现似乎与模型开发过程脱节。本文探讨了通过探针深度NLP模型来提取模型开发中广泛使用的代理信号——微调性能。我们发现,仅使用三个探针测试的准确率即可预测微调性能,误差比基线小40%至80%。我们进一步讨论了探针在赋能深度NLP模型开发中的潜在应用。

1 引言

大规模神经网络模型近年来在多种任务中表现出色,包括情感检测、释义检测、语言可接受性和蕴含检测等(Devlin et al., 2019; Radford et al., 2019; Peters et al., 2018)。开发这些任务的系统通常涉及两个阶段:预训练阶段,大规模神经网络模型从大规模语料库中的弱监督信号中获取语言知识;微调阶段,模型从标注数据中获取任务特定的知识。微调结果被广泛用于基准测试神经模型的性能,并优化模型的开发流程。

然而,这些微调结果是总结性统计量,并不能全面反映深度神经模型的内部机制(Ethayarajh and Jurafsky, 2020; Bender and Koller, 2020)。随着研究人员越来越关注解释深度神经模型的内在机制,许多数据驱动的评估方法被开发出来。这些评估通常遵循编译目标数据集并进行后置分析的路线。迄今为止,最流行的解释方法之一是探针。通过探针,可以使用预测器从神经模型嵌入的表示中获取标签。对深度神经模型的探针分析揭示了一些低维句法结构(Hewitt and Manning, 2019)、常识知识(Petroni et al., 2019)以及(某种程度上)类似人类的能力,包括对语言不规则现象的惊讶(Li et al., 2021)和对空间和时间的推理(Aroca-Ouellette et al., 2021)。

从数据驱动评估的角度来看,微调和探针都可以揭示深度神经网络的能力,但它们似乎朝着不同的方向发展:

  • 域内 vs. 域外:微调使用域内数据——我们在与部署环境相同的分布上评估模型。而探针使用域外数据:目标数据集专注于诊断特定能力,而不是模拟部署环境。

  • 包容性 vs. 特异性:在微调中,应包含边缘案例,以最小化部署后的意外行为(Ribeiro et al., 2020),并使微调结果稳定(Zhang et al., 2021)。相反,探针数据集更加专业化,因此较小的数据集即可满足需求。

  • 高性能 vs. 忠实解释:微调方法主要从算法角度研究,以增强语言模型的性能,而探针方法旨在评估语言模型的忠实性。为了实现前者的目标,微调伴随着预训练、收集更多数据、构建更好的表示和探索新颖模型架构的努力(He et al., 2021; Sun et al., 2021; Wang et al., ; Jiang et al., 2020)。相反,后者的目标通过借鉴心理语言学评估协议(Futrell et al., 2019; Li et al., )、信息论(Voita and Titov, 2020; Pimentel and Cotterell, 2021; Zhu and Rudzicz, 2020)和因果分析(Slobodkin et al., 2021; Elazar et al., 2021)等来源的灵感来实现。

简而言之,探针评估更加专业化(因此更加灵活)且计算成本较低。相比之下,微调评估的性能分数与深度神经模型的设计和训练更为相关。探针能否用于深度神经模型的开发? 这个问题涉及两个方面:

  • 可行性:探针结果是否与模型开发相关?

  • 操作:如何设置探针分析以获取这些有用的结果?

本文试图回答这两个问题。对于可行性,我们展示了模型开发中的一个关键反馈信号——微调性能,可以通过探针结果进行预测,表明探针在模型开发中的可行性。

对于操作,我们进行了广泛的消融研究,简化了探针配置,得出了一些设置探针分析的启发式方法。我们从一系列探针任务开始,评估了任务和层级的效用(§5.2 - §5.3)。然后我们减少了探针配置的数量,展示了仅使用3个配置即可预测微调结果,且均方根误差(RMSE)比控制基线小40%至80%(§5.5)。为了进一步回答操作问题,我们对不同的探针配置进行了消融研究,包括探针方法(§5.6)和数据样本数量(§5.7)。我们还分析了结果的不确定性(§5.8)。我们的分析展示了在高性能深度神经模型开发中使用探针的可能性。

2 相关工作

性能预测

Xia et al. (2020) 提出了一个框架,通过一系列特征(包括模型的超参数和源数据集与目标数据集之间的文本重叠百分比)来预测任务性能。Srinivasan et al. (2021) 将该框架扩展到多语言设置。Ye et al. (2021) 考虑了性能的可靠性——类似于 Dodge et al. (2019) 的思想。本文与性能预测文献的不同之处在于特征集——我们使用探针结果作为特征——更重要的是,我们旨在展示探针结果可以提高大规模模型开发过程中的可解释性。

域外泛化

域外泛化文献提供了多种方法来提高域外分类的性能。我们参考 Wang et al. () 的总结。Gulrajani and Lopez-Paz (2020) 对许多算法进行了实证比较,一些理论分析对域外分类的性能进行了界定(Li et al., ; Minsker and Mathieu, 2019)。在我们的设置中,探针和微调数据集可以被视为不同的域,但我们的分析预测了域外性能。Kornblith et al. (2019) 提出了类似的设置,研究了在ImageNet上的性能与在各种图像域上迁移学习性能之间的相关性。我们的设置专注于文本域,并使用专门的小型探针数据集。

探针与LODNA的效用

探针文献揭示了深度神经模型的各种能力,如 Rogers et al. (2020); Manning et al. (2020); Belinkov (2021); Pavlick (2022) 所总结。关于探针结果的效用有一些讨论。Baroni (2021) 认为,这些面向语言的深度神经网络分析(LODNA)应将深度神经模型视为算法语言理论;否则,LODNA对理论语言学家的相关性有限。最近的LODNA文献通过比较算法和人类对外部刺激的反应机制,得出了有趣的发现,包括句子的相对重要性(Hollenstein and Beinborn, 2021)。探针结果与数据集证据结合使用时,还可以用于预测神经模型的归纳偏差(Lovering et al., 2021; Immer et al., 2021)。正如我们所展示的,探针结果可以解释神经NLP模型微调性能的方差,甚至可以预测其微调性能。

微调与探针

已有多个论文探讨了微调和探针范式。探针被用作一种后置方法,用于解释深度神经模型在预训练(Liu et al., )、微调(Miaschi et al., 2020; Mosbach et al., 2020; Durrani et al., 2021; Yu and Ettinger, 2021; Zhou and Srikumar, 2021)和模型开发的其他阶段(Ebrahimi et al., 2021)中的语言知识。从性能角度来看,探针有时可以比微调获得更高的性能指标(例如,准确率)(Liu et al., ; Hall Maudslay et al., 2020),而微调可以从额外数据中受益(Phang et al., 2018)。我们采取了不同的视角,考虑探针和微调结果之间的关系,更重要的是,探针信号如何有助于大规模神经模型的开发。

3 方法

我们在本节中介绍了整体分析方法和评估指标。§5 详细阐述了实验设置。

预测微调性能

RMSE减少

4 评估任务和数据集

微调任务

我们考虑了GLUE(Wang et al., 2019)中的6个二分类任务作为微调任务:RTE包含一系列识别文本蕴含的挑战。给定两个句子,模型决定一个句子是否蕴含另一个句子。COLA(Warstadt et al., 2019)要求模型确定一个句子在语言上是否可接受。MRPC(Dolan and Brockett, 2005)要求模型识别一对句子是否是释义。SST2(Socher et al., 2013)要求模型输出电影评论的情感积极性。QNLI包含从SQuAD(Rajpurkar et al., 2016)解析的问题和答案。该任务要求模型决定答案是否回答了问题。QQP测试模型是否能正确输出一对Quora问题是否同义。

探针任务

我们使用了SentEval(Conneau and Kiela, 2018)中的7个探针任务,这些任务大致可以分为两类:句法和语义:

  • 句法:二元组移位(BShift)和树深度(TreeDepth)

  • 语义:过去现在时(Tense)、主语数(SubjNum)、宾语数(ObjNum)、语义奇数(SOMO)和协调倒置(CoordInv)

这些探针任务涵盖了一系列语言能力。通常,BERT中靠近输入层(较低层)的层包含更多表面级信息,而较高层包含更多句法和语义信息(Tenney et al., 2019; Jawahar et al., 2019),但不同语言特征的实际位置可能有所不同(Miaschi et al., 2020)。SentEval数据集通常比支持统计显著比较所需的数据集大数百倍(Zhu et al., 2022),因此我们随机抽取每类1200个数据点,约占原始SentEval数据的1%。

预训练语言模型

我们使用了几个最广泛使用的预训练语言模型进行微调和探针。我们通过Huggingface Model Hub上的名称引用这些模型。

  • roberta-base(Liu et al., )在超过160GB的英语语料库上预训练BERT(Devlin et al., 2019),使用了改进的技术,包括动态掩码、大批量和无下一句预测的掩码语言建模。

  • xlm-roberta-base(Conneau et al., 2020)在来自100多种语言的2.5TB Common Crawl数据上预训练。多语言源提高了跨语言的迁移性,同时在英语GLUE任务上的准确性仅略有下降(与单语言RoBERTa相比)。

  • albert-base-v2(Lan et al., 2020)在层之间共享参数,并将词汇矩阵分解为较小的矩阵。这些减少参数的技术降低了计算资源需求,使模型预训练能够进一步扩展。

  • microsoft/deberta-base(He et al., 2021)使用单独的注意力向量来建模每个单词的内容和位置。在微调期间,DeBERTa向归一化嵌入添加对抗性扰动。

  • xlnet-base-cased(Yang et al., 2019)在预训练期间建模上下文的不同排列顺序。XLNet还使用注意力来跟踪先前的状态,使模型能够处理超出固定长度的上下文。

损坏的模型

为了增加模型的多样性,我们通过在打乱的Wikipedia上进行500、1k、2k、4k和6k步的掩码语言建模(MLM)微调来损坏语言模型。这种“模型增强”过程不适用于XLNet,因为打乱语料库会产生上下文的排列,而XLNet已经建模了这一点。总共有25个语言模型,每个模型包含12层。

微调方法

对于所有微调分类,我们使用huggingface Transformers(Wolf et al., 2020)的_AutoModelForSequenceClassification_框架。模型使用AdamW优化器进行训练,初始学习率集合为7,批量大小为4。由于GLUE任务未公开测试集标签,我们使用最佳开发集性能作为微调结果。为了可重复性,我们在PyTorch(Paszke et al., 2019)中将随机种子固定为42。其他详细信息,包括运行时间和计算资源,见附录A。

探针方法

有许多方法可以探针神经网络。在本文中,我们使用后置分类器从第一个标记(CLS)的表示中预测目标(“探针任务目标”)。我们运行了一系列scikit-learn(Pedregosa et al., 2011)分类器,通过开发准确率选择最佳分类器,并将其测试准确率作为探针结果 SS。其他详细信息,包括运行时间和计算资源,见附录A。

5 实验

微调性能

作为探索性分析,图1绘制了GLUE微调性能的分布。额外的损坏步骤导致RTE和MRPC上的微调性能下降比其他任务更显著。此外,在QQP上,roberta-base(及其损坏模型)的开发准确率大于0.90,而大多数其他模型的开发准确率约为0.80。

哪个探针任务信息量最大?

我们首先测试仅使用一个探针任务结果的可预测性。对于每个探针任务,我们将12个探针结果连接为特征,并使用线性回归预测微调性能。

表1显示了使用一个探针任务的所有层从基线减少的RMSE百分比。对于“哪个探针任务最能预测所有微调任务”没有明确的答案,但根据每个任务针对的语言能力,存在一些规律。例如,“数字计数”探针任务不能预测RTE(文本蕴含识别任务)的微调性能。然而,在其他微调任务(COLA、QNLI、MRPC、SST2、QQP)中,每个探针任务都显示出正的RMSE减少,表明其预测微调性能的能力。

哪些层最具指示性?

在§5.2的回归实验中,我们假设每个特征同等重要。然而,单因素方差分析(ANOVA)显示,某些层比其他层更具指示性,如表2所示。例如,tree_depth(第1层)和object_number(第1层)的探针结果解释了所有微调任务的显著方差。

请注意,最具预测性的层不应与包含最丰富语言知识的层混淆。前者对应于解释最多方差的探针结果,而后者对应于具有最高准确率的探针。

每个探针任务仅使用一层

与其探针所有12层,不如每个探针任务仅使用一层的探针结果是否有益?根据表2,我们使用显示对大多数微调任务解释显著方差的层。

结果也包含在表1中。当将特征数量减少到大约一半(12到7)时,“每个探针任务一层”可以在RTE和SST2中减少更多的RMSE。然而,其他微调任务的结果表明,替代的特征选择方法可能有助于找到更具预测性的特征集。

仅使用3个特征能否预测?

该实验进一步减少了使用的特征数量,同时最大化MSE减少。我们遍历每个微调任务的所有可能的12 × 7 = 84个探针特征组合,并报告预测微调性能的最大RMSE减少。

表1显示了结果和相应的特征。使用三个特征的预测可以在RTE、SST2、QNLI和QQP上减少最多的RMSE。在COLA和MRPC上,前三个特征的RMSE减少最多比之前涉及更多探针特征的最佳配置小6%。

结果表明了探针的效用。通过仅使用三个配置(每个配置使用一个探针任务在一个层上)进行探针,可以预测微调性能。

消融:探针配置

为了进一步简化探针过程,我们进行了此消融研究。与其使用一系列后置分类器进行探针(如§4.5所述),我们测试每个单独分类器的探针结果是否可以重现§5.2 - §5.5的发现。

表3显示了使用不同探针选择的最大MSE减少。一个可能令人惊讶的发现是,从“最高准确率”标准中选择的探针并不总是产生最有价值的结果。为了预测微调性能,直接指定探针方法为MLP-20或RandomForest-100可能更推荐。

消融:数据集大小

§5.2 - §5.6中的发现表明,每类1,200个样本(约占总数据的1%)足以提供有用的发现。如果我们进一步减少探针数据集的大小会怎样?在这里,我们重复§5.2和§5.5,仅使用每类400个样本的探针结果。虽然我们也可以仅使用每类400个样本减少RMSE,但探针结果通常不如1,200个样本有用。在48个配置中,400个样本的探针结果在11个配置中表现更差,但在5个配置中表现更好。详细结果见表4。

不确定性分析

我们的方法涉及将最大RMSE减少与基线(从高斯分布中提取的特征进行回归)进行比较,这可能会受到随机种子的影响。这里我们描述了§5.2 - §5.5中基线回归器结果的误差分析。

我们在每个回归配置上运行 N=100N=100 次蒙特卡罗模拟,分别记录 RMSEcRMSEc​,并分析不确定性。我们使用 RMSEcRMSEc​ 的变化(通过Std(RMSEc)c​) 测量)相对于尺度(通过Mean(RMSEc)c​) 测量)来描述不确定性。如表5所示,不确定性在回归任务的选择上保持相对稳定,但随着特征数量的增加而增加。这一结果支持使用较少的探针结果作为特征。

探针结果能否区分原始语言模型?

由于25个模型仅来自5个语言模型(RoBERTa、XLM、ALBERT、DeBERTa、XLNet),人们可能会怀疑“模型增强”过程是否“充分打乱”了语言模型——如果是,则很难区分原始语言模型。

我们使用scikit-learn的5类逻辑回归。对于任何三个特征的组合,我们按照5折交叉验证计算准确率。在所有3个特征的组合上,探针特征可以达到比随机特征高0.0027的准确率(标准差=0.0109)。这在统计上是显著的。然而,最大可达到的准确率为0.08,而即使是一个总是输出“RoBERTa”的简单预测器的预期准确率为0.24(25个模型中有6个RoBERTa模型)。小准确率表明我们的“模型增强”过程(§4.3)产生了足够独特的模型。

6 讨论

探针结果能否推广到非分类任务?

本文中的所有微调任务和探针任务都是基于文本的分类问题。在可解释的NLP文献中,探针分析也可以应用于其他类别的深度神经网络,包括翻译(Belinkov et al., 2017; Zhang and Bowman, 2018)。这种跨不同神经网络的推广是直观的,因为探针检查了表示中编码的语言知识。如果一个神经模型编码了丰富的句法信息(如Tense、SubjNum等的高探针分数所示)和语义信息(如BShift、SOMO等的高探针分数所示),那么当我们观察到该神经模型获得高BLEU分数时,我们不会感到惊讶。也就是说,探针结果在多大程度上仍然对BLEU分数具有预测性需要进一步分析,我们将其留给未来的工作。

探针计算友好

与微调相比,探针评估需要更少的计算。微调6个GLUE任务总共需要约30个GPU小时,而探针7个任务(所有12层)需要0.7个GPU小时进行缓存和1.3个CPU小时进行探针。我们在附录A中详细说明了计算预算。探针效率更高,因为它不需要改变神经模型中的参数,我们只需要通过神经模型一次并缓存表示。微调需要梯度来更新神经模型中的参数。有一些方法可以减少计算成本,我们注意到探针在计算时间方面也具有竞争力。

微调任务需要更多规范

目前,最流行的自然语言理解排行榜由微调任务组成。对这些排行榜的一个批评是规范不足(D'Amour et al., 2020)——任务的简短描述几乎无法包含完成任务所需的精确能力。为了进一步理解规范不足问题,研究人员最近开发了探针数据集(McCoy et al., 2019; Warstadt et al., 2020)。这些数据集上的探针结果已被(间接)用于开发深度神经模型——性能预测是更直接的应用。

细粒度评估提高透明度

排行榜任务应根据用户需求进行定制(Ethayarajh and Jurafsky, 2020)。探针数据集的多样性为NLP研究人员提供了灵活的选择,支持对消费者的多样化考虑。一些最近提出的细粒度排行榜允许研究人员回答诸如“模型A在哪些方面优于模型B”之类的问题(Ma et al., 2021; Narayan et al., 2021; Ruder et al., 2021; Liu et al., 2021a)。探针文献可以提供更多数据集,用于构建多样化的排行榜。

将探针纳入模型开发

尽管开发人员已经非常忙碌,探针仍然可以为大型模型的开发带来好处,主要通过多维反馈机制。探针数据集引入了补充大型NLP模型训练数据集的目标知识。在开发过程中,模型开发人员可以选择良好的模型检查点以恢复或继续,借助探针评估分数。

7 结论

本文展示了分析探针结果可以通过预测代理信号(即微调性能)与深度NLP模型的开发相关。我们展示了仅使用三个探针准确率分数即可预测微调结果,且均方根误差(RMSE)比基线小40%至80%。这可以显著提高深度学习管道的效率。通过几次消融研究,我们推荐MLP-20和RandomForest-100作为探针方法,并展示了每类仅400个样本的探针结果可能仍然具有预测性。探针分析包含丰富的资源,我们展示了它们的结果与微调性能密切相关。我们呼吁进一步将探针应用于深度NLP模型的开发。

8 局限性

仅使用困惑度评估大型语言模型是单一维度的。使用微调任务进行评估需要修改许多参数,因此比探针更昂贵。本文旨在为在计算预算内对模型参数进行多维评估铺平道路,因此我们没有提供固定的配方(包括固定探针数据集和指定探针层),而是提供了一个通用框架,并通过实验展示了探针结果的信息量和潜在效用。虽然探针结果在我们的实验中显示出信息量,但许多其他方法(例如LoRA和前缀调优)可以优化类似数量的参数。其他方法的实证验证留给未来的工作。同样,本文中考虑的问题设置都是分类问题。我们相信这应该推广到其他问题设置(例如序列任务上的BLEU分数),但实证验证也留给未来的工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值