ChatGPT相关核心算法

ChatGPT 的卓越表现得益于其背后多项核心算法的支持和配合。本文将分别介绍作为其实现基础的 Transformer 模型、激发出其所蕴含知识的Prompt/Instruction Tuning 算法、其涌现出的思维链能力、以及确保其与人类意图对齐的基于人类反馈的强化学习算法。

1.基于Transformer的预训练语言模型

ChatGPT 强大的基础模型采用 Transformer 架构, Transformer 是一种基于自注意力机制的深度神经网络模型,可以高效并行地处理序列数据。

原始的 Transformer 模型包含两个关键组件:编码器和解码器。编码器用于将输入序列映射到一组中间表示,解码器则将中间表示转换为目标序列。编码器和解码器都由多层的注意力模块和前馈神经网络模块组成。其中自注意力模块可以学习序列中不同位置之间的依赖关系,即在处理每个位置的信息时,模型会考虑序列中其他所有位置上的信息,这种机制使得 Transformer模型能够有效地处理长距离依赖关系。在原始 Transformer 模型基础上,相继衍生出了三类预训练语言模型:编码预训练语言模型、解码预训练语言模型和编解码预训练语言模型。

1.1 编码预训练语言模型(Encoder-only Pre-trained Models)

这类模型在预训练过程中只利用原始 Transformer 模型中的编码器。相应的预训练任务通常选用掩码语言建模任务(Masked Language Modeling), 即掩码住(用特殊字符 [MASK] 替换)输入句子中一定比例的单词后,要求模型根据上下文信息去预测被遮掩的单词。其中有有代表性的工作包括 BERT, ALBERT, RoBERTa 等。

  • BERT:BERT 模型是最经典的编码预训练语言模型,其通过掩码语言建模和下一句预测任务,对 Transformer 模型的参数进行预训练。
  • ALBERT:ALBERT 是一个轻量化的 BERT 模型,通过分解词向量矩阵和共享 Transformer 层参数来减少模型参数个数。
  • RoBERTa:相较于 BERT 模型, RoBERTa 在预训练阶段,采用了更多的语料以及动态掩码机制(不同轮次同一样本掩码不同的单词),去掉了下一 句预测任务,同时采用了更大的批大小。

1.2 解码预训练语言模型(Decoder-only Pre-trained Models)

GPT (Generative Pre-trained Transformer) 是由 OpenAI 提出的只有解码器的预训练模型。相较于之前的模型,不再需要对于每个任务采取不同的模型架构,而是用一个取得了优异泛化能力的模型,去针对性地对下游任务进行微调。在本章节将介绍 GPT 系列模型,包括 GPT-1、 GPT-2 和 GPT-3。

(1)GPT-1

GPT-1 在文章“Improving Language Understanding by Generative PreTraining”[1] 中被提出。在 GPT 被提出之前,大多数深度学习方法都需要大量人工标注的高质量数据,但是标注数据的代价是巨大的,这极大程度上限制了模型在各项任务性能的上限。如何利用容易获取的大规模无标注数据来为模型的训练提供指导成为 GPT-1 中需要解决的第一个问题。另外自然语言处理领域中有许多任务依赖于自然语言在隐含空间中的表征,不同任务对应的表征很可能是不同的,这使得根据一种任务数据学习到的模型很难泛化到其他任务上。因此如何将从大规模无标注数据上学习到的表征应用到不同的下游任务成为 GPT-1 需要解决的第二个问题

针对第一个问题, GPT-1 中使用了自左到右生成式的目标函数对模型进行预训练。这个目标函数可以简单理解为给定前 i − 1 i - 1 i1 个 token,对第 i i i 个 token 进行预测。基于这样的目标函数, GPT-1 就可以利用无标注的自然语言数据进行训练,学习到更深层次的语法信息与语义信息。

针对第二个问题,在完成了无监督的预训练之后, GPT-1 接着使用了有标注的数据进行有监督的微调使得模型能够更好地适应下游任务。给定输入token 序列 x 1 , x 2 , . . . , x m x1, x2, ..., xm x1,x2,...,xm 与标签 y 的数据集,对模型的参数进行再次训练调 整,用到的优化模型是在给定输入序列时预测的标签最接近真实值

具体来说, GPT-1 在大规模无标注语料库上预训练之后,再利用有标注数据在特定的目标任务上对模型参数进行微调,实现了将预训练中获得的知识迁移到下游任务。

