LLM适应性微调数据集分享
分享一下大模型的适应性微调数据集
LLM适应性微调数据集分享
大家好,今天我想和大家聊一聊大语言模型在预训练之后的适应性微调数据集。
要让这些大语言模型在具体任务中表现得更好,往往还需要进行适应性微调。这种微调主要分为两个步骤:指令微调和对齐微调。在这方面,指令微调尤其重要,因为它帮助模型理解和遵循特定的指令,提升模型的任务解决能力。
指令微调数据集
FLAN 和 P3
有几个常用的指令微调数据集值得我们关注。比如,FLAN这个数据集,它整合了62个不同的自然语言处理基础数据集,帮我们创建了一个面向指令的训练样本库,现在大家所说的 FLAN 实际上是指 FLAN-v2,它主要由四个子集组成:Muffin、NIV2、T0-SF 和 CoT。Muffin 包含了之前 FLAN 的 62 个任务,还新加入了 26 个任务,里面有对话数据和代码合成的数据。T0-SF 是从 T0 模型的数据中提取的,确保和 Muffin 的任务不重叠。NIV2 是指 Natural-Instructions v2 数据集,而 CoT 则是为了提高模型的推理能力,加入了九种不同的推理任务组合。
另外,FLAN-v2 对每个任务都设置了最大上限。这是因为在同一个混合数据集中,有些任务的数量要比其他任务多得多,这样在采样时可能会影响到模型的训练效果。
同时,P3也是个不容小觑的数据集,涵盖了超过270个自然语言处理任务的数据,整合了2000多种提示方式,有些任务由多个提示,涵盖了多选问答、分类任务、语言推断等多个任务,让模型在多方面都有所掌握。
日常对话数据集
除了这些,咱们还得聊聊对话类数据,日常对话数据集是一个基于真实用户对话构建的集合,其中的查询主要来自用户的真实提问,回复则是由人类标注员或者语言模型生成的。这些对话包括开放式生成、问答、头脑风暴和聊天等类型。今天我们主要讲讲几个常用的日常对话数据集,比如 ShareGPT、OpenAssistant 和 Dolly。
ShareGPT
首先,ShareGPT 这个数据集的名字来源于一个开源的数据收集平台。这个数据集来自一个开源平台,用户可以上传自己的对话数据,做一个全球范围内的对话分享。这些信息真的来自各地的用户,通过他们的真实提问和 ChatGPT 的回答积累而成,语言多元,因此让我们的模型学习到了不同文化背景下的交流方式。这些对话涉及到用户在使用 OpenAI 的 ChatGPT 时的提示和回复,主要是英语和其他一些西方语言。具体来说,用户的查询都是他们真实的提问或者指令,而 ChatGPT 则根据这些输入生成一些回答。这种数据集收集的方式使得对话内容更加真实和多样化。
OpenAssistant
接下来是 OpenAssistant。这个数据集是一个人工创建的多语言对话语料库,里面有 91,829 条用户提示和 69,614 条助手回复。OpenAssistant 涵盖了 35 种语言,每条数据基本都有人工标注的质量评级,比如回复的有用性和无害性等。与 ShareGPT 不同,这里的数据是用户真实提供的,这使得对话更具代表性。这样的标注方式也让我们可以更好地评估助手的表现。
Dolly
最后,我们来看看 Dolly。这个数据集是由 Databricks 发布的,专注于英语指令的数据。Dolly 包含了 15,000 个由人类生成的实例,主要目的是让大型语言模型与用户进行更符合人类价值的高效互动。这个数据集的标注工作由 Databricks 的员工完成,内容涉及 InstructGPT 论文中提到的 7 个领域,包括头脑风暴、分类、封闭式质量保证、生成、信息提取、开放式质量保证和总结等。这些领域的多样性让 Dolly 的数据更全面,能够帮助模型理解更广泛的指令和用户需求。
这些日常对话数据集为训练和评估语言模型提供了丰富的素材。通过真实的用户对话和专业的标注,我们可以更好地理解模型在不同场景下的表现。这些数据集不仅让模型学会如何与用户进行有效沟通,也在不断推动人机交互的进步。特别是在当前的科技背景下,能够快速、准确地理解用户的需求是非常重要的,而这些数据集正是实现这一目标的基础。
合成数据集
合成数据集通常是利用大型语言模型,根据事先设定的规则或方法来生成的。它们在训练语言模型时非常有用,帮助模型学习各种任务。两个比较有代表性的合成数据集是 Self-Instruct-52K 和 Alpaca-52K。
Self-Instruct-52k
先说说 Self-Instruct-52K。这个数据集是通过一种叫做 self-instruct 的方法生成的,包含了 52,000 条英语指令,以及 82,000 个输入和输出实例。过程是这样的:最开始,研究人员人工收集了 175 个种子任务,每个任务有一条指令和一个包含输入与输出的例子。接着,他们会随机抽取 8 条指令作为示例,然后用 GPT-3 来生成新的指令。生成的新指令和之前的指令一起,再用 GPT-3 生成对应的实例输入和输出。这个过程会重复进行,直到数据量逐渐增多。
在每次生成新数据的时候,团队还会对数据进行过滤,去掉低质量或重复的内容,确保最后加入的数据集都是有用的。通过这种反复的迭代,最终得到了 52,000 条指令和 82,000 个实例数据。而且,每条指令通常都会生成多个输入输出的例子,这让数据集变得更加丰富。
Alpaca-52k
接着是 Alpaca-52K。这个数据集同样是基于 self-instruct 方法构建的,不过它是在 Self-Instruct-52K 的 175 个种子任务的基础上,利用 OpenAI 的 text-davinci-003 模型生成的。Alpaca-52K 也包含 52,000 条不重复的指令,但与 Self-Instruct-52K 不同的是,每条指令只对应一个输入输出实例。
而且在生成数据时,Alpaca-52K 还考虑到了输入的可选性,最终的结果中只有 40% 的数据包含输入部分。这也意味着 Alpaca-52K 包含了两种不同的提示模板:一种是包含输入的,另一种则不包含输入。这种设计让数据集在使用时更加灵活,可以适应不同的任务需求。
总的来说,合成数据集通过这种系统化的方法,为语言模型的训练提供了大量高质量的数据。这不仅提高了模型的性能,还使得模型在各种应用场景中更具适应性。通过不断生成和优化数据,研究人员能够让模型更好地理解人类的指令和需求,从而在实际应用中表现得更加智能和高效。
人类对齐数据集
那怎么让那些智能助手更懂我们、更符合我们的期待呢。为了让智能助手能够更好地理解我们、和我们人类价值观对齐,回答我们的问题,研究者们可是下了不少功夫。他们打造了一些特别的的数据集,用来教智能助手怎么更符合我们的价值观和偏好。
首先,这些智能助手它们就像小学生一样,需要通过大量的例子来学习。这些例子就是各种各样的对话、问题和他的回答。研究者们会根据这些回答是否符合我们的价值观和偏好,来给它们打分。这样,智能助手就能慢慢学会怎么给出更好的回答了。
第一个“训练工具”:HH-RLHF
这个工具里面有很多对话例子,大概有169,000个呢!每个例子都是模拟我们向智能助手提问的场景。比如,我们可能会问智能助手一些生活上的小窍门,或者请它帮忙完成某个任务。智能助手会给出两个回答,然后研究者会根据这些回答是否有用、是否无害来选择其中一个。这样,智能助手就能学会什么是有用的、什么是无害的回答了。
第二个“训练工具”:SHP
这个工具主要关注的是回答的有用性。它里面有385,000个例子,涵盖了各种主题,从做饭的小技巧到法律建议都有。每个例子都是基于网上的真实帖子构建的,包含了一个问题和两个评论。这两个评论中,有一个被大家认为更有用,另一个则不太有帮助。通过这些例子,智能助手就能学会怎么给出更有用的回答了。
第三个“训练工具”:PKU-SafeRLHF
这个工具可是由专家们精心打造的,里面有330,000个例子。每个例子都有一个问题和两个回答,而且每个回答都有安全性标签,用来表示这个回答是否安全。专家们还会对这些回答在有用性和无害性方面进行比较和打分。这样,智能助手就能学会怎么在保证安全的前提下,给出更有用的回答了。
第四个“训练工具”:Stack Exchange Preferences
这个工具专注于回答的有用性,里面包含了来自一个知名编程问答社区的约1,000万个问题和答案。每个问题都有两个或更多的候选答案,每个答案都有根据投票数计算得出的分数,还有一个表示是否被选中的标签。通过这些例子,智能助手就能学会在多个答案中选出最有用的那一个。
第五个“训练工具”:Sandbox Alignment Data
这个工具有点儿特别,它让多个智能助手在一个虚拟环境中互相“交流”,根据彼此的反馈来修正自己的回答。这个环境模拟了人类社交互动的场景,智能助手们会根据问题给出回答,然后互相评价对方的回答。通过这种方式,智能助手们就能学会怎么给出更符合人类期待的回答了。
第六个“训练工具”:CValues
这个工具是专门为中文智能助手打造的,它提出了安全性和责任性这两个评估标准。里面有两种类型的提示:安全性提示和责任性提示。安全性提示主要用于测试智能助手的安全性表现,这些提示的回复被人工标注为安全或不安全;责任性提示则由领域专家提供,用于评估智能助手在特定领域内的责任性表现。专家们也为这些提示的回复进行了打分。通过这个工具,中文智能助手就能学会在保证安全的前提下,更负责任地回答问题。
总而言之,大语言模型的训练依赖于多样性极高的数据集,通过不断微调和优化,才能让它们在具体应用中展现出卓越的能力。这不仅是技术的进步,更是一种人工智能在语言理解领域革命性的蜕变。未来,我们期待看到这些模型在更多领域的应用,改变我们与技术的互动方式。
那么,大家对于这些模型和数据集有什么想法呢?