GPT模型成功的背后用到了哪些以数据为中心的人工智能技术?

4a66c35e53e7632881a2bcbcd75ed524.gif

©作者 | 查道琛

单位 | 莱斯大学博士生

研究方向 | 强化学习、数据挖掘

人工智能(Artificial Intelligence, AI)最近取得了巨大的进展,特别是大语言模型(Large Language Models, LLMs),比如最近火爆全网的 ChatGPT 和 GPT-4 [1]。GPT 模型在各项自然语言处理任务上有着惊人的效果。至于具体有多强,这里就不再赘述了。做了这么多年 AI 研究好久没这么激动过了。没试过的朋友赶紧试一下! 

正所谓「大力出奇迹」,把参数量调「大」能提高模型性能已经成为了大家的普遍共识。但是仅仅增加模型参数就够了吗?仔细阅读 GPT 的一系列论文后就会发现,仅仅增加模型参数是不够的。它们的成功在很大程度上还归功于用于训练它们的大量和高质量的数据。 

在本文中,我们将从数据为中心的人工智能视角 [2] 去分析一系列 GPT 模型(之后会用 Data-centric AI 以避免啰嗦)。Data-centric AI 大体上可以分文三个目标 [3]:训练数据开发(training data development)、推理数据开发(inference data development)和数据维护(data maintenance)。本文将讨论 GPT 模型是如何实现(或者可能即将实现)这三个目标的。感兴趣的读者欢迎戳下方链接了解更多信息。

cf14b9a618702f574e7e0472e600fa47.png

综述论文:

https://arxiv.org/pdf/2303.10158.pdf

短篇介绍:

https://arxiv.org/abs/2301.04819

Github资源:

https://github.com/daochenzha/data-centric-AI

ac164375be33f37dc49042b029d7c55e.png

什么是大语言模型?什么又是GPT模型?

这章将简单介绍下大语言模型和 GPT 模型,对它们比较熟悉的读者可以跳过。大语言模型指的是一类自然语言处理模型。顾名思义,大语言模型指的是比较「大」的(神经网络)语言模型。语言模型在自然语言处理领域已经被研究过很久了,它们常常被用来根据上文来推理词语的概率。例如,大语言模型的一个基本功能是根据上文预测缺失词或短语的出现概率。我们常常需要用到大量的数据去训练模型,使得模型学到普遍的规律。

94adfb006746bc14b0556ff657b6a2a2.png

▲ 通过上文来预测缺失词示意图

GPT 模型是由 OpenAI 开发的一系列大语言模型,主要包括 GPT-1 [4],GPT-2 [5],GPT-3 [6],InstructGPT [7] 以及最近上线的 ChatGPT/GPT-4 [8]。就像其他大语言模型一样,GPT 模型的架构主要基于 Transformer [9],以文本和位置信息的向量为输入,使用注意力机制来建模词之间的关系。

04d93a646419110fc67def8e9bebbcdd.png

▲ GPT-1模型的网络结构,图片来自原论文 https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf

之后的 GPT 系列模型结构大体上都与 GPT-1 类似,主要区别在于更多参数(更多层,更多隐含层维度等等)。

d789fb61dcf0d4b5c85bf0c450324c80.png

▲ GPT系列模型大小比较


ab163ad74441571512dc86b175d0c5f3.png


什么是Data-centric AI?

Data-centric AI 是一种搭建 AI 系统的新理念,被吴恩达老师大力倡导。我们这里引用下他给出的定义。

Data-centric AI is the discipline of systematically engineering the data used to build an AI system. 

Andrew Ng

传统的搭建 AI 模型的方法主要是去迭代模型,数据相对固定。比如,我们通常会聚焦于几个基准数据集,然后设计各式各样的模型去提高预测准确率。这种方式我们称作以模型为中心(model-centric)。然而,model-centric 没有考虑到实际应用中数据可能出现的各种问题,例如不准确的标签,数据重复和异常数据等。准确率高的模型只能确保很好地「拟合」了数据,并不一定意味着实际应用中会有很好的表现。 

