ChatGPT是如何工作的?从GPT-1到ChatGPT的历程

ChatGPT是如何工作的?从GPT-1到ChatGPT的历程

AIGC,或人工智能生成的内容,是使用人工智能进行内容创建的一种方式,被认为是继PGC(专业生成的内容)和UGC(用户生成的内容)后的新型内容创建方式。AIGC在许多领域如文本、图像、音频/视频、软件开发等都发展迅速,近年来,有许多专注于AIGC的创作体验平台,用户可以输入一句话让AI合成与描述相关的图片,或更常见的,输入一篇文章的描述,或者仅仅是一个故事的开头,让AI帮你完成文章。在任何需要写作或内容创作的地方,它都有广泛的应用,如编写财务报告、开发代码,或者创作销售/营销材料。它可以帮助人们更快地理解和分析复杂的信息,从而帮助他们做出更好的决策,并产生显著的价值。得益于技术的进步,这些提高生产力的愿景正在成为现实。我们在下面的图表中总结了AIGC技术的发展,并将在接下来的博客中详细阐述它们。

Key AIGC Technology

循环神经网络 序列到序列 RNN Seq2Seq

长时间以来,AIGC一直由基于RNN的Seq2Seq模型主导,该模型由两个RNN网络组成,第一个RNN是编码器,第二个RNN是解码器。RNN Seq2Seq生成的文本质量通常较差,经常伴随语法错误或语义不清,主要是由于错误的传播和放大。

RNN Seq2Seq Model

2017年,Transformer模型结构被引入,并因其能够捕获复杂的特征表示以及与RNN模型相比的改进训练效率而迅速受到欢迎。因此,一系列预训练模型被开发出来,这些模型已经成为领先的AIGC技术。下一节将概述这些模型。Transformer模型特别有用,因为它可以并行处理序列,导致文本写作算法研究的焦点转向Transformer模型。

Transformer Architecture

UniLM

UniLM,即统一语言模型,是微软研究院于2019年开发的一种生成式BERT模型。与传统的Seq2Seq模型不同,它只使用BERT,并没有解码器组件。它结合了几个其他模型的训练方法,如L2R-LM(ELMo,GPT),R2L-LM(ELMo),BI-LM(BERT)和Seq2Seq-LM,因此被称为“统一”模型。

UniLM Model Architecture (Source)

UniLM的预训练分为三部分:从左到右,双向,和序列到序列。

这三种方法的区别仅在于Transformer的掩码矩阵的变化:

  • 对于序列到序列(Seq-to-Seq),前面句子的注意力被用于后面的句子,这样前面的句子只能关注自己而不能关注后面的句子;后面句子中每个词对其后词的注意力被掩蔽,它只能关注它前面的词;
  • 对于从左到右(Left-to-Right),Transformer的注意力只关注自身和其前面的词,不关注其后的词,所以掩码矩阵是一个下三角矩阵;
  • 对于双向(Bidirectional),Transformer的注意力关注所有的词,并包括NSP任务,就像原来的BERT一样。

在UniLM预训练过程中,每种方法都训练1/3的时间。相比于原来的BERT,增加了单向LM预训练提高了文本表现能力,添加的Seq-to-Seq LM预训练也使UniLM在文本生成/写作任务上表现良好。

T5

T5,全名为Text-to-Text Transfer Transformer,是谷歌在2020年提出的一个模型结构,其总体思想是使用Seq2Seq文本生成来解决所有的下游任务:例如,问题回答、摘要、分类、翻译、匹配、续写、指称消歧等。这种方式使所有任务都能共享相同的模型、相同的损失函数和相同的超参数。

T5的模型结构是基于多层Transformer的编码器-解码器结构。T5与其他模型的主要区别在于,GPT系列是一个只包含解码器结构的自回归语言模型(AutoRegressive LM),而BERT是一个只包含编码器的自编码语言模型(AutoEncoder LM)。

文字到文字框架的图示。每个任务都使用文本作为输入,训练模型生成一些目标文本。任务包括翻译(绿色)、语言可接受性(红色)、句子相似性(黄色)和文档摘要(蓝色)(来源)。

文字到文字框架的图示。每个任务都使用文本作为输入,训练模型生成一些目标文本。任务包括翻译(绿色)、语言可接受性(红色)、句子相似性(黄色)和文档摘要(蓝色)(来源)。

T5的预训练分为两部分,无监督和有监督。

无监督训练