GPT-1 的结构很简单,由 12 层 Transformer Block(自注意力模块和前馈神经网络模块)叠加而成。下图是 GPT-1 原文中的总览图,左侧是 GPT-1 的架构以及训练时的目标函数;右侧是对于不同任务上进行微调时模型输入与输出的改变。

在这里插入图片描述

(2)GPT-2

与 GPT-1 中的通过预训练-微调范式来解决多个下游任务不同, GPT- 2 更加侧重于 Zero-shot 设定下语言模型的能力。 Zero-shot 是指模型在下游任务中不进行任何训练或微调,即模型不再根据下游任务的数据进行参数上的优化,而是根据给定的指令自行理解并完成任务。

简单来讲, GPT-2 并没有对 GPT-1 的模型架构进行创新,而是在 GPT- 1 的基础上引入任务相关信息作为输出预测的条件,将 GPT-1 中的条件概 率 p ( o u t p u t ∣ i n p u t ) p(output|input) p(outputinput) 变为 p ( o u t p u t ∣ i n p u t ; t a s k ) p(output|input; task) p(outputinput;task);并继续增大训练的数据规模以及模型本身的参数量,最终在 Zero-shot 的设置下对多个任务都展示了巨大的潜力。

虽然 GPT-2 并没有模型架构上的改变,但是其将任务作为输出预测的条件引入模型从而在 Zero-shot 的设置下实现多个任务的想法一直延续至今。这样的思想事实上是在传达只要模型足够大,学到的知识足够多,任何有监督任务都可以通过无监督的方式来完成,即任何任务都可以视作生成任务。

(3)GPT-3

GPT-3使用了与 GPT-2 相同的模型和架构。文中为了探索模型规模 对于性能的影响,一共训练了 8 个不同大小的模型,并将最大的具有 1750 亿参数的模型称为 GPT-3。

GPT-3 最显著的特点就是大。大体现在两方面,一方面是模型本身规模大,参数量众多,具有 96 层 Transformer Decoder Layer,每一层有 96 个 128 维的注意力头,单词嵌入的维度也达到了 12,288;另一方面是训练过程中使用到的数据集规模大,达到了 45TB。在这样的模型规模与数据量 的情况下, GPT-3 在多个任务上均展现出了非常优异的性能,延续 GPT-2 将无监督模型应用到有监督任务的思想, GPT-3 在 Few-shot, One-shot 和 Zero-shot 等设置下的任务表现都得到了显著的提升。

1.3 基于编解码架构的预训练语言模型(Encoder-decoder Pretrained Models)

基于编码器的架构得益于双向编码的全局可见性,在语言理解的相关任务上性能卓越,但是因为无法进行可变长度的生成,不能应用于生成任务。

基于解码器的架构采用单向自回归模式,可以完成生成任务,但是信息只能从左到右单向流动,模型只知“上文”而不知“下文”,缺乏双向交互。针对 以上问题,一些模型采用序列到序列的架构来融合两种结构,使用编码器提取出输入中有用的表示,来辅助并约束解码器的生成。

  • BART:BART 的具体结构为一个双向的编码器拼接一个单向的自回归解码器,采用的预训练方式为输入含有各种噪声的文本,再由模型进行去噪重构。在解码器部分, BART 每一层对编码器的最后一层的隐藏表示执行交叉注意力机制以聚合关键信息。 BART 在维基百科和 BookCorpus 数据集上训练,数据量达 160GB。
  • T5:BART 为了兼顾不同任务设计了复杂的预训练任务,针对如何在多个任务中实现优秀的迁移性能这一问题,谷歌研究者提出了一种新的范式:将所有自然语言处理任务统一成“文本到文本”的生成任务。 T5 通过在输入之前加入提示词,实现了用单个模型解决机器翻译、文本摘要、问答和分类等多个任务。针对迁移学习需要的巨量、高质量和多样的预训练数据, T5 在谷歌专门构造的 C4 数据集上进行训练。
  • Switch Transformers:随着语言模型的深入研究,参数量的增加可以显著提高模型的性能,但随之而来的就是应用时越来越大的运算量。 SwicthTransformer 将混合专家网络(Mixture-of-Experts, MoE)的条件运算思想引入 Transformer 的全连接层,实现增加模型的尺寸而不增加推理时的运算量。

2.提示学习与指令精调

2.1 提示学习概述

提示学习(Prompt Learning) 简单来说是通过一些方法编辑下游任务的输入,使其形式上模拟模型预训练过程使用的数据与任务。比如做情感分类任务时,监督学习的做法是输入“我今天考砸了”,模型输出分类的分数或分布,而提示学习的做法则是在“我今天考砸了”后拼接上自然语言描述“我感觉很 ____”,让模型生成后面的内容,再根据某种映射函数,将生成内容匹配到某一分类标签。

