走近大模型:ChatGPT是如何构造和清洗数据的?

2023-08-0211:17:01人工智能与大数据Comments1,667 views字数 2121阅读模式

数据是基础是现在LLM从业人的共识,尤其是高质量的数据。根据ChatGPT不同阶段的训练过程,数据也分为预训练数据(GPT)和指定微调数据(SFT,RLHF),前者用自回归的方式在尽可能多的数据上以自监督的方式进行上下文语境学习得到基础的大语言模型,后者则是通过多样且高质量的Instruction样本(三元组<指令,输入,输出>)来激发出大语言模型的能力,对齐下游任务或用户的输入。区别于两个阶段的目标,其涉及的数据需求,数据获取清洗等也不相同。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

一、预训练数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

主要有数据获取、数据清洗、数据配比三部分工作。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

1、数据获取文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

通常分开源、自建、爬取三种。在开源中常见的有wikipedia,书籍,CommonCrawl,代码,对话等类型。下图列举了LLama使用的数据分布。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

走近大模型:ChatGPT是如何构造和清洗数据的?

其中wikipedia由于质量较高基本上会被每个LLM使用。书籍则是为较长的上下文学习提供语料,现在分学科的书籍电子化和抽取是各家重点搞的数据。代码数据则能加强模型的逻辑推理能力,因为其实现通常是分步骤有逻辑的。尽可能整理自有数据和爬取外部数据是LLM项目讨论中最常见的话题。在中文领域中,常见的数据可分为几个档次,A档:知乎,小红书,头部GZH/头条文章,百科,经验,专业新闻网站,政务网站,行业垂类网站,比如起点,晋江,传统图书电子化;B档: 英文数据集翻译成中文,主要得益于原始的英文质量高,实践中会有一些较严重的翻译问题(语句不通顺,专业实体,不需要翻译的英文等);C档:知道,头条,抖音快手,自媒体新闻,微博,社区等UGC数据,这里有比较多的洗稿问题,需要从中清洗出有价值的数据。也有的工作在解析视频的字幕和语音数据,尤其是影视,电视节目相关的视频。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

前面是偏通用的数据收集方法,结合任务树去针对性的补充相应数据也是非常关键的。任务树是指希望模型在哪些任务上有相应的能力,这些任务可归纳成类似树的层次结构。过了数据收集冷启动阶段后,根据已有样本训练出个模型版本,根据模型在不同任务上的评测表现,对效果较差的任务针对性的去补充相应的样本,这种方式对下文中的instruction样本也是适用的,哪里缺少补哪里,哪里不好改哪里。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

2、数据清洗文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

可分为通用清洗方式和case驱动的清洗方式。通用清洗分质量、重复、安全三种维度,其中质量比较好理解,主要是去除一些低质量的文本,比如语句不顺序,包含奇怪的字符等等,这里可能借助些统计规则,也可能针对某些维度用传统的方式去构建有监督的分类模型。去重分为句子内,doc内,语料内三种粒度,其目的是为了清洗掉不合理的重复,因为互联网文本存在非常严重的洗稿搬运问题,避免在解码时产生重复的输出。也有的工作认为大模型对重复是非常敏感的,要尽可能的进行去重,去重是重中之重。就像人学习一样的,很多知识也只过一遍,比较难的才需要过多遍,过多的重复样本反而可能影响大模型在学习难样本上的表现。安全则是为了去除掉一些话题敏感内容,不健康内容等,也有的称为NSFW Filter(Not Safe For World)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

另一种清洗方式是case驱动的,根据评测的bad case或者老板们反馈的bad case,结合训练数据检索debug系统来定位是否训练样本存在类似的样本,同时这些样本也有类似的问题。一个badcase往往可能就代表一类问题或者一个流程上的bug,通过这个case举一反三,找到类似的case,可以实现某一类问题对应数据的清洗。这里全面有效的评测对数据的是至关重要的。相对来说,在大模型的早期偏一些通用的清洗,在中后期case驱动的清洗则更为关键。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

3、数据配比文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

预训练的过程是比较耗资源的且训练过程往往是不可逆的,实验代价比较大,枚举比较完备的消融实验更是不太可能。同时单单数据维度就有很多种变量,尤其是数据配比,有中英文配比,不同来源的数据配比,不同任务的数据配比,不同质量的数据配比(被过滤的低质量仍可能有比较多的误过滤的好样本)。这里常见的方式则是在小LLM上进行实验得出合适的配比,然后将结论迁移到大LLM上。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

二、指定微调数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

相比于上面的预训练阶段,指令微调阶段更强调样本的质量和多样性,两者缺一不可。多样性的不足会出现直接用预训练的模型有这个能力,反而指令微调后的模型没有了这个能力。质量的保证也是大家投入度比较高的任务,甚至不惜全部走人工都审核一遍的方式。国内自研更多是收集开源的instruction数据,翻译英文instruction数据,爬取ChatGPT,用常见的下游任务数据集抽样用来转成instruction样式补充,来进行快速的冷启动。其次结合任务树和case驱动,以主动学习的方式来人工去标注样本,在标注过程中,样本选取,标注标准和验收相比于传统任务则会更复杂,都是需要反复斟酌的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

有的工作发现利用少量的instruction样本进行tuning可快速提升模型在某些任务上的效果,实际坐下来靠少量的instruction样本是绝对不行的。如果是奔着做个通用的大模型,预训练和指定微调是缺一不可的,可能预训练更重要,因为有种说法是指定微调的作用只是将大模型的能力给激发出来,而大模型的能力则本身在预训练阶段就已经存在的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/52175.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ai/52175.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定