独家 | 大语言模型教程

59025b260f3920960aa4bc1de0c11b1d.png

作者:Haifeng Li翻译:陈之炎校对:王晓颖

本文约6300字,建议阅读12分钟
我们将在本文中深入探究 LLMs 工作原理。

诸如ChatGPT等生成式人工智能(GenAI)已万众瞩目,基于Transformer的大型语言模型(LLMs)在大量未标记数据上进行训练,可以泛化到诸多不同类型的任务。为了更好地理解LLMs如此强大的真实原因,我们将在本博中深入探究它们的工作原理。

f8b1085500a5551e22ef622c9731c672.png 

04e87e7b7926cdb335e966defafd3ca4.png

LLM演进树

形式上,一个仅有解码器的语言模型只是一个条件分布p(xi|x1···xi−1),在已知上下文为x1····xi−1 的情境下,下一个标记xi的概率。该公式假定这一过程为马尔可夫过程,已在许多用例中进行了研究。这一简单的设置使我们能够以自回归的方式逐个生成标记。

在深入研究之前,首先应指明这一公式在理解人工通用智能(AGI)上的局限性:思考是一个非线性的过程,但我们的沟通设备——嘴。只能线性地说话。为此,语言以一种由单词组成的线性序列的形式呈现,这是用马尔可夫过程建模语言的一个合理开始。但我还是对这一表述是否可以完全捕捉到思维过程(或AGI)表示怀疑。另一方面,思维和语言是相互关联的,正如GPT4所呈现的那样,一个足够强大的语言模型仍然可以表现出某种思维能力。在接下来的内容中,让我们来探索如何使大语言模型(LLM)智能化的科学创举。

Transformer

有很多方法来建模/表示这个条件分布p(xi|x1···xi−1)。在LLM中,用一个称为Transformer的神经网络架构来估计这个条件分布。实际上,在Transformer出现之前,神经网络,特别是各种递归神经网络(RNNs)已经广泛应用于语言建模。RNN按顺序处理标记,维护一种包含当前标记之前的数据表示的状态向量。为了处理第n个标记,模型将从句子一开始到标记n-1的句子状态与新标记的信息组合到一起,创建一个新的状态,来表示从句子开始到标记n的一整条句子。理论上,如果每一点的状态均包含标记的上下文信息,那么来自标记的信息就可以肆意地传播到序列中任意远的位置。然而,梯度消失问题会使模型在长句子的末尾缺乏关于前面标记的精确的、可提取的信息。标记计算依赖于先前标记计算的结果,这也导致在现代GPU硬件上难以并行计算。

这些问题通过Transformer中的自注意力机制得以解决。Transformer完全依赖于注意力机制来绘制输入和输出之间的全局依赖关系,避免了重复的出现。注意力层可以访问所有以前的状态,并根据学习到的相关性度量来衡量它们,提供远程标记的相关信息。更为重要的是,Transformer使用一种无RNN的注意力机制,同时处理所有的标记,并在连续的层中计算它们之间的注意力权重。由于注意力机制只使用了来自较低层的其他标记信息,它可以并行计算所有标记,从而提高了训练速度。

8caf6593b447671864163b354970b951.png 

575c4b5e62fb6837f0aabdd3ea62a19c.png

通过字节对编码器(byte pair tokenizer)将输入文本解析为标记,并将标记转换为嵌入向量,然后,在嵌入过程中添加标记的位置信息。Transformer构建块为可缩放的点积注意力单元,当一个句子被传递给Transformer模型时,模型同步计算出各标记之间的注意力权重。注意力单元为上下文中各标记生成的嵌入,其中既包含了标记自身的信息,又包含其他相关标记的注意力权重的加权组合。

