大语言模型的训练数据
玩过大语言模型的人都知道,那些大模型似乎无所不知,天文地理,历史人文,科学艺术涵盖了很多的领域,远超个人能够学习掌握的范畴。大家有没有想过,这些数据从哪儿来的,又是怎样用来训练大模型的?今天我们以ChatGPT为例子,给大家介绍一番。需要提醒大家,以下只是我个人的分析。
大语言模型的训练数据,也称作语料,主要来源有:
- 社交媒体上的发帖,跟帖、讨论等等,比如Twitter,Facebook,LinkedIn。
- 维基百科上的文章和内容,涵盖了多种语言和广泛的主题。
- 各类新闻网站和媒体的新闻文章,提供关于时事和历史背景相关的信息。
- 含有口语语言的媒体文件转录,比如很多大公司会保存客服会话过程。
- 各个学科领域的科学和学术期刊、出版物和研究论文的文本。
- 在线论坛和留言板(如Reddit和Quora)的讨论和对话。
- 各种书籍的摘录和文本,涵盖不同的流派、主题和语言。
- 各种开源的代码仓库,比如 GitHub。
- 从各类网站上通过爬虫抓取的数据。
- 其他开源或购买的训练数据集。
不同的数据集,为ChatGPT带来了不同领域的知识,让它的功能更加全面,也提高了它的文本生成质量,也可以让它更接地气。比如各类书籍是ChatGPT正确掌握语言的最佳途径;维基百科,学术出版物、科学期刊让ChatGPT掌握了高深的各个科学领域的知识;代码仓库,让ChatGPT成为一个编程高手,各种新闻类的训练数据,让它储存了大量的时事内容,各种口语内容,让它说话更接地气,各种社交媒体,论坛的内容,使得它能够熟悉各种最新的网络用语。
但是这些数据,除了开源或者购买的已经经过处理的数据集,它们还不能拿来直接使用,它们还需要经过一个步骤,才能变成可以使用的训练数据,这就是整个最高科技的领域里最低端的工作:数据清洗。ChatGPT所使用的基础模型叫 Transformer,就是和变形金刚一个词,它是 Google 的研究人员发明的。那为什么 Google 的大模型没有 ChatGPT 那么牛的。背后最大的秘密就是,OpenAI有更加出色的训练数据。不幸的是,最好的训练数据,来自人工清洗,这算不算一个黑色幽默?
数据清洗,包含了以下这些工作:
- 提取文本内容,去除HTML标签、URL,特殊字符等,这部分工作可以通过成熟的程序来完成,出错的概率非常小。
- 文本修正,比如乱码,错别字等,这部分有程序可用,准确率也相当高。
- 然后就是文本去重,包括文档内,文档间去重,完全可以用程序完成。在这一步,通过网络爬虫抓取的数据,会被过滤到百分之九十以上。
- 然后就是分句、分词和词性标注等等。这部分也有程序可用,准确率也相当高,但是无法做到百分之百准确。
- 此外还可以应用一些文本增强技术,如随机插入、掩码或替换某些词语等,来增加数据的多样性和模型的鲁棒性。
- 之后就比较难处理了,比如处理敏感词,处理偏见、倾向性内容等等。人工处理是最准确,但又是最低效的。
GPT3的经过清洗后的总训练数据量大概在7-800GB,其中大部分来自网络爬虫,约超过500GB。
相比于英文的训练语料,中文的语料质量要差很多,这也是中文大模型质量比较差的一个原因。
另外,在训练过程中不断根据测试结果对模型进行人工干预,调整训练数据,可能也是 ChatGPT 胜过谷歌的原因。
很多大公司在追求大而全的大模型,这当然是一个方向。但我们可能更需要一个掌握了普通人知识,能够正常说话的人工智能。所以,提高语料质量,精简语料内容,提高模型的日常对话能力,外加一定的即时学习能力,能够在移动设备上使用,或许更能获得商业上的成功。