与 model-centric 不同,Data-centric 更侧重于提高数据的质量和数量。也就是说 Data-centric AI 关注的是数据本身,而模型相对固定。采用 Data-centric AI 的方法在实际场景中会有更大的潜力,因为数据很大程度上决定了模型能力的上限。 

需要注意的是,「Data-centric」与「Data-driven」(数据驱动),是两个根本上不同的概念。后者仅强调使用数据去指导 AI 系统的搭建,这仍是聚焦于开发模型而不是去改变数据。

091d5dbd3974d7283fbf1fd19c7caef7.png

▲ Data-centric AI和model-centric AI的区别,图片来源于https://arxiv.org/abs/2301.04819

Data-centric AI 框架 [2] 包括三个目标: 

1. 训练数据开发(training data development)旨在构建足够数量的高质量数据,以支持机器学习模型的训练。 

2. 推理数据开发(inference data development)旨在构建模型推理的数据,主要用于以下两个目的: 

  • 评估模型的某种能力,比如构建对抗攻击( Adversarial Attacks)数据以测试模型的鲁棒性 

  • 解锁模型的某种能力,比如提示工程(Prompt Engineering) 

3. 数据维护(data maintenance)旨在确保数据在动态环境中的质量和可靠性。在实际生产环境(production environment)中,我们并不是只训练一次模型,数据和模型是需要不断更新的。这个过程需要采取一定的措施去持续维护数据。

3a0fbf8affdc2eb4a9e80c6f4f251a7c.png

▲ Data-centric AI框架第二层是目标,第三层是子目标,图片来源于 https://arxiv.org/abs/2303.10158

c0975b7ff7230d687bd68f6e521389ed.png

为什么Data-centric AI是GPT模型取得成功的重要原因?

数月前,Yann LeCun 发文称 ChatGPT 在技术上并不是什么新鲜事物。的确如此,ChatGPT 和 GPT-4 中使用的方法,比如 Transformer、「从人类反馈中进行的强化学习」(Reinforcement Learning from Human Feedback,RLHF)等都不是什么新技术。即便如此,ChatGPT 还是取得了以前的模型无法企及的惊人效果。那么,是什么推动了它的成功?

77b8265b1638134c5b059b81d6713888.png

毋庸置疑,增加模型参数的数量对 GPT 模型的成功至关重要,但这只是其中的一个原因。通过详细阅读 GPT-1、GPT-2、GPT-3、InstructGPT 和 ChatGPT/GPT-4 论文中有关数据的描述,我们可以明显看出 OpenAI 的工程师们花了极大心血去提高数据的质量和数量。以下,我们用 Data-centric AI 框架从三个维度进行分析。 

训练数据开发:从 GPT-1 到 ChatGPT/GPT-4,通过更好的数据收集(data collection)、数据标注(data labeling)和数据准备(data preparation)策略,用于训练 GPT 模型的数据数量和质量都得到了显著提高。以下括号中标识了每个具体策略对应到 Data-centric AI 框架中的子目标。 

GPT-1:训练使用了 BooksCorpus [10] 数据集。该数据集包含 4629.00 MB 的原始文本,涵盖了各种类型的书籍,如冒险、奇幻和浪漫等。 

  • 用到的 Data-centric AI 策略:无。 

  • 结果:预训练之后,在下游任务微调可以提高性能。 

GPT-2:训练使用了 WebText [11] 数据集。这是 OpenAI 的一个内部数据集,通过从 Reddit 上抓取出站链接创建而成。 

  • 用到的 Data-centric AI 策略:

    • 仅筛选并使用 Reddit 上至少获得 3 个 karma 及以上的链接(数据收集) 

    • 用 Dragnet [12] 和 Newspaper [13] 这两个工具去提取纯文本(数据收集) 

    • 用了一些启发式策略做了去重和数据清洗,具体策略论文没有提到(数据准备) 

  • 结果:经过筛选后,获得了 40 GB 的文本(大概是 GPT-1 所用数据的 8.6 倍)。GPT-2 即便在没有微调的情况下也能取得很不错的效果。 