对于每个注意力单元,Transformer模型学习三个权重矩阵:查询权重WQ,键值权重WK和数值权重WV。对于每个标记i,输入字嵌入与三个权重矩阵中的每个元素相乘,生成一个查询向量qi、一个键值向量ki和一个数值向量vi。注意力权重是qi和kj之间的点积,乘以键值向量维数的平方根,并通过softmax进行归一化。标记i的注意力单元输出是所有标记数值向量的加权和,由从标记i到每个标记j的注意力进行加权。所有标记的注意力计算均可表示成一个大型的矩阵运算:

aa3a029e713bec5a4198304739bcb83d.png 

edd03c9029e64c7bd7b89a54f6bfd1ad.png

一组(WQ、WK、WV)矩阵称为注意力头,每一层Transformer都有多个注意力头。通过使用多个注意力头,模型可以计算出标记间不同的相关性。多个注意力头的计算可以并行执行,输出通过一个WO矩阵连接并投影成与输入相同的维度。

编码器端,在自注意力机制之后有一个全连接的多层感知器(MLP)。MLP块对每个输出编码做进一步单独处理。在编码器-解码器设置中(例如用于翻译),在自注意力和MLP之间会插入一个额外的注意力机制,以便从编码器生成的编码中提取出相关信息。在仅解码器的架构中,没有必要这样做。无论是编码器-解码器架构还是仅解码器架构,解码器都无法使用当前或未来的输出来预测输出,因此必须部分屏蔽输出信息,以截断反向信息流,从而实现自回归文本生成。为了逐个生成标记,最后一个解码器后面是一个softmax层,用于生成整个词汇表上的各种输出概率。


带监督的微调

仅解码器的GPT本质上是一种无监督(或自监督)的预训练算法,以最大限度地提高以下函数的似然度:

48b59b494f0d89619d350738bbf65215.png 

506d792deecd614a5b6d63bbcabe380a.png

其中,k是上下文窗口的大小。虽然该架构与任务无关,但GPT表明,通过在不同的未标记文本语料库上进行语言模型的生成式预训练,然后对每个特定任务进行语料性微调,可以实现在自然语言推理、问题回答、语义相似性和文本分类等多种任务上的显著提升。

利用上述目标函数对模型进行预训练后,可以在带监督的目标任务中使用上述参数。给定一个已标记的数据集C,其中每个实例包含一个输入标记序列,x1,……,xm和一个标签y。将其输入到预训练好的模型中,以获得最终Transformer块的激活hlm,然后将其输入到一个参数为Wy的线性输出层来预测y:

1ef1e9021bb8326475666bb8041e4e4f.png 

2a97394324157f51abe15cbcd9d2c87d.png

相应地,有下述目标函数:

03068eca8420cd491e8887c33843d461.png 

d55736df45e77e52440a4d44582cb17b.png

此外,将语言建模作为辅助目标是有益的,因为它改进了监督模型的泛化,加速了收敛。也就是说,优化了以下目标:

7ebfd5304b95a28e5aec41cd4c062d62.png 

c159560d19edaaaa5a0e0969daceaf31.png

文本分类可以直接按照如上所述进行微调。其他任务,如问题回答或文本蕴涵,都有结构化的输入,如有序的句子对,或三组文档、问题和答案。由于预训练好的模型是在连续的文本序列上进行训练的,为此需要进行一些修改才能应用于这些任务。

3658475cb99a016e0c1bb87150f9577e.png 

98de290879aad4798a3c2a7ca1dd0400.png

文本蕴涵(Textual entailment):将前提p和假设h标记序列连接起来,中间有一个分隔符标记($)。

相似性(Similarity):被比较的两个句子没有固有的排序。因此,输入序列包含两种可能的句子顺序(中间有一个分隔符),并独立处理每个序列以生成两个序列表示。这两个序列表示通过按元素相加后输入到线性输出层中。

问答(Question Answering)和常识性推理(Commonsense Reasoning):每个样本都有一个上下文文档z、一个问题q和一组可能的答案{ak}。GPT将文档上下文和问题与每个可能的答案连接起来,在中间添加一个分隔符标记以获取序列[z;q;$;ak]。每个序列都被独立处理,然后通过一个softmax层进行归一化,以生成一个可能答案的输出分布。

