Vol. 1|GPT-3 的原理揭秘与微调技巧
Azure OpenAI 服务在微软全球 Azure 平台正式发布后,迅速成为众多用户最关心的服务之一。
Azure OpenAI 服务允许用户通过 REST API 访问 OpenAI 的强大语言模型,包括 GPT-3、Codex 和 Embeddings 模型系列。本期,我们将为您揭秘 Azure OpenAI 的“屠榜”神器——GPT-3 的原理与使用技巧。
01 GPT-3 的底层算法
GPT-3 全称“Generative Pre-trained Transformer - 3”, 参数高达 1750“亿”个,是微软和 OpenAI 联合推出的超级人工智能。简单地说,GPT-3 作为一个自监督模型,几乎可以完成自然语言处理的绝大部分任务。GPT-3 本质上是一个预训练自然语言处理模型,能够同时完成自然语言理解、文本生成、文本总结、自动问答、机器翻译、算术运算和代码生成等多种任务。GPT-3 的面世有望帮助开发者更加快速地构架和部署自然语言处理应用程序,也拓宽了更多不同领域不同知识背景的用户使用AI模型的可能性。
GPT 系列作为 OpenAI 开发的一系列大型预训练语言模型,是基于 Transformer 算法的复杂堆叠、超大量的训练语料与数以亿计的模型参数训练出的一系列生成式预训练语言模型。
与传统的自然语言处理(NLP)有监督模型不同,GPT 先通过充满多样性的大量数据进行无监督预训练,然后再将带有标签的数据集给入预训练模型中进行有监督微调。GPT 强化了模型从大量无标签原始文本中学习语言或语义本身的能力,并在模型有广泛语言学能力的基础上提供部分有标签数据对特定任务进行微调。这一方面解决了大多数 NLP 任务中高质量标签数据量少的问题,另一方面建立了一个真正从语言学角度理解自然语言的模型。
GPT-3 作为 GPT 系列的第三代模型,是 Transformer 算法在 800 万网页数据集的基础上训练而成的。GPT-3 与前两代模型相比,在模型参数量以及预训练数据量上进行了几百倍的扩充,从 GPT-2 的 15 亿参数与 40GB 数据量扩展到了如今的 1750 亿参数与 45TB 的预训练数据。这在很大程度上增强了 GPT 系列在语言理解能力上的提升,形成了现如今爆红的 GPT-3 服务,并为后续的 ChatGPT 等生成式自然语言模型提供基础。
02 GPT-3 的四种模型
OpenAI 提供四种主要的 GPT-3 模型。其中,Davinci 是功能最强大的模型,Ada 是速度最快的模型。以下详细介绍了每种模型的特点以及适用场景:
虽然通常情况下 Davinci 是功能最强大的 GPT-3 模型,但其它模型也能够非常出色地执行某些任务,并且有着明显的速度或者成本优势。比如, Curie 模型也可以执行许多与 Davinci 相同的任务,但速度更快,并且成本仅为 Davinci 的十分之一。
模型选择建议
● 当我们在选择模型时,最好是在实验阶段先使用 Davinci, 确保我们能使用 GPT-3 先得到一个最好的结果,明确正确的使用方向。一切正常之后,我们就可以继续尝试其它模型,看看是否能以更低的延迟和更优的成本选择获得相同的结果。
● 有大量优质(指人工审核/达标的)数据的情况下,建议选择低复杂度的模型,精度或许能媲美 Davinci,且 ROI 更高。
● 如果是分类/归纳这类相对简单的任务,建议选择 Ada 模型。
● 如果数据量不大(几百)或质量不保证(如未经校准的数据)的情况下,建议选择 Davinci 模型。
03 在 Azure OpenAI 服务中使用 GPT-3
Azure GPT-3 Playground 的使用界面非常简洁,我们只需要在文本框中输入提示语或需要 GPT-3 分析的内容,等待 GPT-3 根据提示返回相应结果即可。
如图所示,我希望 GPT-3 能根据我的产品介绍构思一些合适的产品名称,GPT-3 返回的绿色高亮部分即为分析结果。
04 OpenAI API 组件选择
以下介绍了 OpenAI API 中的一些重要组件:
05 自定义模型
● Zero-Shot(零样本)
直接将提示和文本给到 GPT-3,让 GPT-3 自行理解提示并给出回答:
● One-Shot(单样本)
通过给 GPT-3 一个简单的示例,让模型了解我们想要的输出形式以及风格,从而给出回答:
● Few-Shot(小样本)
通过给 GPT-3 一些简单的示例,让模型了解我们想要的输出形式以及风格,从而给出回答:
06 Fine-Tuning (微调)
什么是 Fine-Tuning (微调) ?通俗来讲,如果我们将 GPT-3 中的预设模型理解为一个有基础知识和常识的学生,当 TA 进入制造、医疗、地产、零售、游戏互联网等不同行业,面临更加定制化、个性化的业务场景时,我们还需要帮助 TA 进一步了解特定行业的专业知识,以搭建出适合业务场景的自定义模型。Fine-Tuning(微调)就是在一个预训练模型基础上,加上特定的业务/专业数据,进行额外训练的过程。通过合理配置超参数和合理分配训练数据,我们可以通过精良的 Fine-Tuning 训练一个较为稳定的商用模型。
我们可以借助 Azure OpenAI 服务使用 Fine-Tuning,根据个人数据集定制模型。同时,Fine-Tuning 可以帮助我们更加充分地利用 Azure OpenAI 服务,获得以下优势:
● 得到的结果质量比 Prompt Design(提示设计)更高
● 能训练更多的例子
● 节省 Token
● 请求的延时更低
那么,我们应该如何正确理解并使用 Fine-Tuning 呢?如果我们把 GPT 看做一个小孩,Fine- Tuning 就是使用例子来引导 GPT 模仿,让它成长的过程。首先,我们需要设置正确的参数以确保数据不会被过度重复利用;其次,微调的过程不可以模板化,需要尽量接近不同场景的真实用例和习惯,与现实结合才能调整出合适的模型;最后值得注意的是,Fine-Tuning 的过程最好是循序渐进的,可以从几百行数据开始逐渐加大,以防模型过拟合。
Fine-Tuning(微调)建议
● 超参数调整:如果样本量不大或质量不保证(如未经校准的数据),控制 epoch 8-16 有助于有效提升同精度表现; 如果样本量足够,建议控制 epoch 1-4,可以有效避免过拟合。模型越复杂 epoch 可以越小,实现更低的训练成本。
● 很多时候,Fine-Tuning 不是唯一解。我们在尝试 GPT-3 的时候,可以先考虑使用内置模型,以 One-Shot 或 Few-Shot 为辅助方式去提升模型回答的可靠性;在需要更加精进的模型的情况下,转为 Fine-tuning 做长线改善。
07 GPT-3 的企业级使用场景
基于我们与客户在 OpenAI 上的探讨和实践,我们发现有四种用例很突出:内容生成、内容摘要、代码生成和语义搜索。
内容生成
使用场景例如:客服部门快速的自动化生产对客户的回复、为公司网站生成个性化 UI、或者市场部门等快速生产文档等,都是目前最受关注的使用场景。
内容摘要
第二个受欢迎的能力是摘要。对于呼叫中心,公司总是希望快速总结对话记录、冗长乏味的报告、或者大量的分析文章,而 GPT 都能帮上不少忙。社交媒体趋势摘要是另一个受大家关注的用途,可以让公司快速总结客户正在关注什么,以及他们所处的行业趋势。
代码生成
第三个受关注的能力是跟程序代码相关…… 想象一下想要将你的 SQL 跟自然语言互换的畅快感觉。代码生成可以帮助将代码转换,以及直接将文本和源代码生成到您的应用程序中。
搜索
最后,OpenAI 的语义搜索将有助于加快搜索文档的时间。
RPG 游戏
GPT 和 Open AI 可以帮助收集并分析玩家信息及游戏进程等数据,从而动态生成符合场景条件的 NPC,让玩家能够更自然且更真实地与游戏中的NPC进行互动。
客服中心 AI 客服和内容总结
端到端的呼叫中心分析,从分类到电子邮件生成,提高生产力并节省呼叫中心操作期间的时间和精力。GPT 强大的语义理解、文本生成和文本总结等能力,能更好地协助客服完成自动交易,并更自然地与客户聊天。
营销部门客户 360 度洞察
客户 360,提供超个性化的能力,确保用户拥有完整和全面的客户视图,并增加客户满意度,同时利用反馈和趋势更好地为他们提供服务。
业务流程自动化
业务流程自动化,例如文档自动化,我们使用搜索、代码生成和内容生成等多种能力来更快速、更高效地完成任务。
Azure OpenAI 官方指南
Vol.01 GPT-3 作者
微软云解决方案工程师 罗贵欢 Sunny Luo
微软云解决方案工程师 周锐君 Milo Zhou
请扫描下方二维码获得更多权威 Azure OpenAI 信息,包括 ChatGPT 的架构设计与应用实践,DALL-E 的图像生成功能欲安全过滤基智以及 Codex 的模型结构和应用场景。
文章信息来自于微软 ,不代表白鲸出海官方立场,内容仅供网友参考学习。对于因本网站内容所引起的纠纷、损失等,白鲸出海均不承担侵权行为的连带责任。如若转载请联系原出处
友情提醒:白鲸出海目前仅有微信群与QQ群,并无在Telegram等其他社交软件创建群,请白鲸的广大用户、合作伙伴警惕他人冒充我们,向您索要费用、骗取钱财!