今天是2023年10月2日,星期一,假期第四天,我们来继续看看大模型数据方面的一些事情。
在前面的文章《再看大模型预训数据质量如何评估:困惑度、错误L2范数和记忆化三种度量方法的效果对比分析研究》(https://mp.weixin.qq.com/s/d7fxiScyBIhyKYBi5wPgfw)中,我们介绍了预训练数据的质量评估方法。
这次,我们来看看微调阶段数据的质量评估策略。
说到微调,我们便会讲到对齐假说,即模型的知识主要是在预训练中学习的,指令跟随数据则教育模型在与用户交互时遵循某种模式。因此,这些指令跟踪数据的质量可被视为其有效引导语言模型学习以特定方式生成回复的能力。
最近的研究发现,即使只有少量高质量的指令遵循数据,也能对大型语言模型进行微调,使其表现良好。因此,如何选择高质量的数据集来对语言模型进行微调仍十分重要。
一些研究表明,提高指令多样性(如最近提出的Task2Vec多样性指标(https://arxiv.org/pdf/1902.03545.pdf))可以显著提高指令调整性能,由于微调数据集的数据收集方法不同,不同数据源之间存在质量差距,增加高质量数据的比例可以提高性能。
最近的工作《Instruction Mining: High-Quality Instruction Data Selection for Large Language Models》为量化和选择高质量的指令跟随数据提供了一个简单且可解释的方法。该工作提出了INSTRUCTMINING,一种线性质量规则和指标包,用于评估指令跟随数据的质量,并通过在LLAMA-7B模型上进行广泛的微调实验来估计INSTRUCTMINING的参数。
其中有个很有趣的界定,什么是指令的数据质量?
该工作嘉定,给定指令数据集D,在D上微调语言模型,记为M̃。通过M̃在评估数据集Deval上的推理损失,可以估计出D的数据质量。
为确保推理损失能为评估数据质量提供有效的衡量标准,评估集应由经过挑选的无偏见和高质量的指令跟随样本组成。
S通常指训练batch size, epochs等。得到经过微调的语言模型记为M̃。将数据集D的质量QD|M,S定义如下:
其中,Deval指高质量、无偏见的评估集,∝指直接比例。
而当前已经有许多用于评估数据质量的指标,如表1所示:
Length:数据集中每个回复的平均长度。
Rewardscore:数据集中每对答案的平均奖励模型推理得分。
Perplexity:回复的指数化平均负对数可能性。
MTLD:文本词法多样性度量。
KNN-i:在SentenceBERT嵌入空间中近似最近邻的距离。
Unieval-naturalness:由UniEval对话模型提供的回答是否像一个人自然会说的话的得分。
Unieval-coherence:该回复是否作为之前对话的有效延续的得分,由UniEval对话模型提供。
Unieval-understandability:由UniEval对话模型提供的回答是否可以理解的分数。
该工作设计实验来研究指标与数据集质量之间的多变量和单变量相关性,然后以此挑选微调数据,综合结果表明,INSTRUCTMINING这种机制可以显著提高微调性能。在42.5%的情况下,根据过滤数据进行微调的模型性能更好。
本文对该工作进行介绍,其中涉及到的数据评价指标以及一些结论性的东西值得借鉴,供大家一起参考。
一、实现思路
该工作利用推理损失来评估指令质量。然而,对LLM进行微调以进行评估可能效率不高。为了解决这个问题,引入一组自然语言指标,并利用这些指标来预测推理损失。
在本文中,有一组指标I={Ii,i∈N∗},也就是上面提到的各个指标。对于每个给定的指令数据集D,计算相应的指标值I(D)={Ii(D),i∈N∗}。
存在一个函数F,使得上述模型推断损失L(M̃,Deval)可以用F(I(D))近似。
微调后的模型推断损失L与这些计算指标之间的关系可以用公式2来表示。
在本文中,假设存在一个与对数损失成正比的多元线性函数Ii,i∈{1,–,n}。因此,等式2可以重新参数化为等式3:
其中,β0表示线性常量,βi,i∈N∗表示线性系数序列。ε指随机误差项。
该工作设计实验来研究指标与数据集质量之间的多变量和单变量相关性。二者的关键区别在于微调数据采样策略。
1、多变量评估实验
从多个预设质量水平不同的候选数据集中随机抽取子数据集。
多变量评估实验的一般流程如图1所示。
在具体实现上,为了估算评估损失L与指标袋I之间的相关性,并保证方法的可扩展性,需要获得不同指标值的数据集。为此,首先选择几个具有不同假定质量水平的常用数据集,然后将它们与随机抽样的百分比融合在一起,创建微调数据集。
对于每个数据集,对其语言模型进行微调,并在共享的评估集上对模型进行评估,并计算数据集上的指标值。最后,根据整理的实验结果进行线性回归分析,以估计线性规则参数。
这些抽样的微调数据集应包含不同比例的预设高质量和低质量示例。对于每个抽样数据集Di,计算其各自的指标值I(Di),并使用Di对基础语言模型M进行微调。
根据公式1,数据集Di的质量QDi是使用微调模型M̃i在公平评估数据集Deval上的评估损失近似得出的。
在收集了QDi与I(Di)相关的一系列结果后,进行了统计回归分析,以找出混合数据中的模式和关系。
2、单变量实验
根据指标值对细粒度子数据集进行抽样,即除了多变量实验中随机抽取的数据集外,在此还进行细粒度抽样,即根据具体指标值对子数据集进行抽样,
对于给定的指标Ij,用细粒度指标值抽取一系列相同大小的子数据集。以指标Rew为例进行说明。
计算数据集中每个样本的得分,然后将它们从低到高排序。
随后,这些数据样本会根据各自的Rew分数被分成K层。对于每个数据集,都会对基础模型进行微调,并进行评估,以获得取样指令数据集的质量估计值。
然后使用相关性分析工具来评估每个数据集的质量值与指标值的关系。
3、实验设置
在候选训练数据集上,为了创建多样化的训练数据集,从不同来源收集数据,并采用不同的收集标准。这种方法可确保数据集在质量上表现出理论上的差异,并保持不同来源数据的多样性。为此选择了ALPACA、OPEN-ASSISTANT、STACKEXCHANGE和WIKIHOW。由于不同数据集的格式、大小和分布各不相同,对每个数据集采用了不同的处理程序。
在评估数据集上,为了满足现实世界的要求,将来自不同评估数据集的测试数据组合在一起,使指令多样化。
在对比模型上,使用OPENAI的gpt-3.5-turbo为每条指令生成五个唯一的输出。gpt-3.5-turbo与LLAMA-7B相比,在指令跟踪方面性能更优。考虑到给定指令可能有多个有效输出,生成了多个输出,以更好地体现gpt-3.5-turbo的输出分布。
在候选数据集采样上,利用两种不同的融合方法进行多变量和单变量分析。合并候选训练数据集,每个数据集包含2,000个指令-输出对。
在多变量分析的采样策略上,为每个数据集生成一个随机数ri,然后从每个数据集中随机抽取2000∗ri/sum(ri)样本进行组合。
在单变量分析的抽样策略上,合并所有数据,并根据目标指标进行排序。然后在排序后的数据中平均选取K个量化值作为起点,并提取2000个以下的连续数据,形成一个新的数据集。这一选择过程确保了目标指标在这些数据集上的结果多样化,在实验中使用了K=8。
考虑到ALPACA数据集与其他数据集的大小差异较大,从ALPACA数据集中随机抽取了2000个数据,以保持所有候选数据集的规模一致性。
在微调设置上,在相同的基础模型LLAMA-7B上进行了所有的指令微调。所有微调数据集的大小相同,每个数据集有2000个样本。
二、实验结果
1、多变量分析
从候选数据集中随机抽取了78个不同比例的数据集,每个数据集都包含不同比例的高质量和低质量示例。
每个指标的分布如图5所示:
为确保OLS结果有效,进行了Kolmogorov-Smirnov检验,以确定变量是否服从正态分布。结果显示,分析的所有变量都遵循正态分布,满足OLS回归假设。
使用逐步回归法进行分析后,逐步回归是一种适用于多元线性回归的逐步迭代法,有助于找到重要的变量。在对表1中提到的变量进行回归后,逐步回归前后的回归结果见表3,可以看到,奖励得分和最近邻得分(数据集多样性指标)是衡量数据质量的最重要指标。
2、单变量分析
对每个指标分析其与评价损失的线性相关性。单变量分析结果如图2所示:
图2绘制了每个指标的指标值与实际推断损失的关系图。青色系列代表多元分析收集的数据(随机抽样),黄色系列代表单变量分析收集的数据(分层抽样)。对于每个群组,估计损失与指标之间的单变量线性函数。回归置信度为95%。
两个序列显示了相似的模式。变量PPL、MTLD、Nat和Und与预期评估损失呈正相关,表明这些变量的增加可能导致更高的评估损失。相反,Rew和Coh与评估损失呈负相关,这意味着这些变量的增加可能会导致损失的减少。
与从数据池中随机选择示例相比,根据PPL、MTLD和Rew直接选择数据集显然更为可取。
值得注意的是,这与在多元分析中的分析并不冲突,因为有多个指标对推理损失的波动有显著影响,而且这些指标可能具有多重共线性。
3、质量引导下的指令选择
在本节中,根据公式4中的回归结果,从未曾见过的数据集databricks-dolly-15k2中选择高质量示例。
针对选定的数据集,对基础模型LLAMA-7B进行了微调,并将微调后的模型与基准模型进行了比较。实验结果表明,对指令数据质量的表述是有效的,并且能够扩展到其他指令跟踪数据集。
表4从推理损失的角度进行评估,如下:
从表4中可以看出,预期评估损失越大,实际损失也越大,这表明指令数据的质量较低。对于选定的数据集,对基础模型LLAMA-7B进行了微调,并将微调后的模型与基准模型进行了比较。实验结果表明,对指令数据质量的表述是有效的,并且能够扩展到其他指令跟随数据集。
图3利用gpt-3.5-turbo和gpt-4来比较两种微调模型生成的答案。图3显示了选定高质量数据集与随机抽样数据集之间的GPT评估比较结果,可以看到,高质量数据集之间的损耗差异变化明显大于低质量数据集之间的变化。这表明,LLAMA-7B模型的指令微调性能可能对高质量数据非常敏感。
结果显示,该方法选择的数据集比随机抽样的数据集表现更好。不过,根据gpt-4算法,两者之间的差距并不大。这可能是因为基础模型相对较小,这意味着其基础知识可能不足以处理相对复杂的指令。
总结
如何评估微调数据的质量,是个有趣的话题,本文主要对《Instruction Mining: High-Quality Instruction Data Selection for Large Language Models》这一工作进行了介绍,该工作提出了一种专门用于指令微调的质量评估规则。
我们可以看到,该工作起到了一定的效果,但也有局限性,例如:
该工作只包含了以往工作中的少量简单指标,最近许多研究人员开始探索指令的多样性,这些指标可以进一步纳入。
该工作的方法只在单轮指令遵循和大部分由人类撰写的数据集上进行了实验,还没有在多轮和更复杂的对话数据集上进行测试。
该工作只研究了固定基础模型LLAMA-7B的指标值和推理损失值之间的关系,可以进一步扩展到更大的模型,如LLAMA-13B和LLAMA-65B,也可以进一步纳入更多的评估集和指令数据集,以进行进一步分析。
参考文献
1、https://arxiv.org/pdf/2307.06290v1
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。