作者 | 詹坤林,58 技术委员会 AI 分会主席,TEG—AI Lab 负责人
策划 | 刘燕
本文内容为 2023 年 2 月 14 在 58 技术委员会 AI 分会 AI 技术沙龙《ChatGPT 科普和应用初探》上的分享总结。
OpenAI 在 2022 年 11 月 30 日发布了 ChatGPT,它是一个基于大模型技术实现的通用聊天机器人,它可以用来写作、翻译、润色句子、做事实性问答、执行文本分类/实体抽取/阅读理解/文本摘要等各类 NLP 任务,甚至可以写 SQL、写代码,几乎无所不能。
ChatGPT 自发布之后一直大火至今,引起行业震动,我们也持续在跟进 ChatGPT,体验其功能,了解其技术原理,并基于爬虫技术封装了 ChatGPT API,在实际 NLP 应用场景下对比了 ChatGPT 和自研技术的效果。
本文从应用角度出发,给出一些对 ChatGPT 的思考。
一、GPT 到 ChatGPT 的演进
Google 于 2017 年在《Attention Is All You Need》一文中发布了 Transformer,此后对 NLP、语音、CV 等 AI 领域产生了深远影响。2018 年 6 月,OpenAI 发布了 GPT(Generative Pre-Training)[1]——基于 Transformer Decoder 结构和无监督预训练方法实现的生成式预训练语言模型,也即 GPT-1。
2018 年 10 月,Google 发布了 BERT(Bidirectional Encoder Representation from Transformers)[2],BERT 是基于 Transformer Encoder 结构的预训练语言模型,在多项 NLP 任务上取得 SOTA 效果,开启了自然语言处理「预训练+微调」的新范式,是自然语言处理发展史上的里程碑。
BERT 自发布之后在学术界和工业界均产生了重大影响,大量论文和应用基于 BERT 实现,谷歌学术上 BERT 的论文引用数也远超 GPT,近几年大模型技术火热,国内外发布的大部分大模型也是基于 BERT 技术路线来实现。
OpenAI 持续升级优化 GPT,于 2019 年 2 月发布了 GPT-2[3],于 2020 年 6 月发布了拥有 1750 亿参数的超大模型 GPT-3[4],轰动一时,GPT-3 不需要像 BERT 那样针对特定任务做微调(Fine-tune),一个大模型即可在一系列自然语言处理任务上取得优秀的效果,结合 Few-Shot 少样本学习能力,在部分任务上甚至接近或者达到当时的 SOTA 效果。
使用 BERT 执行某个具体场景下的 NLP 任务如文本分类时,需要人工标注该场景下的一定量数据,然后微调得到一个文本分类模型应用于分类,即重新更新了模型,对于不同的任务均要这样做。
而使用 GPT-3 执行 NLP 任务时,不需要重新更新模型,只需要向其发送一句提示(Prompt)例如「请给这段文字分类,类别标签有 A、B、C」即可完成分类,或者可以使用少量标注数据作为例子告诉模型,能够取得更优的效果,在这一点上 GPT-3 要比 BERT 更加易用。值得说明的是,自 GPT-3 开始,OpenAI 没有像 GPT-1、GPT-2 那样发布开源代码,而是以 API 的形式提供商业化服务,具体见 https://openai.com/api。
BERT 和 ChatGPT 执行任务的区别
ChatGPT 是从 GPT-3 发展而来的,符尧等人在《拆解追溯 GPT-3.5 各项能力的起源》一文[10]中总结了 GPT-3 到 GPT-3.5 的进化树,GPT-3 在 OpenAI API 中的模型名称为 Davinci(达芬奇),之后经历在代码上训练、指令微调、RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)等过程,进化成 ChatGPT,详细内容可参见文章[10],这里不再赘述。
2022 年 11 月,OpenAI 除了发布 ChatGPT 之外,还发布了 text-davinci-003 模型,两者都是在 text-davinci-002 模型的基础上使用 RLHF 方法训练得到的,ChatGPT 实际上不仅是一个单独的模型,而是一个完整的 Web 聊天机器人产品,其内部调用的模型假设也称作 ChatGPT。
GPT-3 到 GPT-3.5 的进化树. 符尧等. 2022.12.11
OpenAI 当前并未公布 ChatGPT 论文,只在官网发布了一篇 BLOG[9],BLOG 中讲到「We trained this model using Reinforcement Learning from Human Feedback (RLHF), using the same methods as InstructGPT, but with slight differences in the data collection setup」,ChatGPT 模型训练采用了 RLHF 方法,和 2022 年 3 月发布的 InstrutGPT[8]一致,仅是数据采集上有一些差异,当前介绍 ChatGPT 技术原理的文章均是介绍 InstrutGPT。
RLHF 并非是一个全新的方法,InstrutGPT 论文里有讲到该方法参考了 2020 年 9 月发布的文章《Learning to summarize from human feedback》[7]和 2017 年 6 月发布的文章《Deep reinforcement learning from human preferences》[12],文章[7]又参考了 2019 年 9 月发布的文章《Fine-Tuning Language Models from Human Preferences》[6],由此可见,OpenAI 在 RLHF 方法上有持续的沉淀积累,ChatGPT 的诞生也并非一蹴而就。
ChatGPT 训练过程. 2022.11.30
InstructGPT 训练过程. 2022.3
Learning to summarize from human feedback. 2020.9
Fine-Tuning Language Models from Human Preferences. 2019.9
二、GPT API 说明
当前,在 OpenAI 发布的 GPT API 中可以调用上文 GPT-3 到 GPT-3.5 的进化树中除 ChatGPT 模型之外的所有模型,用户可以在 API Playgroud 里选择模型版本进行体验,也可以编写程序调用 API 来进行批量实验,如下图所示。
GPT API Playground
GPT API 当前支持的模型
ChatGPT 是以一个 Web 聊天机器人的形态发布的,用户需要登录网站进行体验,OpenAI 目前还未发布 ChatGPT API,但 OpenAI API 官网显示不久后将发布「ChatGPT is coming to our API soon, sign up to stay updated」。目前业界有一些声称基于 ChatGPT 的聊天机器人工具,均是以非官方 API 来实现的,例如可以基于爬虫技术来访问 ChatGPT 官网,封装成 ChatGPT API,并注册大量 ChatGPT 账号,以保证支持一定的访问量。
ChatGPT 官网对访问频率有限制,且官网时不时会因为用户请求过多无法访问,这样的 API 不是很稳定,只能在一些离线场景应用。值得一提的是,目前 ChatGPT 提供了付费账号,价格为 20 美元/月,经测试,付费账号和免费账号在访问频率上并没有多大差别,只是付费账号的服务响应会相对稳定一些,若是个人使用,直接使用免费账号即可。
ChatGPT 官网
GPT API 按照输入输出的 token 数量收费,价格为 0.02 美元/1000tokens,一个 token 大概是 0.75 个英文单词,一个中文汉字为两个 token,这里包括请求 API 的 token(Prompt)和 API 返回的 token(Completion),一个 GPT 账号会免费赠送 18 美元的额度,有效期为 3 个月。未来 ChatGPT API 收费方式很可能也和此相同。
GPT API 收费说明
平台针对每次请求输入和输出 token 计数
从 GPT-3 到 GPT-3.5 的进化树中可以看到 text-davinci-003 模型和 ChatGPT 模型均是在 text-davinci-002 模型的基础上使用 RLHF 方法训练得到,都在 2022 年 11 月发布,两者的差别可能是针对不同类型人工反馈数据调优上的差异,ChatGPT 模型是应用于对话聊天,会基于线上对话数据调优,在上下文多轮对话、拟人化等能力上可能更强,text-davinci-003 基于 GPT API 上用户反馈数据(如上述 Playground)调优,在相关任务上的效果和 ChatGPT 相比可能差异不大,如后文有实验在评论情感分类任务上二者效果相当。因此,用户可以直接在 GPT API 中使用 text-davinci-003 模型来搭建相关应用。
三、GPT-3 训练成本
GPT-3 拥有 1750 亿参数,模型训练需要消耗大量资源,OpenAI 并未公开过 GPT 系列大模型训练和推理消耗的具体费用,我们可以从其他材料中获得一些信息。
2020 年 5 月,文章[12]中讲到微软在 Azure 上为 OpenAI 搭建了独立的超级计算机系统,包含 28.5 万个 CPU 核和 1 万张 GPU 卡(当时为 V100):The supercomputer developed for OpenAI is a single system with more than 285,000 CPU cores, 10,000 GPUs and 400 gigabits per second of network connectivity for each GPU server。2020 年 6 月发布的 GPT-3 模型应该是在该系统上训练得到。
英伟达在 2021 年 4 月发表的《Efficient Large Scale Language Model Training on GPU Clusters》[13] 文章中有预估不同参数规模的大模型训练需要消耗的资源和时间:使用 1024 张 80G 显存的 A100 卡训练 1750 亿参数的 GPT-3 模型,需要训练 34 天。
这些都是 2-3 年前之前的费用说明,根据相关材料介绍,当前训练 GPT-3 的费用更低 ,文章《ChatGPT背后的经济账》讲到「对于大公司而言,训练 LLM(即使是从头开始)的成本并不高,如今,在公有云中训练 GPT-3 仅需花费约 140 万美元」。
四、ChatGPT 的应用
ChatGPT 可以用来写作、翻译、润色句子、做事实性问答、写 SQL、写代码、执行文本分类/实体抽取/阅读理解/文本摘要等各类 NLP 任务,相关案例不一一赘述,这里仅讨论在智能写稿、智能客服、智能外呼实际产品场景下我们对 ChatGPT 的应用尝试,相关实验对比结果基于我们自主封装的 ChatGPT API 完成。
智能写稿:
我们从 2018 年开始就有落地智能写稿,利用机器自动生成一些稿件应用于各类场景,如自动生成二手车车源介绍文章,可参见《58智能写稿机器人实践》。原始生成方法是基于优质车源帖子数据,利用模板填充和文本生成技术自动生成文章,生成的文章较短且生硬,我们使用 ChatGPT 来润色这些文章,向 ChatGPT 发送 prompt 提示「请润色下面这段文字,字数在 400 字以内」即可完成该任务,通过 ChatGPT 润色的文章可读性极佳。此外,我们也尝试直接拿车源属性字段来让 ChatGPT 写作,例如向 ChatGPT 发送提示「请以下面这些关键词写一篇 400 字的文章」,最终 ChatGPT 也能生成可读性较好的结果。我们都知道 ChatGPT 在一些常识性问题上会犯错误,可能会生成一些错误内容,而我们是基于优质车源帖子数据来生成文章,车源帖子首先是真的,最终生成的内容也是真实可用的。
在本地服务(黄页)业务下,客户(商家)需要定期下线旧帖子,重新发布新贴子,由于商家平时工作繁忙,往往没有时间发帖,因此平台提供了代客发帖服务,人工来帮助其发帖。2022 年我们上线了 AI 自动发帖功能,节省了 30+人力。AI 自动发帖的大概逻辑是基于旧帖子正文内容和帖子用户评价,自动生成新帖标题和更新正文内容。在更新帖子正文内容这里,需要筛选出用户优质评价,并将评价提炼成一小段文字,再插入到帖子正文头部,以"口碑亮点"模块来展示。
帖子正文口碑亮点
我们的原始方案是使用微调的 BERT 模型来识别评论正负向情感,先挑出正向评论,然后基于抽取式方法生成最终的评论短语。我们将 ChatGPT 应用于该场景,首先使用 ChatGPT 来识别评论正负向情感,然后继续用 ChatGPT 将正向评论润色成最终的"口碑亮点",取得了很好的效果。
评论正负向情感识别是一个常见的 NLP 任务,我们直接向 ChatGPT 发送 Prompt 提示「对下面的评论进行分类,类别有正向、其他,[商家很专业,很有耐心]属于什么类别?」,这里没有给其提供任何先验知识和例子,即 Zero-Shot,它也能获得不错的效果,比 BERT 微调模型略低,我们继续实验 Few-Shot,告诉其分类标准并给予了一些样例,如下图所示,识别效果明显提升,超过 BERT 微调模型,可见 ChatGPT 十分强大。在前文 GPT API 章节我们有讲到 2022 年 11 月同期发布的 text-davinci-003 模型和 ChatGPT 模型在部分 NLP 任务上可能差异不大,这里我们也进行了验证,在评论情感识别任务上二者差异不大。
ChatGPT 在评论正负向情感识别任务上的效果
ChatGPT Few-Shot
此外,在 SEO 场景我们也进行了探索,使用 ChatGPT 生成一些 SEO 场景需要的内容,尽管 ChatGPT 会生成一些事实性错误的内容,但通过优化 Prompt 可以使得生成的结果基本可用,并结合人工审核、人工改写,最终能够得到符合 SEO 需求的内容。
智能客服:
当前网上很多人都说 ChatGPT 可以直接拿来做智能客服,能够让一些客服或者销售人员下岗,很多人都信以为真,实际并非如此。智能客服是当下发展非常成熟的产品,各大企业都有应用,能够提高客服人效,58同城是2017年开始打造的智能客服。这是智能客服的基本原理:企业维护了一套业务问答知识库,即一些业务问题和答案的集合,若用户在使用 APP 时遇到相关问题,他会在智能客服聊天窗口里输入问题进行咨询,机器会自动理解用户输入的问题,从问答知识库中找到那条和用户输入语义相同的问题,即文本匹配或文本分类,然后把该问题的答案返回给用户。
智能客服基本原理
智能客服的核心是构建问答知识库和文本匹配,问答知识库里的问题是线上用户遇到的真实业务问题,答案是客服运营人员人工整理的答案,而文本匹配是一项传统的 NLP 技术。很明显,客服场景的问答知识库是企业独有的,ChatGPT 没有学习过这些数据,对于用户咨询它不可能给出正确答案。部分业务方也给我们提过使用 ChatGPT 代替现有智能客服系统的想法,我们抽取了一定量线上真实用户的输入,并交给 ChatGPT 回答,最终证实了在业务问题上它会一本正经的"胡说八道"。当然,如果我们将问答知识库数据全部提交给 ChatGPT 做微调(Fine-tune),它也能回答得较好,但目前 ChatGPT 还不提供微调功能,GPT-3 API 提供了微调功能。
尽管 ChatGPT 不能直接拿来做智能客服,但是我们可以用它来做智能客服中的文本匹配任务,我们在近期接入的一个新业务场景下实验了 ChatGPT,可以类似下图这样向 ChatGPT 发送 Prompt,Zero-Shot 的效果较差,若在 Prompt 里给每个标准问题增加少量扩展问法就能有较好的效果提升,但要超过自研模型还需在 Prompt 上做更多优化工作。
ChatGPT 文本匹配效果
用 ChatGPT 做文本匹配 Prompt 示例
智能客服的问答知识库是持续更新的,因为随着产品功能的持续更新升级,线上用户会遇到新的操作问题,这些新问题会被挖掘出来加入到问答知识库中,并通过持续的数据标注来积累这些新问题的扩展问法。往往新问题上线初期扩展问法较少,模型对新问题识别效果较差,这里也可以在新问题产生时直接使用 ChatGPT 来为每个新问题生成若干扩展问法(数据增强),再加入模型训练,使得模型对新问题有较好的识别效果。我们在一个新接入的场景下也进行了实验对比,针对新增的六条新问题,使用 ChatGPT 为每条新问题生成数十条扩展问法,然后训练模型,这相比不做数据增强的模型效果有明显提升。
自研模型 + ChatGPT 数据增强后效果
在招聘业务赶集直招「微聊反向邀约」场景,在 C 端用户和 B 端企业微聊沟通时,我们应用了智能客服留资机器人,具体介绍可参见《一份AI中台产品应用手册》,当 C 端用户向 B 端企业发起微聊沟通时,若 B 端企业不在线,则由机器人和 C 端用户对话,在对话结束后若识别到用户有高求职意向,则调用智能双呼能力(可参见《智能语音机器人四种人机协同能力介绍》)提醒 B 端企业,B 端企业接听后可以一键直连 C 端用户,从而双方可以直接电话沟通。这里机器人需要基于微聊对话记录识别用户求职意向,我们也实验了 ChatGPT,通过优化 Prompt,ChatGPT 在 F1-Score 上超过了自研模型。但是这是一个重准确率的业务场景,因为需要保证 B 端企业连接的用户尽量是实际求职者,但如何通过调整 Prompt 来控制 ChatGPT 的准确率和召回率,目前还没找到行之有效的方法,而自研模型要做到这一点很简单。
用 ChatGPT 做对话意图识别
智能外呼:
智能外呼是人机实时语音对话场景,电话沟通语音会被语音识别引擎实时转写成文本,然后交给 NLP 模型进行语义理解,本质上和微聊文本对话没有差别,也会执行上述文本分类、文本匹配、对话意图识别任务,ChatGPT 应用类似。
人机语音对话相对微聊文本对话来讲延时更敏感,即需要 NLP 模型快速返回识别结果,耗时一般要求在数十到上百毫秒之间,因为人和机器在实时对话过程中若机器反应慢,例如数秒才响应,人会明显感觉到停顿,用户体验差,可能会直接挂断电话,影响转化效果,而在一些微聊智能客服场景下,为了让用户感觉到背后不是机器人,会故意让机器人回答慢一点,在程序中做一些延时回复操作。当前 ChatGPT 和 GPT API 的推理延时并不低,平均耗时在数秒级别,直接应用 ChatGPT 来做人机语音对话中的 NLP 模块不可取。
我们使用 ChatGPT 离线实验了近期上线的一个语音对话场景下的槽位提取(实体抽取),识别对话内容中的地点和服务类别槽位,这里直接使用 Zero-Shot,向 ChatGPT 发送提示「请抽取这段话中的省、城市、区县和服务类别」,从实验结果看 ChatGPT 表现不错。
ChatGPT 槽位提取效果
五、个人思考
ChatGPT 在一个大模型里可以完成众多任务,而且效果都很不错,前所未见,令人惊叹。毫无疑问,ChatGPT 能够在各类岗位上辅助人工,提升人效,但能否完全替代某类岗位,还需时间验证,以 NLP 工程师岗位为例,企业若想使用 ChatGPT 代替 NLP 工程师,至少需要考虑以下几点:
识别效果是否可控。NLP 场景一般都会有准确率、召回率的侧重,需要通过调整模型来控制这两项指标,自研模型很容易做到,若使用 ChatGPT,则只能通过调整 Prompt 来控制,如何编写 Prompt 来控制准确率、召回率,目前还没看到行之有效的方法。
推理性能是否符合应用需求。大模型的推理性能与硬件资源、模型加速手段相关,性能和投入成正比,当前 ChatGPT 推理较慢,无法满足一些延时要求高的应用场景,例如智能外呼,未来这里可能需要和企业定制化。值得一提的是,当前 NewBing 体验版的搜索也非常缓慢,用户体验不佳,这也是微软和 OpenAI 需要解决的痛点。
ROI 的精确衡量。企业需要评估某个应用场景下使用 ChatGPT API 的花费是否比人力成本低,即将发布的 ChatGPT API 可能也和 GPT-3 API 一样按照 token 收费,它包括了输入和输出的 token,真正接入使用时需要对 Prompt 和生成结果做精细化控制,编写 Prompt 也是一项挑战。
当前,ChatGPT 在国内还不能直接访问,未来就算对国内开放,但各大企业与其合作会很敏感,国内企业的大量数据若流入 ChatGPT 会有很大风险。中国很有必要做出自己的 ChatGPT,当下国内大厂和一些创业公司正在努力,也许在不久的将来,国内 ChatGPT 解决上述问题后,真的不再需要那么多 NLP 算法工程师。
参考文献:
[1] GPT1:Improving Language Understanding by Generative Pre-Training. https://openai.com/blog/language-unsupervised/ 2018.6
[2] BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding. 2018.10
[3] GPT2:Language Models are Unsupervised Multitask Learners.
https://openai.com/blog/better-language-models/ 2019.2
[4] GPT3:Language Models are Few-Shot Learners. https://arxiv.org/abs/2005.14165 2020.5
[5] GPT3 API:https://openai.com/blog/openai-api/ 2020.6
[6] Fine-Tuning Language Models from Human Preferences. https://arxiv.org/abs/1909.08593 2019.9
[7] Learning to summarize from human feedback. https://openai.com/blog/learning-to-summarize-with-human-feedback/ 2020.9
[8] InstructGPT:Training language models to follow instructions with human feedback. https://arxiv.org/abs/2203.02155 2022.3
[9] ChatGPT: Optimizing Language Models for Dialogue. https://openai.com/blog/chatgpt/ 2022.11.30
[10] How does GPT Obtain its Ability? Tracing Emergent Abilities of Language Models to their Sources. https://yaofu.notion.site/How-does-GPT-Obtain-its-Ability-Tracing-Emergent-Abilities-of-Language-Models-to-their-Sources-b9a57ac0fcf74f30a1ab9e3e36fa1dc1 符尧等. 2022.12.11. 中文版:拆解追溯 GPT-3.5 各项能力的起源. 2022.12.18. https://yaofu.notion.site/GPT-3-5-360081d91ec245f29029d37b54573756
[11] Deep reinforcement learning from human preferences. https://arxiv.org/abs/1706.03741 2017.6
[12] Microsoft announces new supercomputer, lays out vision for future AI work. https://news.microsoft.com/source/features/ai/openai-azure-supercomputer/ 2020.5.19
[13] Efficient Large Scale Language Model Training on GPU Clusters. https://arxiv.org/abs/2104.04473 2021.4
[14] OpenAI API. https://openai.com/api
评论 2 条评论