零样本转换(即元学习)

虽然GPT表明在特定任务的数据集上进行监督微调效果良好,但如果期望在特定任务上实现更为强大的性能,通常还需要对该特定任务的数千到数十万个示例数据集进行微调。有趣的是,GPT2证明了语言模型在没有任何明确带监督的情况下可以学习多个任务,这是通过依赖文档加上问题(又名提示)来实现的。

学习执行单个任务可以在概率框架中表示为估计一个条件分布p(输出|输入)。由于一个通用系统应该能够执行多个不同的任务,即便是对相同的输入,它也应该不仅仅依赖输入,还应该依赖要执行的任务。也就是说,它应该建模为p(输出|输入,任务)。先前的任务条件反射通常是在架构级别或算法级别上实现的。但是语言模型提供了一种灵活的方式来将任务、输入和输出指定为符号序列。例如,一个翻译训练示例可以写成序列(翻译成法语,英语文本,法语文本)。特别地,GPT2是基于一个带格式的“英语句子=法语句子”上下文对,然后在英语句子=从贪婪解码的模型中采样,并使用第一个生成的句子作为翻译。

类似地,为了做归纳摘要,GPT2在文章末尾添加了文本TL;DR,并用k = 2 Top-k随机抽样生成100个标记,从而减少了重复,输出比贪婪解码更抽象的摘要。同样,训练阅读理解的例子可以写成(回答问题,文档,问题,回答)。

注意,零样本转换不同于下一节中的零样本学习。在零样本转换中,“零样本”指的是不执行梯度更新,但它通常涉及到为模型提供推理时的演示(例如上述翻译例子),因此并不是真正从零个样本中学习。

我发现这种元学习方法与蒙塔古语义(Montague semantics)之间存在着一种有趣的关联,它是一种自然语言语义理论及其与句法关系的理论。1970年,蒙塔古(Montague)阐述了他的观点:

在我看来,自然语言和逻辑学家的人造语言之间没有重要的理论区别;事实上,我认为完全有可能用一个的自然且数学上精确的理论来理解两种语言的语法和语义。

从哲学的角度来讲,零样本转换和蒙塔古语义都将自然语言当作编程语言,LLM通过在黑盒方法中嵌入向量来捕获任务。但它到底是如何工作的,尚不十分清楚。相比之下,蒙塔古语义学最重要的特征是它坚持组合性的原则——也就是说,整体的意义是其各部分的含义及其句法组合模式的函数,这可能成为改进LLM的一种方法。


上下文学习

GPT3表明,扩大语言模型的规模可以大大提高了与任务无关的、少样本性能。GPT3进一步将其专业化描述为“零样本”,“单样本”,或“少样本”,它取决于在推理时间里能提供多少次演示:(a)“少样本学习”,或上下文学习,允许在模型的上下文窗口(通常10到100)中提供尽可能多的演示,(b)“单样本学习”,只允许在模型的上下文窗口(通常10到100)中提供一个演示,和©“零样本”学习,不允许在模型的上下文窗口(通常10到100)中提供演示,只允许向模型提供一个自然语言指令。

1e13f18f5354e9466ad252da467c9f5e.png 

4e678db0c09405181f280e902cc428d7.png

对于少样本学习,GPT3从训练集中随机抽取K个样本作为条件来评估数据集中的每个示例,根据任务的不同用1或2个换行符将样本分隔开来。K可以是从0到模型上下文窗口所允许的最大值内的任何值,对于所有模型来说,上下文窗口的大小为nctx = 2048,通常可容纳10到100个示例。通常K的取值往越打越大,但也并不总是如此。

对于某些特定任务,GPT3除了(或K = 0)用于演示之外,还使用了自然语言提示,从多个选项(多项选择)中选取一个正确答案以完成任务,提示包括K个上下文示例加上正确完成的示例,后随一个仅包含上下文示例的示例,模评估过程比较每个完成的模型似然度。