无监督部分是与BERT类似的MLM方法,只不过BERT是遮蔽单个词,而T5是遮蔽一段连续的词,即文本范围。被遮蔽的文本范围只被一个遮蔽字符替换,即遮蔽的序列长度对后面的文本也是未知的。在解码器部分,只输出遮蔽的文本范围,其他的词被统一替换为设定的<extraid*>符号。这有三个优点,一是增加了预训练的难度,显然预测一个未知长度的连续文本范围比预测一个单词更难,这也使得训练的语言模型的文本表示能力更通用,更适应在质量较差的数据上的微调;二是对于生成任务来说,输出序列的长度是未知的,T5的预训练很好地解决了这个问题。这种在T5中使用的预训练任务也被称为CTR(Corrupted Text Reconstruction)。

有监督训练

有监督部分使用了GLUE和SuperGLUE中包含的四大类任务:机器翻译、问答、摘要、分类。Fine-tune的核心是将这些数据集和任务当作一个任务一起组合起来,为了实现这一点,设计了为每个任务添加不同的前缀,这些前缀与任务文本一起输入。例如,对于翻译任务,将英语的“That is good.”翻译成德语,那么输入“translate English to German: That is good. target: Das ist gut.”进行训练,然后输入“translate English to German: That is good. target:”,模型的输出预测“Das ist gut.”。其中“translate English to German:”是为这个翻译任务添加的前缀。

BART

BART代表双向和自回归变换器。这是Facebook在2020年提出的一种模型结构。顾名思义,这是一种结合了双向编码结构和自回归解码结构的模型结构。BART模型结构吸收了BERT中双向编码器和GPT中从左到右的解码器的特性,建立在标准Seq2Seq Transformer模型之上,这使得它比BERT更适合文本生成场景。同时,相比于GPT,它也拥有更多的双向上下文信息。

BART的预训练任务是在输入序列中随机mask一部分单词或者进行置换、删除等操作,然后使用原始序列去修复这些被损坏的序列。也就是说,BART的预训练目标是去复原原始的序列。这种预训练任务和T5的预训练任务十分相似,同样是使用Seq2Seq的形式进行预训练,只是BART是在输入端进行mask,而T5是在输出端进行mask。

Bart Model Architecture (Source)

BART的预训练任务采取的是在文本中恢复[噪声]的基本思想。BART使用以下具体的[噪声]:

  • 词元屏蔽:与BERT一样,随机选择一个词元替换为[MASK];
  • 词元删除:随机删除一个词元,模型必须判断哪个输入缺失;
  • 文本填充:类似于T5的方法,对一个文本范围进行屏蔽,并且每个文本范围被替换为一个[MASK]标签;
  • 句子置换:使用句号作为分隔符将输入划分为多个句子,并随机洗牌;
  • 文档旋转:随机且均匀地选择一个词元并在选定的词元周围旋转输入,选定的词元作为新的开始,这个任务训练模型识别文档的开始。

可以看出,相比于BERT或T5,BART在编码器侧尝试各种[噪声],其原因和目的也很简单:

  • BERT使用的简单替换导致编码器输入携带一些关于序列结构的信息(如序列长度),而在文本生成任务中,这些信息通常不提供给模型。
  • BART使用更多样的[噪声]集,意图摧毁这种关于序列结构的信息,防止模型“依赖”它。对于各种输入[噪声],BART在解码器侧使用统一的重构形式,即输出正确的原始句子。BART所使用的预训练任务也被称为FTR(全文重构)。

GPT

GPT代表生成式预训练。它是一个迭代的预训练模型,其主要成员包括第一代GPT,GPT-2,GPT-3,InstructGPT和目前流行的ChatGPT。我们一一介绍。

GPT-1

第一代GPT是OpenAI在2018年提出的预训练语言模型。它的诞生比BERT早,其核心思想是基于大量未注释数据进行生成式预训练学习,然后在特定任务上进行微调。因为它关注生成式预训练,所以GPT模型结构只使用了Transformer的解码器部分,其标准结构包括掩蔽多头注意力和编码器-解码器注意力。GPT的预训练任务是SLM(标准语言模型),根据前文(窗口)预测当前位置的词,所以需要保留Mask Multi-Head Attention,阻止词的后文信息,防止信息泄露。由于没有使用编码器,所以GPT结构中移除了编码器-解码器注意力。

GPT-2

第一代GPT的问题在于微调下游任务的迁移性差,微调层不共享。为了解决这个问题,OpenAI在2019年推出了GPT家族的新成员:GPT-2。

GPT2 Model (Source)