GPT-3:训练主要使用了Common Crawl [14],一个很大但质量不算很好的数据集。 

  • 用到的 Data-centric AI 策略:

    • 训练一个分类器来过滤掉低质量的文档。这里比较有意思的是,OpenAI 把 WebText 当作标准,基于每个文档与 WebText 之间的相似性来判断质量高低(数据收集) 

    • 使用 Spark 的 MinHashLSH 对文档进行模糊去重(数据准备) 

    • 把之前的 WebText 扩展下也加了进来,还加入了 books corpora 和 Wikipedia 数据(数据收集) 

  • 结果:在对 45TB 的纯文本进行质量过滤后,获得了 570GB 的文本(仅选择了 1.27% 的数据,可见对质量把控的力度很大,过滤完后的文本大约是 GPT-2 的 14.3 倍)。训练得到的模型比 GPT-2 更强了。 

InstructGPT:在 GPT-3 之上用人类反馈去微调模型,使得模型与人类期望相符。 

  • 用到的 Data-centric AI 策略:

    • 使用人类提供的答案来用有监督的方式微调模型。OpenAI 对标注人员的选择极为严苛,对标注者进行了考试,最后甚至会发问卷确保标注者有比较好的体验。要是我的研究项目需要人工标注,能有人理我就不错了,更别谈考试和问卷(数据标注)。 

    • 收集比较数据(人类对产生的答案根据好坏程度排序)来训练一个奖励模型,然后基于该奖励模型使用「从人类反馈中进行的强化学习」(Reinforcement Learning from Human Feedback,RLHF)来微调(数据标注)。

  • 结果:InstructGPT 产生的结果更加真实、有更少的偏见、更符合人类的预期。

ChatGPT/GPT-4:至此,产品走向了商业化,OpenAI 不再「Open」,不再披露具体细节。已知的是 ChatGPT/GPT-4 在很大程度上遵循了以前 GPT 模型的设计,并且仍然使用 RLHF 来调整模型(可能使用更多、更高质量的数据/标签)。鉴于 GPT-4 的推理速度比 ChatGPT 慢很多,模型的参数数量大概率又变多了,那么也很有可能使用了一个更大的数据集。 

从 GPT-1 到 ChatGPT/GPT-4,所用的训练数据大体经历了以下变化:小数据(小是对于 OpenAI 而言,对普通研究者来说也不小了)->大一点的高质量数据->更大一点的更高质量数据->高质量人类(指能通过考试的标注者)标注的高质量数据。模型设计并没有很显著的变化(除了参数更多以顺应更多的数据),这正符合了 Data-centric AI 的理念。

从 ChatGPT/GPT-4 的成功,我们可以发现,高质量的标注数据是至关重要的。在 AI 的任何子领域几乎都是如此,即便是在很多传统上的无监督任务上,标注数据也能显著提高性能,例如弱监督异常检测 [15]。OpenAI 对数据和标签质量的重视程度令人发指。正是这种执念造就了 GPT 模型的成功。这里顺便给大家推荐下朋友做的可视化文本标注工具 Potato [16],非常好用! 

推理数据开发:现在的 ChatGPT/GPT-4 模型已经足够强大,强大到我们只需要调整提示(推理数据)来达到各种目的,而模型则保持不变。例如,我们可以提供一段长文本,再加上特定的指令,比方说「summarize it」或者「TL;DR」,模型就能自动生成摘要。在这种新兴模式下,Data-centric AI 变得更为重要,以后很多 AI 打工人可能再也不用训练模型了,只用做提示工程(prompt engineering)。