对于涉及二进制分类的任务,GPT3给出了更有语义意义的选项名称(例如,“True”或“False”,而不是0或1),然后将任务当作多项选择题。

在涉及自由形式完成的任务中,GPT3使用了波束搜索。评估过程使用F1相似度评分、BLEU或精确匹配对模型进行评分,这取决于手头数据集的不同标准。

模型大小问题

语言模型的容量对于任务无关学习的成功至关重要,提高模型容量大小可以以对数线性方式提高跨任务性能。GPT-2是在GPT-1的基础上直接扩展生成的,其参数数目和数据集大小都增加了10倍。它可以在零样本转换设置下执行下游任务——无需任何参数或架构修改。

GPT3使用与GPT2相同的模型和架构,唯一区别是在Transformer层中使用了交替稠密(alternating dense)和局部带状稀疏注意力(locally banded sparse attention)模式。

beee266bd81ae3642a9ac19a74fb654e.png 

06de049faed566d11f50d5b970618ec7.png

 模型大小

在TriviaQA上,GPT3的性能随着模型大小的增长而平稳增长,它表明语言模型会随着其容量的增加而吸收更多的知识。单样本和少样本的表现比零样本的性能有更加显著的提高。

198c4552b192182ae9d031d9d3438899.png 

5139f7ce352d579c52b474d601f8b244.png

 数据质量问题

虽然对此讨论得不多,但数据质量也同样重要。语言模型的数据集大小已经迅速扩大,例如CommonCrawl 数据集中包含了近1万亿个单词,在无需对同一序列更新两次的情况下,用它足以训练最大的模型。然而,研究发现,未经过滤或轻过滤的CommonCrawl数据集的质量往往不如更加精选的数据集。

为此,GPT2创建了一个新的网络爬取,通过爬取Reddit上所有至少有3个Karma的出站链接,以提高文档质量,作为启发式指标,展示其他用户是否对该链接真感兴趣,还是只是为了好玩。经过重复数据删除和一些基于启发式的清理后,最终的数据集包含了略多于800万份的文档,总共有40 GB的文本。

此外,GPT3采取3个步骤来提高数据集的平均质量:(1)基于与一系列高质量参考语料库的相似性对CommonCrawl进行筛选,(2)在文档级别内部和跨数据集进行模糊去重,防止冗余数据集,并保留验证集的完整性作为一个准确的过拟合,(3)添加已知的高质量参考语料库进行混合训练,以增加CommonCrawl的多样性。

类似地,GLaM开发了一个文本质量分类器,从规模较大的原始语料库中生成高质量的web语料库,该分类器经过训练可以对一组精选的文本(维基百科、书籍和一些选定的网站)和其他网页进行分类。GLaM使用这个分类器来估计网页内容的质量,然后使用Pareto 分布来对网页进行抽样,为了防止分类器中的系统性偏差,它允许包含一些较低质量的网页。

2ed107a0cf09880653fec91dbcd3b93b.png 

44c17b415cb6944dc5eef3aa46c7e7c6.png

GLaM训练集中的数据和综合权值

GLaM还为较小模型中每个数据设置了综合权值,以防止像维基百科这样的小数据源被过度采样。

思维链

正如前文所述,不同思维过程对下一个标记的预测结果是不一样的。有趣的是,可以通过思维链的提示来解锁LLM的推理和算术能力。思维链是推导出最终输出结果过程中的一系列中间自然语言推理步骤。如果在示例中提供了思维链推理的演示,那么利用足够大的语言模型就可以生成思维链:输入、思维链、输出。但对它的具体工作原理还不是十分清楚。

2a9f820159dc584a11614945b6d92a9f.png 

32b61a0210155de1fe4894f135517882.png

来自人工反馈的强化学习(RLHF)

用LLM建模的目标是预测下一个标记,这有悖于“有益并安全地遵循用户说明”的目标,所以说语言建模的目标不一致。

