自然语言处理(NLP) 是语言学、计算机科学、人工智能与信息工程的一个分支,关注计算机与人类(自然)语言之间的交互,尤其是如何编程让计算机处理和分析海量自然语言数据。
听起来很有意思吧?如果我们告诉您,我们请一个叫 GPT-3 的算法来写下上面这整段文字,而且它一次就写成了,您会怎么说?我们不是开玩笑!来看看这个…
GPT-3 实战
相当惊人,对吧?!回到 NLP。它让计算机能够以文本或语音数据的形式处理人类语言,并“理解”其完整含义,包括说话者或作者的意图与情感。过去十年里,NLP 一直是最令人振奋的 AI 发现与落地应用的舞台。近年来,该领域最令人兴奋且高产的趋势就是大型语言模型(LLM),GPT-3 就属于这一类。
一些人认为,GPT-3 是通用人工智能探索中的第一步。它吸引了比任何其他 AI 模型更多的关注。它能以近似人类的效率与准确度完成一系列通用任务的强大灵活性,正是其令人激动之处。它以 API 的形式发布,旨在让全球的数据科学家、开发者以及各行各业的人们以前所未有的方式接触到世界上最强大的语言模型之一。
该模型由 OpenAI 创建,这是一家处于人工智能研发前沿的公司。自 2020 年 7 月首次发布以来,全球开发者已为 GPT-3 找到了数百种令人兴奋的应用,有望提升我们的交流、学习与娱乐方式。它能够轻松解决通用的语言类任务,并可在不同的文本风格与目的之间自由切换。
在 GPT-3 之前,语言模型通常只面向某一特定的 NLP 任务,比如文本生成、摘要或分类。GPT-3 是自然语言处理史上首个能够在多种 NLP 任务上同样出色表现的通用语言模型。GPT-3 的全称是“生成式预训练转换器”(Generative Pre-trained Transformer),是 OpenAI 的第三代迭代。我们来拆解这三个术语:
生成式(Generative): 生成式模型是一类统计模型,用于生成新的数据点。它们通过学习数据集中变量之间的底层关系,从而生成与数据集中样本相似的新数据点。
预训练(Pre-trained): 预训练模型是指已在大型数据集上训练过的模型。这让它们能够用于从零开始训练较为困难的任务。预训练模型也许并非 100% 准确,但能避免重复造轮子,节省时间并提升性能。
Transformer(转换器): Transformer 模型是一种在 2017 年发明的著名人工神经网络。它是一种面向序列数据(如文本)的深度学习模型,常用于机器翻译、文本分类等任务。
接下来一节,我们将从更广的背景介绍语言模型——它们是什么、如何工作以及用途何在。您还可以在另一篇文章中了解我们已知的 GPT-4 信息 ,在此处进一步了解人工智能 ,或阅读关于 OpenAI、Google AI 及其对数据科学意义的最新动态 。
什么是大型语言模型?
近年来,围绕构建大型语言模型(LLM)的自然语言处理(NLP)领域引发了巨大的兴趣。LLM 在大量文本上训练,可用于多种基于语言的任务,包括文本生成、机器翻译与问答。
语言建模是利用概率来理解一句话在某种语言中如何组合的任务。简单的语言模型可以基于对现有文本序列的统计分析,看着一个词并预测最有可能跟随其后的下一个词(或多个词)。例如,句子 "I love walking my ..." 更可能以 "dog" 结尾,而不是 "refrigerator"。要提高对词序预测的准确度,就必须用大量数据来训练语言模型。
可以把 LLM 看作统计预测机器,输入是文本,输出是预测。您可能对手机上的自动补全功能很熟悉。例如,您输入“good”,自动补全可能给出 “morning” 或 “luck”。诸如自动补全之类的自然语言处理应用高度依赖语言模型。
虽然语言模型已存在已久,但直到最近才如此成功。这归因于多种因素:可用训练数据的大幅增长、更优的训练算法以及使用 GPU 加速训练。有了更多数据,模型就能更好地学习词与词之间的关系及其使用的上下文,从而更好地理解文本含义并生成更准确的预测。
LLM 的成功在于其捕捉文本中词与词之间依赖关系的能力。比如,在句子 "The cat sat on the mat," 中,"cat" 依赖于 "the",而 "mat" 依赖于 "on"。在大型语言模型中,这些依赖会由模型的参数来刻画。随着大型语言模型不断进步,其参数规模也急剧膨胀,您可以在微软研究院发布的下图中看到这一趋势。
随时间变化的最先进 NLP 模型规模趋势(对数刻度) 来源:Microsoft Research 博客文章 ,2021 年 10 月 11 日
对大型语言模型进行预训练需要庞大的算力,能耗很高。对这些模型日益增长的需求需要越来越多的计算资源。这带来了显著的环境成本,例如不可持续的能源使用和碳排放。
2019 年,马萨诸塞大学的研究者估算,训练一个大型深度学习模型会产生 626,000 磅的二氧化碳,相当于五辆汽车整个生命周期的排放。随着模型变大,它们的计算需求增长速度超过了硬件效率的提升。2021 年的一项研究估计,训练 GPT-3 产生了约 552 吨二氧化碳。这大致相当于 120 辆汽车一年的行驶排放。
不过,2019 年的 Green AI 论文指出,“公开发布预训练模型的趋势是一次绿色成功”,作者鼓励各机构“继续发布他们的模型,以帮助他人节省重新训练的成本”。像 OpenAI 这样发布预训练大型语言模型的公司,正持续研究与开发技术,以降低训练模型的碳足迹。
GPT-3 在执行各类 NLP 任务时之所以高度准确,是因为其训练所用的数据集规模巨大,且其架构包含 1750 亿参数,能够理解数据中的逻辑关系。GPT-3 预训练使用了五个大型数据集的文本语料,包括 Common Crawl、WebText2、Books1、Books2 和 Wikipedia。该语料合计近万亿词,使得 GPT-3 能在零样本设置下(无需提供任何示例数据)就成功完成数量惊人的 NLP 任务。
下一节,我们将探讨 Transformer——这一著名架构让模型在语言建模领域掀起风暴,并改写了 NLP 领域的可能性边界。
Transformer 是一种特别适合语言建模任务的神经网络架构。它首次发表于 2017 年的论文“Attention is All You Need ”。该论文将 Transformer 描述为一种能够高效执行序列到序列任务、并可轻松处理长程依赖 的神经网络架构。Transformer 模型迅速成为自然语言处理任务的首选架构,并在目前主导着 NLP 领域。
序列到序列(Sequence-to-Sequence)机制是 Transformer 模型的骨干。又称 Seq2Seq,它将给定的元素序列(如一句话中的词)转换为另一序列(如另一种语言的句子),这使其特别适合翻译任务。Google 翻译在 2016 年底就开始在生产环境中使用类似架构 。
来源:Jay Alammar 的博客“The Illustrated Transformer”文章
Seq2Seq 模型由两部分组成:编码器与解码器。可以将编码器与解码器想象成只会两种语言的人类译者。二者母语不同;举例来说,我们设定编码器的母语是中文,解码器的母语是英文。他们有一个共同的第二语言;假设是日语。要把中文翻译成英文,编码器先把中文句子转换成日语。这个日语句子被称为上下文(context),然后传给解码器。由于解码器懂日语,它就能将其翻译成英文。
Transformer 架构的另一个关键组件是“注意力”(attention)机制。这是一种模拟认知注意力的技术。认知注意力反映了我们大脑如何聚焦于句子中重要的部分,帮助我们理解整体含义。比如,您在读这句话时,总是专注于正在阅读的词,同时记忆中会保留句子里最关键的关键词来提供上下文。
注意力机制逐段查看输入序列,并在每一步决定序列中其他哪些部分是重要的。这帮助 Transformer 过滤噪声、聚焦要点,通过连接那些彼此之间并无明显标记的关联词来实现相关性建模。
Transformer 模型受益于更大的架构与更海量的数据馈送。这让它们比其他任何类型的神经网络都更擅长理解句子中词语的上下文,这也解释了其对机器学习领域的重大影响。随着其不断演进,未来几年它们的影响力还会进一步扩大,而您只需几步就能开始尝试使用 LLM。
开始使用 GPT-3
浏览 OpenAI API
尽管 GPT-3 可以说是世界上最复杂、最精密的语言模型之一,但其能力可通过一个简单的“文本输入—文本输出”界面来访问。开始使用 GPT-3 的第一步是获取 OpenAI API 的访问权限。您可以在这里 申请,几分钟内就能完成账户设置。
获得 OpenAI 开发者账号后,我们来看看 Playground,这是一个私有的基于网页的沙盒环境,允许您试验 API 并了解其不同组件如何协同工作。
OpenAI API 的组成部分
以下是不同 API 组件及其功能概览:
执行引擎: 决定用于执行的语言模型。选择合适的引擎是确定模型能力并从而获得正确输出的关键。
响应长度: 设置 API 在补全中包含的文本上限。由于 OpenAI 按每次 API 调用生成文本的长度计费,响应长度对有预算限制的用户尤为重要。响应长度越高,成本越高。
Temperature(温度): 控制响应的随机性,取值范围为 0 到 1。温度越低,API 越倾向于给出模型首先想到的内容;温度越高,模型在输出结果前会先评估在上下文中可能合适的多种响应。
Top P: 控制模型在补全时考虑的随机结果范围,与温度共同决定随机性的幅度。Top P 取值范围为 0 到 1。值越低,创造性越受限;值越高,创造空间越大。
频率与出现惩罚: 频率惩罚通过“惩罚”方式降低模型逐字重复相同行的可能性;出现惩罚则提高其谈及新主题的可能性。
Best of: 该参数允许您在服务器端生成多个补全(n),并返回其中“最佳”的一个。
停止序列: 一组字符,用于指示 API 停止继续生成补全。
注入开始与重新开始文本: 允许分别在补全的开头或末尾插入文本。
显示概率: 此选项可通过展示模型针对给定输入可生成的各个 token 的概率,帮助您调试提示词。
OpenAI API 提供四种不同的执行引擎,它们在参数数量、性能能力与价格上各不相同。按能力与规模递增的主要引擎为:Ada(以 Ada Lovelace 命名)、Babbage(以 Charles Babbage 命名)、Curie(以 Marie Curie 命名)和 Davinci(以 Leonardo da Vinci 命名)。
在上述四个主模型的基础上,OpenAI 推出了改进系列 InstructGPT,这些模型更擅长理解与遵循指令,从而按您的需求生成特定输出。您只需告诉模型要做什么,它就会尽力完成。向 GPT-3 模型提供指令的过程被称为提示词工程 。
提示词工程
GPT-3 被设计为与任务无关。这意味着只要给出合适的训练提示,它就有可能执行任意数量的任务。打造 AI 解决方案从来不易,但在 GPT-3 的帮助下,您所需要的只是一段通顺的英文训练提示。
来源:Andrej Karpathy 于 2020 年 6 月 18 日推文
在创建 GPT-3 应用时,首先要考虑的是训练提示的设计与内容。提示设计是让 GPT-3 模型给出有利且契合语境的响应的最重要环节。
提示(prompt)是您提供给模型的文本输入,用于生成期望的输出。设计一个好的提示,就是在文本输入中为模型提供足够的任务上下文。GPT-3 会查看输入,并尝试以其认为最能“完成”该输入的文本来回应。
从某种意义上说,提示设计就像玩你演我猜!
编写好提示的秘诀在于理解 GPT-3 对世界的认知,以及如何引导模型利用这些信息生成有用结果。在你演我猜这类游戏中,我们的目标是给玩家恰到好处的信息,让他们凭借智慧猜出正确的词。同理,我们需要以训练提示的形式给 GPT-3 提供恰到好处的上下文,让模型自己找出模式并执行任务。我们不想用过量信息打断模型的“自然智能流”,但信息太少也会导致结果不准确。
经验法则是:在设计训练提示时,应首先争取让模型给出零样本(zero-shot)响应;若无法做到,再提供少量示例,而非一整套语料。提示设计的标准流程应如下:
零样本 → 少样本 → 基于语料的引导
如果在您的文本输入中,模型看到字母“Q”和一个问题,它会尝试写出一个回答,但未必是您期待的那个。缺乏足够上下文时,它可能会假设您在编写问题与错误答案的清单。若想获得最佳答案,您需要让 GPT-3 知道应该提供哪一类答案。
不要像这样让 GPT-3 完成输入:
Q:
A:技术支持
我们得到的首个补全是:
Q:
A:
Q:
A:
技术支持
您可以通过如下提示(或其变体,取决于您想让模型生成哪类问题)大幅提升问答输出质量:
Write a few trivia questions.
Q:
A:
技术支持
我们第一次就得到了如下补全:
What is the name of the longest river in Africa?
The Nile
What are the top 5 most spoken languages in the world?
Mandarin, Spanish, English, Hindi, Arabic技术支持
像上面这样简单的指令足以让 GPT-3 明白它需要给出更符合您需求的答案;在本例中,就是几道冷知识问答题。您也可以用“Factual answer:”替代“A:”,以进一步改善结果。
Write a few trivia questions.
Question:
Factual answer:技术支持
对此输入,我们得到如下补全:
1. What is the world’s largest desert?
The Sahara desert.
2. What is the world’s deepest Ocean?
The Pacific Ocean.技术支持
GPT-3 沙盒——用 Python 调用 OpenAI API
在本节中,我们将带您了解 GPT-3 Sandbox,这是一款开源工具,能用寥寥数行 Python 代码把想法变为现实。我们会展示如何使用它,以及如何针对您的特定应用进行自定义。该沙盒的目标是,无论您的技术背景如何,都能帮助您创建出色的 Web 应用。
请观看这一系列互动视频 ,按步骤创建并部署 GPT-3 应用。使用 GPT-3 沙盒需要如下技术栈:
Python 3.7+
一个 IDE,如 VS Code
在 IDE 中打开新终端,通过以下命令从该仓库 克隆代码:
git clone https://github.com/Shubhamsaboo/kairos_gpt3技术支持
创建与部署 Web 应用所需的一切都已包含在代码中。您只需微调少量文件,即可将沙盒自定义为您的特定用例。现在,请创建一个Python 虚拟环境 开始使用。创建完成后,您可以用以下命令安装所需依赖:
pip install -r requirements.txt技术支持
现在,您可以开始自定义沙盒代码。首先要查看的文件是 training_data.py。打开该文件,将默认提示替换为您想使用的训练提示。您可以使用 GPT-3 Playground 来尝试不同的训练提示(参见该书的第 2 章 以及以下视频 了解更多沙盒自定义内容)。
现在,您已准备好微调 API 参数(Maximum tokens、Execution Engine、Temperature、Top-p、Frequency Penalty、Stop Sequence)。我们建议您在 Playground 中针对给定的训练提示尝试不同的 API 参数取值,以确定最适合您的用例的设置。一旦获得满意结果,就可以在 training_service.py 文件中修改这些取值。
就这样!您的基于 GPT-3 的 Web 应用已准备就绪。您可以用以下命令在本地运行:
streamlit run gpt_app.py技术支持
您可以使用 Streamlit sharing 来部署应用并分享给更广泛的受众。请观看这段视频 获取完整的部署演示。
用 GPT-3 能构建什么?
在 GPT-3 发布之前,大多数人对 AI 的使用仅限于某些特定任务,比如让 Alexa 播放您最喜欢的歌曲或使用 Google 翻译进行跨语言交流。随着 LLM 的发展,我们正面临一次重大的范式转换。LLM 向我们展示,通过增大模型规模,AI 应用能够执行与人类相似的创造性与复杂任务。
GPT-3 正在以合适的技术激发创意型创业者的想象力,推动新一轮初创潮。OpenAI 发布 API 后不久,初创生态中便涌现出大量利用它来解决问题的公司。让我们通过考察将 GPT-3 置于产品核心的部分高绩效初创公司,来探索这个充满活力的生态,它们涉足创意艺术、数据分析、聊天机器人、文案写作与开发者工具等领域。
1. GPT-3 的创意应用:Fable Studio
GPT-3 最令人兴奋的能力之一是讲故事。您可以给模型一个主题,并要求它在零样本设置下写一个故事。这种可能性让作家们得以拓展想象,创作出非凡作品。例如,由 Jennifer Tang 执导、与 Chinonyerem Odimba 和 Nina Segal 共同开发的话剧 AI ,借助 GPT-3 展现了人机思维之间独特的协作。
Fable Studio 正在利用该模型的创意叙事能力。他们将 Neil Gaiman 与 Dave McKean 的儿童绘本《Wolves in the Walls》改编为一部艾美奖获奖的 VR 电影体验 。片中主角 Lucy 能与人进行自然对话,得益于 GPT-3 生成的对白。该公司相信,随着模型的进一步迭代,有可能打造出与最优秀的人类作家同样娴熟且富有创造力的 AI 讲故事者。
2. GPT-3 的数据分析应用:Viable
Viable 是一款反馈聚合工具,可在问卷、工单、在线聊天记录与客户评论中识别主题、情绪与情感,并在数秒内给出结果摘要。例如,若询问“我们结账体验中让客户感到沮丧的是什么?”,Viable 可能会回答:“客户对结账流程感到沮丧,因为加载时间过长。他们还希望能在结账时修改地址并保存多种支付方式。”
正如客户反馈专家所期望的那样,Viable 在软件生成的每个答案旁都提供点赞与点踩按钮。他们会将这些反馈用于再训练。人工也参与其中:Viable 配备了标注团队,负责为内部模型与 GPT-3 微调构建训练数据集。他们使用当前迭代的微调模型生成输出,再由人工评估其质量。如果输出不合理或不准确,就会重写。一旦积累了令他们满意的输出清单,就会将其回灌到下一轮训练数据集中。
3. GPT-3 的聊天机器人应用:Quickchat
Emerson AI 是 Quickchat 公司的聊天机器人形象,以其广博的常识、多语种支持与持续对话能力而闻名。Emerson AI 用于展示由 GPT-3 驱动的聊天机器人的能力,并鼓励用户与 Quickchat 合作为各自公司实现类似的形象。Quickchat 的产品是一款通用型对话式 AI,能谈论任何主题。客户可以通过添加与其产品相关的额外信息来自定义聊天机器人。Quickchat 的应用多种多样,如自动化客户支持、构建 AI 形象帮助用户检索公司内部知识库等。
与典型的聊天机器人服务提供商不同,Quickchat 不构建任何对话树或僵化场景,也无需教会机器人以某种固定方式回答问题。客户只需按一个简单流程操作:复制并粘贴包含您希望 AI 使用的全部信息的文本,点击“再训练”按钮,几秒钟后就能吸收知识,就完成了。现在,基于您的数据完成训练的聊天机器人已可进行测试对话。
4. GPT-3 的营销应用:Copysmith
GPT-3 最受欢迎的应用之一是即席生成创意内容。Copysmith 就是这样一款内容生成平台。它使用 GPT-3 生成提示词,然后将其转化为电商业务所需的文案。GPT-3 在市场营销领域表现突出,它能以极快速度生成、协作并发布高质量内容。得益于该模型,线上中小企业可以撰写更好的号召性用语与产品描述,提升营销能力并迅速起步。
5. GPT-3 的编码应用:Stenography
OpenAI 社区大使 Bram Adams 创建了 Stenography ,一个利用 GPT-3 与 Codex 来自动化生成代码文档的程序。
Stenography 一经推出便大获成功,登上 ProductHunt 当日榜首。Adams 认为,文档是人们与团队其他成员、与未来的自己,或与那些无意间在 GitHub 上看到某个项目的感兴趣者沟通的方式。Stenography 的目标是让项目更易于他人理解。
想进一步了解日益壮大的 GPT-3 生态,请参阅我们即将出版的 O’Reilly 新书中的第 4 章 (作为下一代初创公司发射台的 GPT-3)与第 5 章 (面向企业的 GPT-3)。
结语
GPT-3 标志着 AI 发展史上的一个重要里程碑。它也是更大 LLM 趋势的一部分,这一趋势将在未来持续增长。以 API 形式提供访问的革命性举措,催生了全新的模型即服务商业模式。
GPT-3 的通用语言能力为打造创新产品打开了大门。它尤其擅长解决文本生成、文本摘要、分类与对话等任务。
已经有不少成功公司在很大程度上或完全基于 GPT-3 构建。我们最喜欢的用例包括创意叙事、数据分析、聊天机器人、营销文案写作与开发者工具。
自然语言处理(NLP)是语言学、计算机科学、人工智能与信息工程的一个分支,关注计算机与人类(自然)语言之间的交互,尤其是如何编程让计算机处理和分析海量自然语言数据。
听起来很有意思吧?如果我们告诉您,我们请一个叫 GPT-3 的算法来写下上面这整段文字,而且它一次就写成了,您会怎么说?我们不是开玩笑!来看看这个…
GPT-3 实战
相当惊人,对吧?!回到 NLP。它让计算机能够以文本或语音数据的形式处理人类语言,并“理解”其完整含义,包括说话者或作者的意图与情感。过去十年里,NLP 一直是最令人振奋的 AI 发现与落地应用的舞台。近年来,该领域最令人兴奋且高产的趋势就是大型语言模型(LLM),GPT-3 就属于这一类。
一些人认为,GPT-3 是通用人工智能探索中的第一步。它吸引了比任何其他 AI 模型更多的关注。它能以近似人类的效率与准确度完成一系列通用任务的强大灵活性,正是其令人激动之处。它以 API 的形式发布,旨在让全球的数据科学家、开发者以及各行各业的人们以前所未有的方式接触到世界上最强大的语言模型之一。
该模型由 OpenAI 创建,这是一家处于人工智能研发前沿的公司。自 2020 年 7 月首次发布以来,全球开发者已为 GPT-3 找到了数百种令人兴奋的应用,有望提升我们的交流、学习与娱乐方式。它能够轻松解决通用的语言类任务,并可在不同的文本风格与目的之间自由切换。
在 GPT-3 之前,语言模型通常只面向某一特定的 NLP 任务,比如文本生成、摘要或分类。GPT-3 是自然语言处理史上首个能够在多种 NLP 任务上同样出色表现的通用语言模型。GPT-3 的全称是“生成式预训练转换器”(Generative Pre-trained Transformer),是 OpenAI 的第三代迭代。我们来拆解这三个术语:
接下来一节,我们将从更广的背景介绍语言模型——它们是什么、如何工作以及用途何在。您还可以在另一篇文章中了解我们已知的 GPT-4 信息,在此处进一步了解人工智能,或阅读关于 OpenAI、Google AI 及其对数据科学意义的最新动态。
什么是大型语言模型?
近年来,围绕构建大型语言模型(LLM)的自然语言处理(NLP)领域引发了巨大的兴趣。LLM 在大量文本上训练,可用于多种基于语言的任务,包括文本生成、机器翻译与问答。
语言建模是利用概率来理解一句话在某种语言中如何组合的任务。简单的语言模型可以基于对现有文本序列的统计分析,看着一个词并预测最有可能跟随其后的下一个词(或多个词)。例如,句子 "I love walking my ..." 更可能以 "dog" 结尾,而不是 "refrigerator"。要提高对词序预测的准确度,就必须用大量数据来训练语言模型。
可以把 LLM 看作统计预测机器,输入是文本,输出是预测。您可能对手机上的自动补全功能很熟悉。例如,您输入“good”,自动补全可能给出 “morning” 或 “luck”。诸如自动补全之类的自然语言处理应用高度依赖语言模型。
虽然语言模型已存在已久,但直到最近才如此成功。这归因于多种因素:可用训练数据的大幅增长、更优的训练算法以及使用 GPU 加速训练。有了更多数据,模型就能更好地学习词与词之间的关系及其使用的上下文,从而更好地理解文本含义并生成更准确的预测。
LLM 的成功在于其捕捉文本中词与词之间依赖关系的能力。比如,在句子 "The cat sat on the mat," 中,"cat" 依赖于 "the",而 "mat" 依赖于 "on"。在大型语言模型中,这些依赖会由模型的参数来刻画。随着大型语言模型不断进步,其参数规模也急剧膨胀,您可以在微软研究院发布的下图中看到这一趋势。
随时间变化的最先进 NLP 模型规模趋势(对数刻度)
来源:Microsoft Research 博客文章,2021 年 10 月 11 日
对大型语言模型进行预训练需要庞大的算力,能耗很高。对这些模型日益增长的需求需要越来越多的计算资源。这带来了显著的环境成本,例如不可持续的能源使用和碳排放。
2019 年,马萨诸塞大学的研究者估算,训练一个大型深度学习模型会产生 626,000 磅的二氧化碳,相当于五辆汽车整个生命周期的排放。随着模型变大,它们的计算需求增长速度超过了硬件效率的提升。2021 年的一项研究估计,训练 GPT-3 产生了约 552 吨二氧化碳。这大致相当于 120 辆汽车一年的行驶排放。
不过,2019 年的 Green AI 论文指出,“公开发布预训练模型的趋势是一次绿色成功”,作者鼓励各机构“继续发布他们的模型,以帮助他人节省重新训练的成本”。像 OpenAI 这样发布预训练大型语言模型的公司,正持续研究与开发技术,以降低训练模型的碳足迹。
GPT-3 在执行各类 NLP 任务时之所以高度准确,是因为其训练所用的数据集规模巨大,且其架构包含 1750 亿参数,能够理解数据中的逻辑关系。GPT-3 预训练使用了五个大型数据集的文本语料,包括 Common Crawl、WebText2、Books1、Books2 和 Wikipedia。该语料合计近万亿词,使得 GPT-3 能在零样本设置下(无需提供任何示例数据)就成功完成数量惊人的 NLP 任务。
下一节,我们将探讨 Transformer——这一著名架构让模型在语言建模领域掀起风暴,并改写了 NLP 领域的可能性边界。
什么是 Transformer 模型?
Transformer 是一种特别适合语言建模任务的神经网络架构。它首次发表于 2017 年的论文“Attention is All You Need”。该论文将 Transformer 描述为一种能够高效执行序列到序列任务、并可轻松处理长程依赖的神经网络架构。Transformer 模型迅速成为自然语言处理任务的首选架构,并在目前主导着 NLP 领域。
序列到序列(Sequence-to-Sequence)机制是 Transformer 模型的骨干。又称 Seq2Seq,它将给定的元素序列(如一句话中的词)转换为另一序列(如另一种语言的句子),这使其特别适合翻译任务。Google 翻译在 2016 年底就开始在生产环境中使用类似架构。
来源:Jay Alammar 的博客“The Illustrated Transformer”文章
Seq2Seq 模型由两部分组成:编码器与解码器。可以将编码器与解码器想象成只会两种语言的人类译者。二者母语不同;举例来说,我们设定编码器的母语是中文,解码器的母语是英文。他们有一个共同的第二语言;假设是日语。要把中文翻译成英文,编码器先把中文句子转换成日语。这个日语句子被称为上下文(context),然后传给解码器。由于解码器懂日语,它就能将其翻译成英文。
Transformer 架构的另一个关键组件是“注意力”(attention)机制。这是一种模拟认知注意力的技术。认知注意力反映了我们大脑如何聚焦于句子中重要的部分,帮助我们理解整体含义。比如,您在读这句话时,总是专注于正在阅读的词,同时记忆中会保留句子里最关键的关键词来提供上下文。
注意力机制逐段查看输入序列,并在每一步决定序列中其他哪些部分是重要的。这帮助 Transformer 过滤噪声、聚焦要点,通过连接那些彼此之间并无明显标记的关联词来实现相关性建模。
Transformer 模型受益于更大的架构与更海量的数据馈送。这让它们比其他任何类型的神经网络都更擅长理解句子中词语的上下文,这也解释了其对机器学习领域的重大影响。随着其不断演进,未来几年它们的影响力还会进一步扩大,而您只需几步就能开始尝试使用 LLM。
开始使用 GPT-3
浏览 OpenAI API
尽管 GPT-3 可以说是世界上最复杂、最精密的语言模型之一,但其能力可通过一个简单的“文本输入—文本输出”界面来访问。开始使用 GPT-3 的第一步是获取 OpenAI API 的访问权限。您可以在这里申请,几分钟内就能完成账户设置。
获得 OpenAI 开发者账号后,我们来看看 Playground,这是一个私有的基于网页的沙盒环境,允许您试验 API 并了解其不同组件如何协同工作。
OpenAI API 的组成部分
以下是不同 API 组件及其功能概览:
OpenAI API 提供四种不同的执行引擎,它们在参数数量、性能能力与价格上各不相同。按能力与规模递增的主要引擎为:Ada(以 Ada Lovelace 命名)、Babbage(以 Charles Babbage 命名)、Curie(以 Marie Curie 命名)和 Davinci(以 Leonardo da Vinci 命名)。
在上述四个主模型的基础上,OpenAI 推出了改进系列 InstructGPT,这些模型更擅长理解与遵循指令,从而按您的需求生成特定输出。您只需告诉模型要做什么,它就会尽力完成。向 GPT-3 模型提供指令的过程被称为提示词工程。
提示词工程
GPT-3 被设计为与任务无关。这意味着只要给出合适的训练提示,它就有可能执行任意数量的任务。打造 AI 解决方案从来不易,但在 GPT-3 的帮助下,您所需要的只是一段通顺的英文训练提示。
来源:Andrej Karpathy 于 2020 年 6 月 18 日推文
在创建 GPT-3 应用时,首先要考虑的是训练提示的设计与内容。提示设计是让 GPT-3 模型给出有利且契合语境的响应的最重要环节。
提示(prompt)是您提供给模型的文本输入,用于生成期望的输出。设计一个好的提示,就是在文本输入中为模型提供足够的任务上下文。GPT-3 会查看输入,并尝试以其认为最能“完成”该输入的文本来回应。
从某种意义上说,提示设计就像玩你演我猜!
编写好提示的秘诀在于理解 GPT-3 对世界的认知,以及如何引导模型利用这些信息生成有用结果。在你演我猜这类游戏中,我们的目标是给玩家恰到好处的信息,让他们凭借智慧猜出正确的词。同理,我们需要以训练提示的形式给 GPT-3 提供恰到好处的上下文,让模型自己找出模式并执行任务。我们不想用过量信息打断模型的“自然智能流”,但信息太少也会导致结果不准确。
经验法则是:在设计训练提示时,应首先争取让模型给出零样本(zero-shot)响应;若无法做到,再提供少量示例,而非一整套语料。提示设计的标准流程应如下:
零样本 → 少样本 → 基于语料的引导
如果在您的文本输入中,模型看到字母“Q”和一个问题,它会尝试写出一个回答,但未必是您期待的那个。缺乏足够上下文时,它可能会假设您在编写问题与错误答案的清单。若想获得最佳答案,您需要让 GPT-3 知道应该提供哪一类答案。
不要像这样让 GPT-3 完成输入:
我们得到的首个补全是:
您可以通过如下提示(或其变体,取决于您想让模型生成哪类问题)大幅提升问答输出质量:
我们第一次就得到了如下补全:
像上面这样简单的指令足以让 GPT-3 明白它需要给出更符合您需求的答案;在本例中,就是几道冷知识问答题。您也可以用“Factual answer:”替代“A:”,以进一步改善结果。
对此输入,我们得到如下补全:
GPT-3 沙盒——用 Python 调用 OpenAI API
在本节中,我们将带您了解 GPT-3 Sandbox,这是一款开源工具,能用寥寥数行 Python 代码把想法变为现实。我们会展示如何使用它,以及如何针对您的特定应用进行自定义。该沙盒的目标是,无论您的技术背景如何,都能帮助您创建出色的 Web 应用。
请观看这一系列互动视频,按步骤创建并部署 GPT-3 应用。使用 GPT-3 沙盒需要如下技术栈:
在 IDE 中打开新终端,通过以下命令从该仓库克隆代码:
创建与部署 Web 应用所需的一切都已包含在代码中。您只需微调少量文件,即可将沙盒自定义为您的特定用例。现在,请创建一个Python 虚拟环境开始使用。创建完成后,您可以用以下命令安装所需依赖:
现在,您可以开始自定义沙盒代码。首先要查看的文件是
training_data.py。打开该文件,将默认提示替换为您想使用的训练提示。您可以使用 GPT-3 Playground 来尝试不同的训练提示(参见该书的第 2 章以及以下视频了解更多沙盒自定义内容)。现在,您已准备好微调 API 参数(
Maximum tokens、Execution Engine、Temperature、Top-p、Frequency Penalty、Stop Sequence)。我们建议您在 Playground 中针对给定的训练提示尝试不同的 API 参数取值,以确定最适合您的用例的设置。一旦获得满意结果,就可以在training_service.py文件中修改这些取值。就这样!您的基于 GPT-3 的 Web 应用已准备就绪。您可以用以下命令在本地运行:
您可以使用 Streamlit sharing 来部署应用并分享给更广泛的受众。请观看这段视频获取完整的部署演示。
用 GPT-3 能构建什么?
在 GPT-3 发布之前,大多数人对 AI 的使用仅限于某些特定任务,比如让 Alexa 播放您最喜欢的歌曲或使用 Google 翻译进行跨语言交流。随着 LLM 的发展,我们正面临一次重大的范式转换。LLM 向我们展示,通过增大模型规模,AI 应用能够执行与人类相似的创造性与复杂任务。
GPT-3 正在以合适的技术激发创意型创业者的想象力,推动新一轮初创潮。OpenAI 发布 API 后不久,初创生态中便涌现出大量利用它来解决问题的公司。让我们通过考察将 GPT-3 置于产品核心的部分高绩效初创公司,来探索这个充满活力的生态,它们涉足创意艺术、数据分析、聊天机器人、文案写作与开发者工具等领域。
1. GPT-3 的创意应用:Fable Studio
GPT-3 最令人兴奋的能力之一是讲故事。您可以给模型一个主题,并要求它在零样本设置下写一个故事。这种可能性让作家们得以拓展想象,创作出非凡作品。例如,由 Jennifer Tang 执导、与 Chinonyerem Odimba 和 Nina Segal 共同开发的话剧 AI,借助 GPT-3 展现了人机思维之间独特的协作。
Fable Studio 正在利用该模型的创意叙事能力。他们将 Neil Gaiman 与 Dave McKean 的儿童绘本《Wolves in the Walls》改编为一部艾美奖获奖的 VR 电影体验。片中主角 Lucy 能与人进行自然对话,得益于 GPT-3 生成的对白。该公司相信,随着模型的进一步迭代,有可能打造出与最优秀的人类作家同样娴熟且富有创造力的 AI 讲故事者。
2. GPT-3 的数据分析应用:Viable
Viable 是一款反馈聚合工具,可在问卷、工单、在线聊天记录与客户评论中识别主题、情绪与情感,并在数秒内给出结果摘要。例如,若询问“我们结账体验中让客户感到沮丧的是什么?”,Viable 可能会回答:“客户对结账流程感到沮丧,因为加载时间过长。他们还希望能在结账时修改地址并保存多种支付方式。”
正如客户反馈专家所期望的那样,Viable 在软件生成的每个答案旁都提供点赞与点踩按钮。他们会将这些反馈用于再训练。人工也参与其中:Viable 配备了标注团队,负责为内部模型与 GPT-3 微调构建训练数据集。他们使用当前迭代的微调模型生成输出,再由人工评估其质量。如果输出不合理或不准确,就会重写。一旦积累了令他们满意的输出清单,就会将其回灌到下一轮训练数据集中。
3. GPT-3 的聊天机器人应用:Quickchat
Emerson AI 是 Quickchat 公司的聊天机器人形象,以其广博的常识、多语种支持与持续对话能力而闻名。Emerson AI 用于展示由 GPT-3 驱动的聊天机器人的能力,并鼓励用户与 Quickchat 合作为各自公司实现类似的形象。Quickchat 的产品是一款通用型对话式 AI,能谈论任何主题。客户可以通过添加与其产品相关的额外信息来自定义聊天机器人。Quickchat 的应用多种多样,如自动化客户支持、构建 AI 形象帮助用户检索公司内部知识库等。
与典型的聊天机器人服务提供商不同,Quickchat 不构建任何对话树或僵化场景,也无需教会机器人以某种固定方式回答问题。客户只需按一个简单流程操作:复制并粘贴包含您希望 AI 使用的全部信息的文本,点击“再训练”按钮,几秒钟后就能吸收知识,就完成了。现在,基于您的数据完成训练的聊天机器人已可进行测试对话。
4. GPT-3 的营销应用:Copysmith
GPT-3 最受欢迎的应用之一是即席生成创意内容。Copysmith 就是这样一款内容生成平台。它使用 GPT-3 生成提示词,然后将其转化为电商业务所需的文案。GPT-3 在市场营销领域表现突出,它能以极快速度生成、协作并发布高质量内容。得益于该模型,线上中小企业可以撰写更好的号召性用语与产品描述,提升营销能力并迅速起步。
5. GPT-3 的编码应用:Stenography
OpenAI 社区大使 Bram Adams 创建了 Stenography,一个利用 GPT-3 与 Codex 来自动化生成代码文档的程序。
Stenography 一经推出便大获成功,登上 ProductHunt 当日榜首。Adams 认为,文档是人们与团队其他成员、与未来的自己,或与那些无意间在 GitHub 上看到某个项目的感兴趣者沟通的方式。Stenography 的目标是让项目更易于他人理解。
想进一步了解日益壮大的 GPT-3 生态,请参阅我们即将出版的 O’Reilly 新书中的第 4 章(作为下一代初创公司发射台的 GPT-3)与第 5 章(面向企业的 GPT-3)。
结语