可以看出,提示学习这种方式拉近了测试分布与预训练分布的距离,进而可以利用大规模预训练语言模型在预训练过程中习得的强大语言建模能力,使其不经过微调就可以在各种下游任务上取得很好的结果。后续更有工作提出了自动提示搜索和连续提示的方法,使得提示本身也可以微调,使其 有了更好的灵活性。

相较于提示学习, 指令精调(Instruction Tuning) 可以说是提示学习的加强版。两种学习方法的本质目标均是希望通过编辑输入来深挖模型自身所蕴含的潜在知识,进而更好的完成下游任务。

而与提示学习不同的是,指令学习不再满足于模仿预训练数据的分布,而是希望通过构造“指令 (Instruction)”并微调的方式,学习人类交互模式的分布,使模型更好的理解人类意图,与人类行为对齐;在指令学习中,模型需要面对的不再是单纯的补全任务,而是各种不同任务的“指令”,即任务要求。模型需要根据不同的任务要求,做出相匹配的正确回复。“指令”举例如下:

  • 请将下面这句话翻译成英文“ChatGPT 都用到了哪些核心技术?”
  • 请帮我把下面这句话进行中文分词“我太喜欢 ChatGPT 了!”
  • 请帮我写一首描绘春天的诗词,诗词中要有鸟、花、草。

从样例中可以看出,原本自然语言处理中的经典任务,经过任务要求的包装后,就变成了更符合人类习惯的“指令”。

研究表明,当“指令”任务的种类达到一定量级后,大模型甚至可以在没有见过的零样本(Zero-shot) 任务上有较好的处理能力。因此,指令学习可以帮助语言模型训练更深层 次的语言理解能力,以及处理各种不同任务的零样本学习能力。 OpenAI 提出的 InstructGPT 模型使用的就是指令学习的思想, ChatGPT 沿袭了InstructGPT 的方法。

2.2 ChatGPT中的指令学习

ChatGPT 所用到的指令学习数据集的构造方法和训练方法与 InstructGPT 大致相同,因此介绍 InstructGPT 构造“指令”数据集的细节。

InstructGPT 的“指令”数据集由两部分构成,其中一部分收集于全球用户使用 OpenAI 的 API 后的真实人机交互数据,这些数据在使用之前都经过了信息去重和敏感信息过滤;另一部分数据则来自于人工标注

为了使标注人员能够标注出高质量的数据集, OpenAI 通过前期的审核和面试,聘请了一个由 40 人组成的标注团队。在这些人工标注的数据中,总共分为三类,其一是为了增加数据集中任务的多样性,由标注人员写出任意任务的 “指令”;其二是小样本(Few-shot)数据,由标注人员写出“指令”和一些对应的问答对,用于训练模型的小样本学习(Few-shot learning)能力;其三 是在 OpenAI API 中已有的用例,标注人员模仿这些用例写出相类似的“指令”数据。这些数据包含了语言模型中常见的任务类型(生成、问答、聊天、改写、总结、分类等),其中 45.6% 的“指令”为生成任务类型,在所有类型中占比最大。

InstructGPT 通过在构造的”指令”数据集上进行有监督微调(Supervised fne-tuning, SFT)和基于人工反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)以使模型与人类需求对齐。

在实验结果上,将运用指令学习后且含有 175B 参数的 InstructGPT 模 型,在指令学习的经典数据集 FLAN、 T0 上进行精调后发现, InstructGPT 模型对比 FLAN、 T0 两个模型在效果上均有一定程度的提升。

3.思维链(Chain of Thought, COT)

人类在解决数学应用题这类复杂推理任务的过程中,通常会将问题分解为多个中间步骤,并逐步求解,进而给出最终的答案,例如求解问题“小华每天读 24 页书, 12 天读完了《红岩》一书,小明每天读 36 页书,几天可以读完《红岩》?”,人会将问题分解为(1)“红岩共 24*12=288(页)”、(2)“小明可以用 288÷36=8(天)”。受此启发,谷歌研究人员 Jason Wei(现 OpenAI 员工)等提出了思维链,通过在小样本提示学习的示例中插入一系列中间推理步骤,有效提升了大规模语言模型的推理能力,图中展示模型通过产生思维链来正确求解数学应用题。

在这里插入图片描述

