最近在学习AI大语言模型的相关知识、原理和应用,感兴趣的小伙伴们可以关注公众号后续文章笔记更新。
一、什么是大型语言模型(LLMs)?
当谈及当下火热的 AI 大型语言模型时,我们其实是在说一种神奇的软件,它能够以和我们一样自然的语言方式“交流”。这些隐藏在计算机里的家伙真的很厉害——时常让我们感觉像魔法,它们不仅能以酷似人类语言的方式开口说话,而且能在对话中理解上下文语境,产出仿佛是来自真实人类的回应。
这些语言模型通过啃下大量文本数据,学到了人类语言使用的种种套路。它们犹如语言大师,凭借学到的一套又一套技巧,写出的文本几乎难以分辨是机器还是真人的杰作。
现在越来越多的大语言模型已经逐渐进入我们的生活,如果你曾和虚拟助手开怼,或者跟人工智能客服小姐姐谈心,其实你已经和这帮AI大语言模型互动过了!这些AI大模型应用广泛,从聊天机器人到语言、网页翻译再到创意写作等领域都有它们的身影。
目前最炫酷的AI大语言模型还得数OpenAI出品的。比如,他们的GPT-3模型拥有1750亿个参数,而GPT-4大型多模态模型(接受图像和文本输入,发出文本输出)据说拥有至少1.8万亿个参数,虽然在许多现实世界场景中的能力还不如人类,但在各种专业和学术基准上已经呈现出达到或超越人类硕士研究生水平的表现。可以进行摘要总结生成、回答问题,甚至搞点创作任务!如果你对这种模型到底有多牛还不敢确定,我劝你一定要亲自试试ChatGPT,绝对会让你大开眼界!
从计算机科学角度来说,计算机大型语言模型(Large Language Models,LLMs)是一类利用 Transformer 架构的深度神经网络计算机人工智能语言模型,它们在自然语言处理领域中取得了显著的成就。这种模型被设计用于处理和理解人类自然语言,其核心是 Transformer 深度神经网络结构。
二、大型语言模型(LLMs)有哪些的关键点?
Transformer架构: LLMs基于的Transformer架构是一种深度神经网络架构,于2017年由Vaswani等人在他们的论文“Attention is All You Need”中首次提出。自那以后,它已成为大型语言模型(如BERT和GPT)最常用的架构。Transformer架构使用注意力机制来解析输入的序列,例如句子或段落,专门用于自然语言处理(NLP)应用。与传统的循环神经网络(RNN)不同,Transformer引入的自注意力机制允许模型在处理输入序列时,同时考虑序列中的所有位置,从而在捕捉长距离依赖性和建模上下文信息方面取得了显著的进展。
自监督学习: LLMs通常通过自监督学习的方式进行预训练。在这一阶段,模型在大规模文本数据上进行预训练,通过预测缺失的部分、下一个词或其他自动生成任务来学习语言表示。这使得模型能够学到通用的语言表示,包括词汇知识和上下文理解。
大规模参数: LLMs拥有庞大的模型参数量,通常包含数十亿甚至数百上千亿个参数。这种大规模的参数化使得模型能够存储大量的语言知识,从而提高模型在多样的语言任务上的性能。
微调与迁移学习: 预训练完成后,LLMs通常通过微调或迁移学习来适应特定任务。微调是指在小规模标记数据上对模型进行有监督的调整,以适应特定的任务,而迁移学习则是将预训练的通用语言知识迁移到相关任务上。
多用途应用: 由于其在语言建模中的出色性能,LLMs在多用途自然语言处理任务上取得了显著的成功,包括文本生成、语义理解、命名实体识别、机器翻译等。
总体而言,大型语言模型以Transformer架构为基础,通过自监督学习在大规模文本数据上进行预训练,然后通过微调或迁移学习适应各种自然语言处理任务。它们的出现对于自然语言处理领域的发展具有重要意义,推动了多领域的研究和应用。
三、从 Transformer 模型到大型语言模型
人类对文本的理解往往基于单词、句子和段落的层次结构,将其视为有层次关系的语言组成部分。句子由单词组成,文档则是由章节、段落和句子构成的层次结构。这种逐层解析的方式使得人类能够更好地把握文本的语境和语义。
3.1 Transformer 模型之前的尝试
然而,对于计算机而言,文本只是字符的线性序列。传统的基于规则的自然语言处理系统难以有效地捕捉文本的层次结构和复杂语义。为了使机器更好地理解文本,近年来出现了基于循环神经网络(RNN)等模型的尝试。
循环神经网络(RNN)是一类能够处理序列数据并具有短期记忆能力的神经网络,它按顺序逐个处理输入序列的单词或字符,并在整个文本被处理完后生成输出。其内部结构允许信息在网络中传递并捕捉序列中的依赖关系。通过RNN,计算机能够逐步处理文本中的字符,逐渐建立单词、句子和段落之间的关系。尽管RNN在某些任务上表现良好,但它存在一个被称为“长时依赖”问题的挑战。
这个问题主要体现在当需要处理的文本序列变得很长时(比如一篇文章或者一篇论文),RNN的记忆会逐渐衰减,导致模型在处理长距离依赖关系时表现不佳。具体来说,RNN有时会在到达序列末尾时“忘记”序列开头发生的重要事件,因为在信息传递的过程中,梯度可能逐渐消失或爆炸,导致模型难以有效地捕捉长期记忆,有时会在处理到达文本序列末尾时“忘记”序列开头发生的事情。
这种“忘记”的问题限制了RNN在处理长序列文本时的能力,尤其在自然语言处理等任务中,保持对于长序列文本的记忆对于理解文本的整体语境和语义关系是至关重要的。为了克服这一问题,后来的模型,如长短时记忆网络(LSTM)和门控循环单元(GRU),引入了更复杂的结构来改善模型对长期依赖关系的记忆能力。
然而,随着Transformer模型的引入和兴起,特别是通过自注意力机制的改进,计算机能够更好地捕捉文本中的长距离依赖关系,而无需逐步处理。这种架构的模型,如GPT系列,通过大规模预训练学到了文本中的语法和语义模式,提高了计算机在理解和生成文本方面的能力。从字符序列到更高层次的语言结构,这一演进使得计算机在文本处理方面取得了巨大的进步。
3.2 Transformer 模型的提出
身处人工智能浪潮之中,我们再次回顾引发人工智能革命的那个瞬间,不难发现,这一革命性的进展如同科学发现中的诸多突破一样,是在特定的天时、地利、人和相互交融的背景下才得以实现的。
首先,天时方面,计算能力的飞速提升为人工智能的发展提供了有力支持。随着硬件技术的不断进步,特别是图形处理单元(GPU)等硬件的广泛应用,计算机能够更快速地进行大规模的并行计算,为复杂的神经网络模型提供了实施的基础。
其次,地利方面,大规模数据的可用性和存储能力的提升为机器学习的训练提供了充足的资源。互联网的普及使得海量的文本、图像和视频等数据变得可获取,这为深度学习模型的训练提供了巨大的样本空间,使得模型能够更好地学习和泛化。
最后,人和方面,科学家、工程师和研究者们的集体智慧和努力推动了人工智能领域的突破。研究者们在算法和模型设计上的创新,特别是Transformer模型的提出,引领了人工智能的新时代。同时,开源文化的推动也使得研究成果更加开放共享,促进了合作和知识传播。
在这个特殊的历史节点上,天时地利人和的完美结合推动了人工智能的爆发性增长。这一革命性的进展不仅改变了我们对计算机智能的认识,也深刻影响着我们生活的方方面面。在这个新的时代,人工智能正成为科技创新和社会发展的关键引擎。
2017年初,谷歌研究科学家Ashish Vaswani和Jakob Uszkoreit在谷歌园区中讨论如何改进机器翻译的新想法,引发了人工智能领域的一场革命。与此同时,Illia Polosukhin和他的团队正在研究自我注意力的概念,旨在让机器能够全局理解整个句子,而不是逐个单词翻译,从而提升计算机对语言的理解能力。
在这个过程中,Noam Shazeer无意中听到了他们的讨论。Shazeer曾协助构建谷歌搜索的拼写检查功能,并在人工智能领域做出了多项创新工作。对于现有的语言生成方法感到失望的他,在听到自我注意力这个想法后决定加入,并与团队共同努力。
这次偶然的谈话催生了一个八人团队,经过数月的合作,他们提出了一种新的处理语言的架构——Transformer。于2017年发布的论文《Attention Is All You Need》详细描述了这一架构的理念和实现。
这一新架构的发布开启了生成式人工智能的新时代。今天,绝大多数人工智能应用都以Transformer为基础架构,包括谷歌搜索和翻译等,同时也是众多大语言模型如ChatGPT和Bard的基石。这个团队的协作成果深刻地改变了人工智能领域的发展方向,为自然语言处理和理解带来了巨大的进步。。
在使用Transformer模型处理文本输入时,首先需要将输入的原始文本标记为单词序列。标记化后的单词序列随后被编码为数字,并被转换为嵌入,这些嵌入是标记的向量空间表示,保留了其含义。这一步骤被称为嵌入层,它将每个单词映射到一个高维向量空间中的点。
接下来,Transformer模型中的编码器负责将所有标记的嵌入转换为上下文向量。这是通过自注意力机制实现的,使得模型能够根据输入文本中的每个单词来调整其关注权重。这样一来,模型在处理整个句子时能够同时关注到重要的信息,有效捕捉上下文的语义关系。
3.3 文本字符串的标记化和向量嵌入
下面举个例子来说明对一个文本字符串进行标记化和向量嵌入的过程。
假设我们有以下文本字符串:
原始文本:
"自然语言处理是计算机科学和人工智能领域的一个重要研究方向。"
标记化(Tokenization):
在标记化过程中,将文本分割为单独的词汇单元,通常是单词。
["自然", "语言", "处理", "是", "计算机科学", "和", "人工智能", "领域", "的", "一个", "重要", "研究", "方向", "。"]
向量嵌入(Vector Embedding):
向量嵌入 (vector embeddings) 是一种将单词、句子和其他数据转换为捕获其含义和相互之间关系的数学方法。 它们将不同的数据类型表示为多维向量空间中的点,其中相似的数据点更紧密地聚集在一起。 这些数字表示可以帮助计算机更有效地理解和处理这些数据。
当我们将现实世界的对象和概念表示为向量嵌入时,这些向量在空间中的相对位置反映了它们之间的语义关系。换句话说,语义相似的对象在向量空间中会更加靠近,而语义上不相似的对象则可能远离彼此。
以自然语言处理为例,通过词嵌入技术(如Word2Vec、GloVe等),每个单词都会被映射为一个向量空间中的点。这样,具有相似语义的词在向量空间中距离较近,例如,“猫”和“狗”在向量空间中可能更接近,而与“飞机”之类的词可能距离较远。
这里我们使用一个简单的示例,假设每个单词被嵌入为一个3维的向量(实际上,通常会使用更高维度的向量):
{
"自然": [0.2, 0.5, -0.3],
"语言": [-0.1, 0.8, 0.2],
"处理": [0.6, -0.4, 0.7],
"是": [0.9, 0.1, -0.5],
"计算机科学": [0.4, 0.6, -0.2],
"和": [0.7, 0.3, 0.9],
"人工智能": [-0.3, 0.7, -0.8],
"领域": [-0.5, -0.2, 0.4],
"的": [0.1, -0.9, 0.5],
"一个": [-0.6, 0.4, 0.1],
"重要": [0.8, -0.7, 0.3],
"研究": [0.2, 0.2, -0.6],
"方向": [-0.4, 0.5, 0.6],
"。": [0.3, -0.1, -0.4]
}
这样,原始文本中的每个单词都被映射为对应的向量。整个文本字符串也可以表示为由这些向量组成的矩阵。这个向量表示有助于计算机更好地理解文本,并在自然语言处理任务中进行进一步的分析和处理。需要注意的是,上述向量是为了演示目的而简化的,实际应用中使用的向量通常具有数百个维度。
上下文向量在Transformer模型中起着关键的作用,它代表了整个输入序列的本质。 在自然语言处理任务中,Transformer解码器使用上下文向量来生成输出,实现了一种被称为自回归生成的过程。
具体而言,使用Transformer的解码器时,可以将原始输入作为线索(context),并让解码器生成自然跟随的后续单词。然后,可以将先前生成的下一个单词作为新的线索,继续生成下一个单词,这个过程可以重复多次,从而创建整个段落。这种生成过程被称为自回归生成,它是大型语言模型的工作原理之一。
在大型语言模型中,这样的模型是基于Transformer结构的,它可以接受很长的输入文本。这意味着上下文向量非常大,包含了输入文本的丰富信息。Transformer模型的编码器和解码器包含多个层,这些层允许模型在处理非常复杂的概念时保持灵活性。
通过使用自回归生成,大型语言模型可以利用上下文中的信息来生成具有上下文一致性的连贯文本。这种模型在各种自然语言处理任务中表现出色,例如文本生成、翻译、摘要生成等。其能力在很大程度上归功于Transformer模型的结构,使其能够更好地理解和利用长文本中的语义信息。
由于Transformer的卓越性能,许多最先进的语言处理模型都是基于它构建的。这种模型的成功推动了自然语言处理领域的发展,为各种文本相关任务提供了更强大和高效的解决方案。
四、为什么 Transformer 模型可以预测文本?
在OpenAI 创始人之一、传奇AI科学家安德烈·卡帕西(Andrej Karpathy)的博客文章“循环神经网络的不合理有效性”中,他阐述了循环神经网络(RNN)在文本预测任务中的显著效能。这反映了人类使用的自然语言中存在一定的语法规则和冗余性,这对于机器学习模型在生成文本方面的成功至关重要。
而来自信息论之父,美国著名数学家、发明家、密码学家克劳德·香农(Claude Shannon)的论文“印刷英语的预测和熵”则从信息编码的数学原理层面提供了更深层次的理论支持。论文中提到,尽管英语拥有27个字母(包括空格),但每个字母的熵(信息量)仅为2.1位。这意味着在人类语言中,某些字母或单词的出现是相对可预测的,就像在一场文字游戏中,知道字母“e”出现的频率较高。这种可预测性为机器学习模型提供了优势,使其能够做到更有效地预测文本中的下一个元素。
接着,让我们深入了解Transformer模型的原理。Transformer使用自注意力机制,这意味着模型可以在生成每个单词时关注先前生成的所有单词。这使得模型能够更好地捕捉长距离依赖性,比如在一个句子中使用的名词和动词之间的关系。
举例来说,考虑以下句子: “The cat is on the mat.” 在生成单词"mat"时,Transformer模型可以自动注意到"mat"与前面提到的"cat"之间的语义关系,因此更有可能正确生成接下来的单词。
**Transformer模型所看到的语法可以理解为对单词在语言中使用方式的一种抽象表示。**语法涉及将单词分类为不同的词类,确定它们在句子中的特定顺序,以及构建句子的结构和规则。
在Transformer模型中,这种语法信息并不是以传统的语法规则形式显式存储和人为规定的,而是通过模型的参数进行学习。具体来说,通过大量的训练数据,模型学习了在不同上下文中单词之间的关联性,以及它们在句子中的位置和作用。这种学习过程是通过自注意力机制和多头注意力机制等结构实现的。
模型通过观察大量的语言示例,如句子和段落,逐渐学会了语法规则,例如主语和谓语的搭配、词类的用法等。通过这种方式,模型能够隐式地捕捉到语言的结构和模式,而无需事先规定特定的语法规则。
这种灵活性使得Transformer模型能够适应不同类型和风格的语言表达,从而在各种自然语言处理任务中表现出色。当然这也需要Transformer模型和参数量必须足够大。
五、大型语言模型在训练和应用阶段是如何构建的?
作为大规模的Transformer语言模型,一般包含了庞大的参数量、复杂的计算需求、长距离依赖、分布式训练、高内存和存储需求以及高性能实时计算推理的要求。这使得它通常无法在一台计算机上运行,需要借助分布式计算环境,如大规模计算机集群,以充分利用多个计算节点的计算和存储资源,而在用户端通过 API 访问接口 或 Web 界面网页端提供服务。
大型语言模型的训练和应用通常可以划分为三个主要阶段或场景:
大模型预训练阶段(Pretraining):
在预训练阶段,大型模型经过训练以理解广泛的自然语言语料库,以获得强大的泛化能力。为了确保模型训练的强大性,这一阶段需要使用大规模的模型参数和执行中间计算。模型的权重是从头开始计算的,因此通常选择高精度(例如32位浮点数)进行训练。这一过程对GPU和显存资源的需求较高,消耗较大。
大模型微调阶段(Fine-tuning):
在微调阶段,通常会冻结大部分参数,仅对少数参数进行训练。同时,采用多种优化技术和精心挑选的高质量数据集以提升微调效果。由于在预训练阶段已经进行了充分的模型训练,微调时数值误差对模型的影响通常较小。此时通常选择16位精度进行训练,从而降低显存资源的消耗,相比预训练阶段通常更为经济。
大模型推理阶段(Inference):
在推理阶段,一般是实际应用中,将经过预训练和微调的模型用于实时的文本生成、理解或其他自然语言处理任务,通常只是将一个输入数据经过模型的前向计算得到结果即可,不需要进行梯度计算和反向传播,因此需要最少的显存即可运行。
六、大型语言模型如何对外提供服务?
大型语言模型通常通过 API 访问接口 或 Web 界面网页端提供服务。这种方式带来了灵活性和可扩展性。
这也就是我们经常使用的大模型网页端?界面了。
API接口: 提供简单易用的API(Application Programming Interface)接口,允许开发者通过HTTP请求或其他协议与模型进行通信。这种方式使得模型能够集成到各种应用程序和服务中。
Web界面: 构建用户友好的Web界面,使非技术用户能够通过浏览器与模型进行交互。这种方式适用于需要直观操作的场景,例如在线文本生成或自然语言理解任务。
SDK(Software Development Kit): 提供软件开发工具包,包括代码示例和文档,以便开发者在本地环境中集成和使用模型。SDK通常包含与不同编程语言兼容的库和工具。
云服务: 将模型部署为云服务,通过云平台提供模型的计算和存储资源。用户可以通过云服务提供商的控制台或API调用来使用模型,而无需关心底层的硬件和系统细节。