也谈微调数据质量、多样性规模对大模型性能的影响与评估方案:Belle项目开源实验工作报告介绍
The following article is from 老刘说NLP Author 刘焕勇
本文主要对Belle的近期的开源工作进行介绍,最近有很多声称性能逼近chatgpt,chatgpt4的模型,这无疑引起重视。
针对当前仍然缺乏对这些模型的深入评估的比较,即目前的评估要么数量不足,要么完全依赖于人为评估,必须研究这些高质量的数据集如何增强指令跟随模型的问题。
《Towards Better Instruction Following Language Models for Chinese: Investigating the Impact of Training Data and Evaluation》一文研究了训练数据的数量、质量和语言分布等各种因素对模型性能的影响。
此外,为了提高中文领域模型的性能和训练/推理效率,该工作扩展了LLaMA的词汇表,并对3.4B个中文单词进行了二次预训练,LLaMA是开源性能最接近GPT3等专有语言模型的模型。
通过案例分析,该工作发现评估集在综合性方面存在局限性,导致模型得分的提高与实际用户体验不一致。
这就说到一个问题,构建一个高质量的评估集是一个重大挑战,因为它需要在保持平衡难度梯度的同时包含各种不同的使用场景。
如果评估示例主要由困难案例组成,那么所有模型的性能都会很差,因此很难辨别各种训练策略的效果。
相反,如果评估示例主要是简单的,那么评估将失去其比较价值。此外,必须确保评估数据与训练数据保持不同。
基于这些观察结果,该工作警告不要假设该模型仅通过在有限数量的测试样本上获得有利的结果就达到了与ChatGPT相当的性能水平。
该工作认为,优先考虑不断制定一套全面的评价体系是非常重要的。
一、微调训练数据对模型的影响
最近,大量的公共努力致力于开发具有类似于ChatGPT功能的低成本模型,从而促进开源会话模型的发展。
然而,对这些模型的性能仍然缺乏全面深入的评估。在这项研究中,该工作训练数据对考察了训练数据因素,包括数量、质量和语言分布,对模型性能的影响。
该工作基于几个可公开访问的高质量教学数据集以及自己的中文多轮对话。
其中,在数据集上,使用1000个样本的评估集来评估各种模型,包括九个真实世界的场景。
该工作的目标是用定量分析来补充手动评估,为开源聊天模型的持续发展提供有价值的见解。
虽然评估数据集由1000个中文指令样本组成,涵盖9个真实用户场景。值得注意的是,这个评估集仍然不够全面,模型在评估集中的得分可能与实际用户体验不同,建立一套多样化和高质量的评估体系将是一项长期任务。
因为,就LLM的评估而言,有许多对大型语言模型的评估,如OPT(Zhang等人,2022)、BLOOM(Workshop等人,2022年)、GLM(Zeng等人,2023)和GPT-3(Brown等人,2020),(Liang et al,2022)对30个大型语言模型进行了全面评估。
其中,(Qin等人,2023)评估了ChatGPT在各种NLP任务上的性能。
(Ye等人,2023)比较了GPT和GPT-3.5系列模型的性能。
(Bang等人,2023)比较了ChatGPT在多种语言和模式下的推理、减少幻觉和互动能力。
然而,许多评估数据由传统的NLP任务组成,这与现实世界中的人类使用场景不同。
(Srivastava et al.,2022)提供了204个任务,这些任务被认为超出了当前大型语言模型的能力。
(Suzgun等人,2022)从BIG Bench中选择了23项最困难的任务,形成了BIG Bent Hard(BBH)。
二、如何生产数据
ChatGPT在生成指令跟随数据方面表现出了非凡的能力,这使该模型能够在各种任务上实现强大的性能。
然而,由于仅基于这类数据对上下文的理解有限,它参与多轮次对话的能力仍然不足。
因此,该工作进一步要求ChatGPT生成多回合对话数据,它需要在多轮中生成用户和人工智能助手之间的对话。
由于ChatGPT倾向于产生有限和重复的对话场景,如天气查询和机票预订,该工作提示ChatGPT进行第一轮以确定对话的主题,然后让ChatGPT相应地继续对话。
不过,需要注意的是,虽然ChatGPT可以以相对较低的成本生成高质量的数据,但生成的数据仍然存在重复和逻辑不一致等问题。
为了提高生成数据的质量,我们首先在token级别和语义级别删除重复数据,并在最后使用困惑度(PPL)等指标来选择高质量的数据,并通过检查词频分布来确保数据的多样性。
三、如何评估数据
本文中使用的评估数据来自Ji等人(2023),在此基础上从语义上消除了原始评估数据的重复,并将数学和代码任务重新分类到其他任务中。
原因有两个:
首先,这些任务相对困难,目前的开源模型在这些任务上表现不佳,这可能会影响我们对其他能力的评估;
其次,ChatGPT在评估这两项任务时不够可靠,这可能导致实验结果有偏差。
上图展示了评估集的任务类别分布,将数学和代码任务分为“其他任务”,但由于任务类别的分布的不平衡,该工作在计算总分时使用宏观平均。
对于重写、生成和头脑风暴,没有提供参考答案回复,ChatGPT被要求在不参考标准答案的情况下评估这些任务,因为这三个任务类别的每个指令都有一个以上的答案。
图2显示了评估集的单词cloud,从中可以发现ChatGPT倾向于生成某些特定主题的数据,从下图3中,可以看到微调数据集的长度分布。
四、LLaMA预训练词表扩充与对比实验
1、LLaMA继续预训练
由于LLaMA的词汇构建缺乏对汉语的优化,一个汉字可能会被拆分为2到3个字节的token,这严重影响了模型对中文数据的微调和推理速度(Cui和Yang,2023)。
为了解决这个问题,该工作在12M行中文文本上使用句子片段(Kudo和Richardson,2018)训练了一个基于字节对编码(BPE)算法的标记器,并将其词汇大小设置为50K。
并将训练后的新词汇与原始LLaMA词汇合并,生成79458个标记的新词汇。
之后,通过调整单词嵌入的大小,并在其他参数固定的情况下,对3.4B个中文单词进行LLaMA预训练,最终在5000行中文文本上测试了扩展标记器和原始标记器,一行的平均标记从733个减少到291个。
2、基础模型的选择
在实验中,采用了两个具有7B参数的基础模型:
一个是LLaMA(Touvron等人,2023),由Meta AI发布。
另一个是LLaMA-EXT,它是通过扩展普通LLaMA的词汇表并进一步预训练3.4B中文单词而获得的,其中只有单词嵌入被更新。
3、训练设置
所有微调的模型都使用与开源项目相同的超参数设置进行了微调,但学习率较小。
在训练模型时不使用验证集,并且采用最后一个检查点进行评估。
在硬件上,在8个A100 GPU上进行了实验,每个GPU都有80G内存。
4、数据集
该工作实验使用六个数据集进行,其中五个是公开的,一个是专有的。
Alpaca-3.5-en(Taori等人,2023),由斯坦福Alpaca发布,由52K指令组成。这些样本由text-davinci-003生成。
Alpaca-3.5-zh(Cui和Yang,2023),是Alpaca-3.5-en的中文翻译版本。
Alpaca-4-en,Alpaca-4-zh(Peng等人,2023),5由LLaMA-GPT4发布,均包含52K指令-以下样本。这些样本是由GPT-4生成的。为了获得alpaca-4-zh,Peng等人(2023)首先使用ChatGPT将52K指令翻译成中文,然后要求GPT-4用中文回答。
ShareGPT(ShareGPT,2023),是与ChatGPT的用户共享对话,由8.3K个样本组成,进行了三个步骤的数据清理(Chiang等人,2023)。只保留英语和汉语对话。此外,对话被划分为较小的片段,最大长度为2048个token。最后得出了120009个对话。
Belle-3.5,自己的数据集,由指令跟随样本和多回合对话组成。该数据集包含500000个样本,从230万个原始数据中过滤出来的。
为了在不同数据设置下进行实验时简化数据集名称,该工作定义了两个函数来识别给定数据集的语言。zh(d)表示d的中文版本,en(d)则表示英文版本。
5、评测指标
ChatGPT被要求评估指令遵循模型生成的响应。对于所有指令,ChatGPT给出的分数在0到1之间,其中0分是最差的,1分是最好的。
为了减少随机性,该工作将temperature设置为0.001以生成模型,通过在2023年4月15日调用gpt-3.5-turbo API来实现评估。
通过计算每个任务类别的模型得分,并使用这些类别的宏观平均值得出其在评估集上的总体性能。
考虑到ChatGPT在评估数学和编码任务方面的局限性,分别计算包括所有类别的分数(表示为分数)和排除这两个类别的分数。
表2给出了主要的实验结果,如下所示:
6、实验结果
通过指标,我们的发现,
首先,扩充词表的影响。在相同的训练数据下,对LLaMA-EXT的微调优于对LLaMA的微调,这可能是由于对3.4B个中文单词的持续预训练,从而增强了LLaMA对中文的理解。
其二,数据质量的影响。LLaMA EXT在使用Alpaca-4-zh训练时的性能超过了使用Alpaca-3.5-zh训练的模型,从而突出了高质量训练数据对增强模型性能的关键影响。
其三,语言分布的影响。将在zh(alpaca3.5&4)上训练的LLaMA-EXT的性能与在en(alpaca-3.5&4)训练的模型进行对比后,可以发现这两个模型之间的性能差异并不大,这表明该模型理解一种语言指令的能力可以有效地转移到另一种语言,因为其固有的多语言能力源于预先训练的语言模型。
例如,zh(Alpaca-3.5和4)+sharegpt和en(Alpaca3.5&4)+sharegpt的得分几乎相同,这意味着在英语训练数据中添加适量的中文数据(来自sharegpt)可以显著提高中文环境下的表现。
然而,也发现将sharegpt合并到zh(Alpaca3.5&4)中不会产生任何进一步的改进。这可能是由于无法使用评估集验证模型在多轮对话中的熟练程度。
其四,数据量在训练数据量方面,数据量的增加已被证明可以显著提高性能。值得注意的是,如此巨大的改进可能部分来自belle-3.5和评估数据之间的相似分布,评估数据的类别、主题和复杂性将对评估结果产生巨大影响。
最后,与ChatGPT进行比较后,可以发现模型和ChatGPT之间存在相当大的性能差距。考虑到ChatGPT的评估能力有限,以及评估数据的不完整性,预计这些差异可能比评估集中观察到的分数差异还要大。
四、构建评估集的挑战和经验
通过案例分析,可以发现评估集在综合性方面存在局限性,导致模型得分的提高与实际用户体验不一致。
这就说到一个问题,构建一个高质量的评估集是一个重大挑战,因为它需要在保持平衡难度梯度的同时包含各种不同的使用场景。
如果评估示例主要由困难案例组成,那么所有模型的性能都会很差,因此很难辨别各种训练策略的效果。
相反,如果评估示例主要是简单的,那么评估将失去其比较价值。此外,必须确保评估数据与训练数据保持不同。
基于这些观察结果,该工作警告不要假设该模型仅通过在有限数量的测试样本上获得有利的结果就达到了与ChatGPT相当的性能水平。
并认为,优先考虑不断制定一套全面的评价体系是非常重要的。
此外,该研究还发现该工作的模型倾向于生成更长的响应,这可能是由于训练集中存在GPT-4生成的或多轮对话数据。
五、总结
本文主要介绍了Belle在模型评估方面的一些工作,该通过调查各种训练数据因素的影响,如数量、质量和语言分布,在一定程度解决了对开源会话模型进行综合评估的日益增长的需求。
通过利用可公开访问的高质量教学数据集和中文多回合对话,该工作9个真实世界场景中对1000个样本的评估集上评估了不同的模型。
最后,该工作还总结了构建综合评估数据集的几个挑战,并认为有必要优先开发此类评估集。
实际上,如何更为公正地去评估大模型,尤为重要,尤其是最近这种浮夸风,尤其以Vicuna为首的做法,尤其不严谨。
而在这方面,警告我们需要做更大数据量,更为全面的评估,如安全性、技能的全面性等,以得到一个与实际业务更为接近且公正地结果,这需要我们共同努力。
参考文献
1、Yunjie Ji, Yan Gong, Yong Deng, Yiping Peng, Qiang Niu, Baochang Ma, Xiangang Li, "Towards Better Instruction Following Language Models for Chinese: Investigating the Impact of Training Data and Evaluation", https://github.com/LianjiaTech/BELLE/blob/main/docs/Towards%20Better%20Instruction%20Following%20Language%20Models%20for%20Chinese.pdf
进技术交流群请添加AINLP小助手微信(id: ainlp2)
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