相较于一般的小样本提示学习,思维链提示学习有几个吸引人的性质:

  1. 在思维链的加持下,模型可以将需要进行多步推理的问题分解为一系列的中间步骤,这可以将额外的计算资源分配到需要推理的问题上。
  2. 思维链为模型的推理行为提供了一个可解释的窗口,使通过调试推理路径来探测黑盒语言模型成为了可能。
  3. 思维链推理应用广泛,不仅可以用于数学应用题求解、常识推理和符号操作等任务,而且可能适用任何需要通过语言解决的问题。
  4. 思维链使用方式非常简单,可以非常容易地融入语境学习(in-context learning),从而诱导大语言模型展现出推理能力。

4.基于人类反馈的强化学习(Reinforcement Learning with Human Feedback, RLHF)

RLHF 是 ChatGPT/InstrcutGPT 实现与人类意图对齐,即按照人类指令尽可能生成无负面影响结果的重要技术。该算法在强化学习框架下实现,大体可分为以下两个阶段:

(1)奖励模型训练

该阶段旨在获取拟合人类偏好的奖励模型。奖励模型以提示和回复作为输入,计算标量奖励值作为输出。奖励模型的训练过程通过拟合人类对于不同回复的倾向性实现。具体而言,首先基于在人类撰写数据上精调的模型,针对同一提示采样多条不同回复。然后,将回复两两组合构成一条奖励模型训练样本,由人类给出倾向性标签。最终,奖励模型通过每条样本中两个回复的奖励值之差计算倾向性概率拟合人类标签,进而完成奖励模型的训练。

(2)生成策略优化

给定习得的奖励模型, ChatGPT/InstructGPT 的参数将被视为一种策略,在强化学习的框架下进行训练。首先,当前策略根据输入的查询采样回复。然后,奖励模型针对回复的质量计算奖励,反馈回当前策略用以更新。值得注意的是,为防止上述过程的过度优化,损失函数同时引入了词级别的 KL 惩罚项。此外,为了避免在公开 NLP 数据集上的性能退化,策略更新过程兼顾了预训练损失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/1802.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT在安全研究领域的应用实践

引言 ChatGPT是一个人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言来进行对话,并能进行连续对话。目前ChatGPT已经官方已经更新模型到4.0版本,宣称它是“最先进的系统,能生产更安全和更有用的回复”。当前使…

ChatGPT 核心技术大起底——InstructGPT:研究人类反馈数据比加大模型规模更重要!...

导读 作为ChatGPT的姊妹模型,InstructGPT的核心技术和ChatGPT有很多相通之处。参透InstructGPT的核心技术细节,有助于研究者们在ChatGPT方向上走得更远。 具体来看,一味地让语言模型变大并不意味着它们能更好地遵循用户的意图。大语言模型可能…

ChatGPT研究分析:GPT-4做了什么

前脚刚研究了一轮GPT3.5,OpenAI很快就升级了GPT-4,整体表现有进一步提升。追赶一下潮流,研究研究GPT-4干了啥。 本文内容全部源于对OpenAI公开的技术报告的解读,通篇以PR效果为主,实际内容不多。主要强调的工作&#x…

【NLP】深入浅出,解析ChatGPT背后的工作原理

选自Assembly AI 作者:Marco Ramponi 机器之心编译 编辑:王强、蛋酱 自 ChatGPT 发布以来,已经吸引了无数人一探究竟。但 ChatGPT 实际上是如何工作的?尽管它内部实现的细节尚未公布,我们却可以从最近的研究中一窥它的…

炸了!斯坦福新研究:ChatGPT背后模型被证实具有人类心智!知名学者:“这一天终于来了”...

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>CV微信技术交流群 丰色 萧箫 发自 凹非寺转载自:量子位(QbitAI) ChatGPT原来是拥有心智的?! “原本认为是人类独有…

一本关于ChatGPT的书《ChatGPT 革命:了解大型语言模型的力量》免费下载

下载地址:https://download.csdn.net/download/winniezhang/87431530 这本书有什么不同: 1、从书名,到大纲,到内容,基本都来自ChatGPT的自述,本人只是负责编辑。 2、整个成书过程只用了2小时不到。 3、…

日赚14000元!她用ChatGPT创作文章来赚钱

最近有一件事在网络上爆火,那就是有一个小姐姐在ChatGPT的帮助之下写了一篇文章,并且发表到推特上之后很快收入激增。 最近有一件事在网络上爆火,那就是有一个小姐姐在ChatGPT的帮助之下写了一篇文章,并且发表到推特上之后很快收入…

如何使用 ChatGPT 生成 Stable diffusion 提示词