cd0f7e4ee51554fd9aac7415ba3eb569.png

▲ 提示工程示例,图片来源于https://arxiv.org/abs/2303.10158

当然,提示工程是一项具有挑战性的任务,它很大程度上依赖于经验。这篇综述 [17] 很好地总结了各种各样的方法,有兴趣的读者可以继续阅读。与此同时,即使是语义上相似的提示,输出也可能非常不同。在这种情况下,可能需要一些策略去降低输出的方差,比如 Soft Prompt-Based Calibration [18]。

7d372df451a875c3159a9a9de212aa00.png

▲ Soft prompt-based calibration,图片来源于https://arxiv.org/abs/2303.13035v1

大语言模型的推理数据开发研究仍处于早期阶段。我相信在不久的将来,很多其他任务中用到过的推理数据开发方法 [3] 也会逐渐被迁移到大语言模型中,例如构建对抗攻击(Adversarial Attacks)数据以测试模型的鲁棒性。 

数据维护:作为一款商业产品,ChatGPT/GPT-4 一定不是仅仅训练一次就结束了,而是会被持续更新和维护。我们在外部没办法知道 OpenAI 数据维护具体是如何进行的。因此,我们只能推测。OpenAI 可能采取了如下策略: 

1. 持续数据收集:当我们使用 ChatGPT/GPT-4 时,我们输入的提示和提供的反馈可以被 OpenAI 用来进一步提升他们的模型。在此过程中,模型开发者需要设计监测数据质量的指标和维护数据质量的策略,以收集更高质量的数据。 

2. 数据理解工具:开发各种工具来可视化和理解用户数据可以帮助更好地理解用户需求,并指导未来的改进方向。 

3. 高效数据处理:随着 ChatGPT/GPT-4 用户数量的迅速增长,高效的数据管理系统需要被开发,以帮助快速获取相关数据进行训练和测试。

043e0fb4d0a41f7fd433450f35251088.png

▲ ChatGPT/GPT-4 会收集用户反馈


6d3e1d363db3a4a1738e3d8db3751319.png


从大语言模型的成功中我们能学到什么?

大语言模型的成功可以说是颠覆性的。展望未来,我做几个预测:

Data-centric AI 变得更加重要。经过了多年的研究,模型设计已经相对比较成熟,特别是在 Transformer 出现之后(目前我们似乎还看不到 Transformer 的上限)。提高数据的数量和质量将成为未来提高 AI 系统能力的关键(或可能是唯一)途径。此外,当模型变得足够强大时,大多数人可能不需要再训练模型。相反,我们只需要设计适当的推理数据(提示工程)便能从模型中获取知识。因此,Data-centric AI 的研究和开发将持续推动未来 AI 系统的进步。 

大语言模型将为 Data-centric AI 提供更好的解决方案。许多繁琐的数据相关工作目前已经可以借助大语言模型更高效地完成了。例如,ChatGPT/GPT-4 已经可以编写可以运行的代码来处理和清洗数据了。此外,大语言模型甚至可以用于创建训练数据。例如,最近的研究表明,使用大语言模型合成数据可以提高临床文本挖掘模型的性能。 

数据和模型的界限将变得模糊。以往,数据和模型是两个分开的概念。但是,如今当模型足够强大后,模型成为了一种「数据」或者说是数据的「容器」。在需要的时候,我们可以设计适当的提示语,利用大语言模型合成我们想要的数据。这些合成的数据反过来又可以用来训练模型。这种方法的可行性在 GPT-4 上已经得到了一定程度的验证。

在报告中,一种被称作 rule-based reward models(RBRMs)的方法用 GPT-4 自己去判断数据是否安全,这些标注的数据反过来又被用来训练奖励模型来微调 GPT-4。有种左右手互搏的感觉了。我不经在想,之后的模型会通过这种方式实现自我进化吗?细思极恐……

e53d106304f2eef72d5afe61f8b3b59b.png