InstructGPT 通过使用来自人类反馈的强化学习(RLHF)对语言模型进行微调,实现语言模型与用户在通用任务上的意图一致。这种技术利用人类的偏好作为奖励信号来微调模型。

第1步:收集演示数据,并训练一个监督策略。标签器根据输入提示符的分布来提供所需行为的演示,然后使用监督学习在这些数据上对GPT3模型进行微调。

第二步:收集比较数据,并训练一个奖励模型。收集模型输出之间的比较数据集,标记出给定输入的偏好输出。然后训练一个奖励模型来预测人类首选的输出。

步骤3:使用PPO针对奖励模型进行策略优化。使用RM的输出作为标量奖励,使用PPO算法微调监督策略以优化奖励。

步骤2和步骤3可以连续迭代;根据当前的最佳策略收集更多的比较数据,用于训练一个新的RM,然后再训练出一个新的策略。

fcf314f9f9a7de6dcf618cac762950f0.png 

99621dcafa4a2fb23cf2a6f81e8af9ae.png

指令微调

GPT-1中引入的带监督的微调侧重于特定任务的调整,而T5则是采用最大似然目标(使用“教师强制”)进行训练,不管是什么任务。从本质上说,T5利用了与零样本转换(zero-shot transfer)相同的理念,即可以通过自然语言指令来描述NLP任务,比如“这部电影评论的情绪是积极的还是消极的?” 或者 “把‘你好吗’翻译成中文”。为了指定模型应该执行哪个任务,T5在输入原始输入序列之前,将一个与任务相关的(文本)前缀添加给模型。此外,FLAN还探索了指令的微调,特别关注(1)扩展任务的数量,(2)扩展模型的大小,以及(3)对思维链数据进行微调。

对于数据集来说,FLAN手动组成了10个独特的模板,它们使用自然语言指令来描述该数据集的任务。虽然大多数模板对原始任务进行了描述,但FLAN还包括多三个“扭转任务”的模板(例如,对于情感分类,包括要求生成电影评论的模板),以便丰富模板的多样性。然后,我们将所有数据集进行混合,微调为一个预训练语言模型,根据随机选择的指令模板对各个数据集中的示例进行格式化。

aa783663896594b4bb10f18ca3dbc2a9.png

5b0a4041ea6161f1454012849f430c07.png 

所谓的提示工程本质上是一种逆向工程,即如何为指令微调和上下文学习准备训练数据。

检索增强生成(RAG)

出于成本和时间的原因,使用LLM在训练数据的新鲜度方面往往滞后。为了解决这个问题,可以以检索增强生成(RAG)的方式使用LLM。在该示例中,我们不希望LLM仅仅根据它所训练的数据来生成文本,而是希望它以某种方式融入其他外部数据。使用RAG,LLM还可以回答(私密的)特定领域的问题。因此,RAG又可称为“开放式书籍”问答。LLM + RAG可以是经典搜索引擎的替代品。换句话说,它具备带有幻觉的信息检索的功能。

目前,RAG的检索部分通常是在包含外部文本数据的向量嵌入数据库上实现k-最近邻(相似度)搜索。例如,DPR将编码器训练定义为一个度量学习问题。但是,值得注意的是,信息检索通常是基于相关性的,这有别于相似度。预计今后在这一领域将会有更多的改进。

结论

LLM是一个令人兴奋的领域,必将经历快速的创新。希望这篇文章能助力了解它的工作原理。除了兴奋之外,还应该注意到,LLM学习语言的方式有别于人类——他们缺乏人类语言学习者用来推断语言和说话者心理状态之间关系的社交和感知情景,并以一种不同于人类思维过程的方式接受训练,这可能是改进LLM或发明新的学习算法范式的领域。

编辑:于腾凯

校对:林亦霖

译者简介

3f0c38de0963d5106917771747b27cde.jpeg

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

b45efc98d58ae2c635335f966aa92e84.png

点击“阅读原文”拥抱组织

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值