chatgpt免费体验入口网址: http://chat.xutongbao.top 一、教chatgpt写提示词 StableDiffusion是一款利用深度学习的文生图模型,支持通过使用提示词来产生新的图像,描述要包含或省略的元素。 我在这里引入StableDiffusion算法中的Prompt概念…

零基础也能用ChatGPT写代码,简直不要太爽

最近朋友圈刷到最多的动态和话题都是围绕ChatGPT的,作为一个功能强大,用途广泛的聊天机器人,我们能用它做的事情太多了。比如用它写文案,写剧本,规划旅游路线,甚至写小说等等。在本文中,我们将探…

让ChatGPT帮你写一个剧情脚本

最近,很多视频制作者正在使用AI编写视频脚本,效率直接提升20倍以上!而ChatGPT作为一个强大的AI模型,在各个领域都得到了广泛应用。尽管对于ChatGPT的介绍不是很多,但是它已经在很多自媒体平台上被广泛利用来处理工作了…

如何让ChatGPT写情书(三步走)

近年来,人工智能技术的迅猛发展给我们生活带来了许多便利和惊喜。 而动人的情书文学也逐渐成为ChatGPT技术的应用领域之一。ChatGPT模型是一种递归神经网络,可以在大量数据的基础上为用户生成语言内容。使用GPT来写情书,相比以前的纯手工撰写…

一键部署 ChatGPT Next Web

大家好!我是韩老师。 Awesome GPT 来了! 相信关注过 Awesome GPT repo 的童鞋们,都已经知道 ChatGPT Next Web 是一个强大的 ChatGPT Web 应用。 今天看到一位微软 MVP 大佬写了个文章,带大家 3 分钟把 ChatGPT Next Web 部署到 A…

基于Docker如何快速部署自己的ChatGPT

背景 随着OpenAI在2022年底发布的LLM模型-ChatGPT展现出的强大效果,ChatGPT无疑成为了当下炙手可热的明星模型。 现有的基于GPT的开源项目已经非常多,本文以现有的高热度github开源项目chatgpt-web为例,教大家简单快速地搭建属于自己的Chat…

玩转ChatGPT:Auto-GPT项目部署与测评

一、Auto-GPT简介 最近,以ChatGPT为代表的超大规模语言模型火出了圈,各种二次开发项目也是层出不穷。 这周在AI圈炸街的是Auto-ChatGPT,在GitHub上已经61.4K的点赞了。 项目地址:https://github.com/Torantulino/Auto-GPT 用项…

详细的从零部署ChatGPT

chatgpt产品机遇: 1. chatgpt 所带来的机遇: 下一代 AI 搜索引擎,解决目前搜索引擎结果多样复杂、需要人工判断准确定的问题;替代低端劳动岗位、释放部分脑力活动、即将变革多个行业 ; 2. chatgpt 我分析将带来多个新的工作岗位机…

玩转ChatGPT:中科院ChatGPT Academic项目部署与测评

一、ChatGPT Academic简介 最近,以ChatGPT为代表的超大规模语言模型火出了圈,各种二次开发项目也是层出不穷。 比如说今天我们玩弄的这个“ChatGPT Academic”,在GitHub上已经13.7K的点赞了。 项目地址:https://github.com/bina…

本地部署你的专属ChatGPT,不用想方设法翻墙了

自ChatGPT问世以来,由于安全问题ChatGTP始终没有在国内提供服务,那访问ChatGTP有条件的就通过专线到国外进行访问,没条件的但喜欢折腾的可以通过各种野路子科学上网,没条件不喜欢折腾的听听就行。 无意间在gitHub上发现了一个开源…

Chatgpt私有化部署(全流程)

前言 当下使用chatgpt来帮助完成工作已然成为主流,但想访问必须先面对地区的封锁,所以使用openai官方提供的API来部署至本地服务器从而更加便利的使用chatgpt。本文章主要介绍如何部署私有聊天机器人。 条件准备: 公网服务器一台&#xff0…

学术版ChatGPT部署

仅记录本人部署中科院学术版ChatGPT流程。 ChatGPT GPT使用“咒语”: www.aishort.top 网址:https://chat.openai.com/ 按步骤操作,输入邮箱等。 注册需手机号,可以申请一个虚拟号接收验证码。 以Get a virtual phone numbe…

文心一言发布!【中国版ChatGPT】附测试链接

文心一言是百度推出的生成式对话产品,2023.3.16正式发布12。它基于文心大型模型技术,被外界誉为“中国版ChatGPT” 文心一言测试链接: https://cloud.baidu.com/survey_summit/wenxin.html 文心一言与Chatgpt对比 文心一言在中文的支持方面…