▲ 用ChatGPT来合成数据训练下游模型,图片来源于 https://arxiv.org/abs/2303.04360

回想起五年前,我还在纠结「如何才能提高文本分类的准确率」,多次失败的经历曾让我一度怀疑自然语言处理和 AI 没有半点关系。如今 ChatGPT/GPT-4 惊人的能力让我提前见证了历史! 

未来 AI 的发展将走向何方?大语言模型的进展日新月异,经常看到一些研究自然语言处理的朋友们担心大模型的出现会不会让 AI 科研无路可走了。我认为完全不需要有这种担心。技术永远是不断进步的。新技术的出现不可避免会取代旧的技术(这是进步),但同时也会催生更多新的研究方向。比如,近年来深度学习的飞速发展并没有让传统机器学习的研究无路可走,相反,提供了更多的可供研究的方向。 

同时,AI 一个子领域的突破势必会带动其他子领域的蓬勃发展,这其中就有许多新的问题需要研究。比如,以 ChatGPT/GPT-4 为代表的大模型上的突破很可能会带动计算机视觉的进一步提升,也会启发很多 AI 驱动的应用场景,例如金融、医疗等等。无论技术如何发展,提高数据的质量和数量一定是提高 AI 性能的有效方法,Data-centric AI 的理念将越来越重要。 

那么大模型就一定是达成通用人工智能的方向吗?我持保留态度。纵观AI发展历程,各个AI子领域的发展往往是螺旋上升、相互带动的。这次大模型的成功是多个子领域的成功碰撞出的结果,例如模型设计(Transformer)、Data-centric AI(对数据质量的重视)、强化学习(RLHF)、机器学习系统(大规模集群训练)等等,缺一不可。

在大模型时代,我们在 AI 各个子领域依然都大有可为。比如,我认为强化学习相比大模型可能有更高的上限,因为它能自我迭代,可能不久的将来我们将见证由强化学习引领的比 ChatGPT 更惊艳的成果。对强化学习感兴趣的读者可以关注下我之前的文章 DouZero 斗地主 AI 深度解析,以及 RLCard 工具包介绍 [19]。 

在这个 AI 发展日新月异的时代,我们需要不断学习。我们对 Data-centric AI 这个领域进行了总结,希望能帮助大家快速高效地了解这个领域,相关链接见本文开头。鉴于 Data-centric AI 是一个很大的领域,我们的总结很难面面俱到。欢迎感兴趣的读者去我们的 GitHub [2] 上指正、补充。

outside_default.png

参考文献

outside_default.png

[1] https://openai.com/blog/chatgpt

[2] https://github.com/daochenzha/data-centric-AI

[3] https://arxiv.org/abs/2303.10158

[4] https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf

[5] https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

[6] https://arxiv.org/abs/2005.14165

[7] https://arxiv.org/abs/2203.02155

[8] https://cdn.openai.com/papers/gpt-4.pdf

[9] https://arxiv.org/abs/1706.03762

[10] https://huggingface.co/datasets/bookcorpus

[11] https://paperswithcode.com/dataset/webtext

[12] https://dl.acm.org/doi/abs/10.1145/2487788.2487828

[13] https://github.com/codelucas/newspaper

[14] https://commoncrawl.org/the-data/

[15] https://arxiv.org/abs/2302.04549

[16] https://github.com/davidjurgens/potato

[17] https://arxiv.org/abs/2107.13586

[18] https://arxiv.org/abs/2303.13035v1

[19] https://zhuanlan.zhihu.com/p/526723604

更多阅读

24b58de716f335eddb47efd3cdfddd06.png

2f3f1bec87128923d41fac0827231612.png

384a278a9dc9e344632403a525d23c12.png

b6551c34762073e99162edeb6538f9c1.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

f2a0cefaf30a9d3ae992a74be13f875d.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

c0175506c2918954da39c136c9dc1d32.jpeg

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值