GPT-2的学习目标是使用无监督预训练模型来执行有监督任务。与第一代GPT相比,GPT-2有以下变化:

  • 模型结构移除了Fine-Tuning层,所有任务都通过为语言模型设计合理的语句进行预训练,训练需要确保每个任务的损失函数收敛;
  • Layer Normalization的位置移到了每个子块的输入,并在最后一个Self-Attention之后增加了一个Layer Normalization;
  • 采用了一种修改后的初始化方法,在初始化时,残差层的权重被缩放为1/√N倍,其中N是残差层的数量;
  • 扩大了词汇表的规模至50257,将输入上下文的大小从512扩大到1024,并在训练中使用了更大的batch_size。

GPT-2的多任务训练使其具有更强的泛化能力,当然,这也归功于其使用了多达40G的训练语料库。GPT-2最大的贡献是验证了使用大量数据和大量参数训练的模型有能力在不需要额外训练的情况下迁移到其他类别的任务。

GPT-3

在2020年,OpenAI基于GPT-2进一步推出了GPT-3。GPT-3的方法更简单粗暴,模型的整体结构和训练目标与GPT-2类似,但GPT-3将模型大小增至1750亿个参数(比GPT-2大115倍),并使用45TB的数据进行训练。得益于惊人的参数数量,GPT-3可以在不进行梯度更新的情况下,通过零样本和少数样本进行学习和预测。

InstructGPT

超大型模型GPT-3在生成任务上的确取得了前所未有的成果,尤其在零样本和少数样本的场景下,但GPT-3面临了一个新的挑战:模型的输出并不总是有用的,可能会输出不真实、有害或反映负面情绪的结果。这种现象是可以理解的,因为预训练任务是语言模型,预训练的目标是在输入限制下最大化输出为自然语言的可能性,而没有“用户需求安全和有用性”的要求。为了解决这个问题,2022年OpenAI基于GPT-3发表了重要的研究:InstructGPT,介绍了来自人类反馈的强化学习(RLHF)的技术。

Instruct GPT Process (Source)

InstructGPT在模型本身上与GPT-3并没有太大变化,主要的变化在于训练策略。其总体思路是让注解员为呼叫示例提供示范答案,然后用这些数据对模型进行微调,使其能够做出更合适的回应。其训练步骤分为三步:

  1. 收集示范数据,并使用监督训练训练模型。对提示数据集的一部分进行人工注释,并用于Fine-Tuning GPT-3。
  2. 收集对比数据,并训练奖励模型。对一批数据进行采样,并将其输入到第1步微调的模型中。注解员根据其优点对模型的输出进行排名,并使用这些数据训练奖励模型。
  3. 使用强化学习优化模型的输出。使用第2步获得的奖励模型,通过强化学习优化第1步微调的模型的输出,使模型能够输出更合适的回应。

得到的InstructGPT在遵循指示方面比GPT-3要好得多,同时InstructGPT也不太可能凭空捏造事实,在产生有害输出方面有小幅下降趋势。

ChatGPT

ChatGPT是OpenAI于2022年11月30日正式发布的最新研究,使用了与InstructGPT相同的方法,利用来自人类反馈的强化学习(RLHF)来训练模型,在数据收集方法上有所改进(未具体公开)。

ChatGPT in Action (Source)

可以看出,ChatGPT的训练过程与InstructGPT的训练过程是一致的,区别在于InstructGPT在GPT-3上进行微调,而ChatGPT在GPT-3.5上进行微调(GPT-3.5是OpenAI在2021年第四季度训练的一个模型,具有强大的自动编写代码的能力)。

从第一代GPT到ChatGPT的整个发展过程中,OpenAI已经证明,使用超大数据来训练超大模型,所得到的预训练语言模型足以处理各种自然语言理解和自然语言生成的下游任务,甚至不需要微调,也能够处理零/少样本任务。在输出的安全性和可控性方面,OpenAI的答案是基于人工强化学习:雇用40名全职注解员工作近两年(注解时间未正式公开,作者只是从GPT-3和ChatGPT之间大约两年半的间隔推断,因为强化学习需要持续迭代)为模型的输出提供注解反馈,只有这样的数据才能进行强化学习,指导模型的优化。Transformer + 超大数据 + 超大模型 + 大量人力 + 强化学习创造了今天的ChatGPT现象。

译自:https://www.dtonomy.com/how-does-chatgpt-work/

发布者:AIGC博客派,未经授权,禁止转载,经授权后转载需请注明出处:https://blog.yredu.xyz/archives/5100

(23)
上一篇 2023年5月29日 下午2:28
下一篇 2023年6月9日 下午2:42

相关推荐

发表回复

登录后才能评论

联系我们

(010)82964070

在线咨询: QQ交谈

邮件:yuanrang@cldy.org

电话:15313090019

工作时间:周一至周日,9:30-18:30

关注专属客服
「提升生产力10倍?关注「元壤教育」公众号,系统学习 AIGC 提示工程课程。」