Chatgpt 从零开始-GPT 和 ChatGPT

本文介绍了Bert和GPT的基础架构,着重比较了它们在Transformer编码器和解码器的不同应用,以及GPT系列(包括GPT-3和ChatGPT)如何通过强化学习和微调技术提升文本生成能力,特别是在对话场景中的应用和优化过程。
摘要由CSDN通过智能技术生成

写在前面

上一篇文章我们主要介绍 Bert,了解到通过训练 Bert 网络我们能得到更好的词向量表达方式,且词向量可以通过微调应用到不同的下游任务当中。我们知道 Bert 主要基于 Transformer 结构,此处再补充一点,实际中 Bert 主要使用 Transformer 结构的 encoder(编码器)结构进行训练。而 GPT 主要是基于 Transformer 的 decoder(解码器)实现,同时还需使用强化学习、人为标注方法对模型进行优化,最终基于 GPT 来实现 ChatGPT。这篇应该就是最后的 ChatGPT 文章了,如果有想要使用的同学可以参考下该博客链接

GPT

  ChatGPT 的前身就是 GPT,GPT 和 Bert 类似,也是基于 Transformer 结构实现的,但它里面主要使用的是解码器结构,编码器和解码器都是基于自注意力实现的,结构很相似,但也有一些区别,实际上编码器和解码器的区别主要在于:

1. 输入的 token 经过网络模块的次数不同。编码器为多个 token 表示的一句话,只需输入一次;解码器则需要多次
   地输入每个词的 token,以此来生成新的词 token,直到预测的词为一个结束的标记 "<eos>"。
2. 网络结构不同。编码器中主要以自注意力机制、残差块、feed forward 三个模块形成一个大的编码器模块;
   解码器中多出一个 mask-attention 模块,以及后接入一个 linear 层和 softmax 层。

  如下图,左边就是编码器,右边是解码器。我们说过 Bert 里主要就是使用编码器,对于输入的 token 会使用不同策略进行 mask,然后让网络自监督训练预测 mask 的词,从而实现训练,如果需要进行下游任务则是需要在编码器后再接上其他网络进行 finetune。
  而编码器部分则是以一个<s>标记为开始,先进行一次 attention 的计算,得到一个方形的 attention 特征图,再对该特征图进行 mask(如果不理解可以不用理解,只需要看作这是 mask multi-head attention 里的一种特点),再进入另一个 multi-head attention 模块中进行计算(此时还需接入编码器的输入特征,以此直到输入的文字、上下文是啥),最终进入到 softmax 层,根据所有已有的 token 来计算下个token是哪个词的概率最大,以此实现文本的生成。
  如果你完全理解上面这段话,就能发现解码器部分是能够拿来做文本生成任务的,GPT 干的事就是利用解码器来生成不同的文字,它问世以来就是主要被用于机器人聊天相关的任务当中,这就是 GPT。
在这里插入图片描述

GPT-3

  它是 GPT 的进一步发展,它拥有更多的参数,将近是 GPT 的 100-1000 倍,相应的网络的输入也可以大很多,也就是输入的文字数量可以更多,同时它们的训练策略也有区别。它同时需要对各种任务进行训练,如翻译、对话等,并使用 zero-shot、one-shot、few-shot 方法来对网络进行训练(这些 shot 原本主要用来克服深度学习任务中训练数据不足之类的情况),接下来再使用更多的语料库对网络进行文本生成式的训练。
  这种使用少量数据进行引导配合大量文本训练的方法能够让模型识别用户的输入所带有的语义倾向:如用户在输入“你能告诉我 gpt 有哪些缺点吗?”,显然这不是个翻译任务,主要想让模型回答 gpt 的缺点是什么(前者是翻译任务,后者是对话任务)
  对于上面的例子,那训练文本中的一个标注过的例子则应该是类似于:

  • 问:你能告诉我 gpt 有哪些缺点吗?
  • 答:gpt 的缺点主要是无法分辨用户输入的问题倾向是什么。

ChatGPT

  实际上在 GPT-3 后,还有 InstructGPT,ChatGPT 是后者的衍生版,ChatGPT 通过SFT 模型微调、奖励模型、强化学习三个阶段对模型进行训练,才得到我们使用很多的 ChatGPT。
  对于模型微调阶段,openai 官方做了一件事,那就是先让人工对数据进行标记。这里有个前提,模型毕竟是使用 one-shot 等方法训练出来的,精度相比对所有数据进行标注的方式来说会下降一些,所以对于 GPT-3 模型的输出,openai 对其进行了人为标注,进一步提高模型输出的合理性。简单说就是对于模型输出的话,需要人对这句话进行合不合理的判定,进行监督训练。
  对于奖励模型阶段,使用了一个 reward 奖励模型,这里本质上已经开始使用了强化学习方法。这里会让模型对一个问题输出多个回答,如何决定这些回答的好坏?使用人工标注。标注的时候,会对这些输出进行排名组合,并选出高质量的问答组合,以此让模型分辨生成文本的好坏,并继续训练 reward 模型。
在这里插入图片描述
  对于强化学习阶段,主要基于上一步骤中的 reward 机制,模型就学习到了一种奖励策略,这种策略以及 SFT 模型中在现在的步骤有很大用处,此时主要采用 PPO 强化学习算法来实现模型自我优化,这时的模型已经能够自主使用 reward 模型来给回答一个判断,给出评分。接下来在大量的语料库训练下,模型会不断去企图获得分数更高的回答,不断重复这个过程,最终就可以得到 ChatGPT。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值