大模型项目实战:多领域智能应用开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 基本原理

大语言模型首先在大规模的无标注语料上进行自监督预训练,通过掩码语言模型、下一句预测等任务,学习语言统计规律,之后针对下游NLP任务进行微调,以适应特定任务。例如,将基础模型微调后得到Chat模型,以便模型在对话任务中工作得更好。这种无标注语料的方法减少了模型对大量标注数据的依赖,使其可进行自回归生成,逐词预测下一个最可能的token[5]

在文本生成过程中,模型学习如何连贯、流畅地产生由token组成的语言序列。这种生成机制模拟了人类语言的产生过程。大语言模型的参数量通常在十亿级甚至千亿级,这使其可以学习大量的语言知识,拟合训练语料的分布,理解语义信息,显示出强大的语言生成能力。

1.2.1 Transformer架构

大语言模型通常采用Transformer或其优化版本作为骨干架构。Transformer是一种基于自注意力(Self-attention)机制的深度学习模型架构,由Google翻译团队的Ashish Vaswani等人在2017年提出,主要用于处理序列数据。而在自然语言处理任务中,文本序列经过词汇表索引等方式转换为数字序列的形式,这一步骤是将语言处理转化为数学计算的关键环节。

Transformer的核心是自注意力机制,能够在一个文本序列中的不同位置之间建立关联,从而更好地捕捉序列中的长距离依赖关系。通过自注意力机制,Transformer能够并行处理输入序列中的不同位置信息,使其在处理长序列时具有更好的性能。在Transformer中,输入序列经过多层的注意力机制和前馈神经网络处理,最终输出表示序列的向量。基于Transformer的模型结构包括Encoder(编码器)和Decoder(解码器)两部分,Encoder用于将输入序列编码为隐藏表示,Decoder则用于根据Encoder的输出生成目标序列。Transformer能够通过编码器-解码器结构、多头自注意力机制以及前馈全连接神经网络,学习语言中的长距离依赖关系,理解语义信息。由于Transformer具有并行计算能力和良好的建模能力,它在机器翻译、文本生成和问答系统等任务中表现出色。其架构如图1-2所示。

图1-2 Transformer架构示意

1.2.2 编码器与解码器

在Transformer中,输入序列首先通过一个编码器进行编码,然后通过一个解码器进行解码,最终输出目标序列。编码器和解码器并不总是成对出现,在近几年的发展中,大语言模型对Transformer架构的使用分化为三个技术流派:Encoder-only、Encoder-Decoder和Decoder-only。目前来看,Decoder-only方向是主流。

Transformer的编码器和解码器由多个相同的层堆叠而成。每个层包含两个子层:多头自注意力机制(Multi-Head Self-Attention)层和前馈全连接神经网络(Feed-Forward Fully Connected Neural Network)层。在每个子层之间还加入了残差连接和层归一化操作,有助于缓解梯度消失问题,加速训练过程。

Transformer由6层编码器和6层解码器组成,每一层编码器的输入是前一层编码器的输出,而每一层解码器的输入不仅是其前一层解码器的输出,还包括了整个编码部分的输出。原始的文字通过编码和解码过程,最终形成目标文本。其结构如图1-3所示。

图1-3 Transformer分层结构

1.2.3 自注意力机制

自注意力机制是一种用于计算序列数据中不同位置之间依赖关系的方法。在自注意力机制中,每个输入位置都会与其他位置进行交互,以便根据它们之间的关系来调整其表示。自注意力机制允许模型查看输入序列中的其他token,以便更好地理解序列中的某个token。

如图1-4所示,在“大”“模”“型”三个token之间,“型”与“大”的关系最密切,与“模”的关系次之。

注意力函数用于计算输入序列中每个位置与其他位置之间的注意力权重,可以描述为将一个查询和一组键值对映射到输出,其中查询(Q)、键(K)、值(V)和输出都是向量,输入乘以三个不同的权重矩阵分别得到QKV,如图1-5所示。

图1-4 自注意力机制示意

Q 乘以KT得到一个3×3矩阵,分别表示一个token内各元素之间的注意力值(相关性),见图1-6。

dk是缩放系数,默认值为64,可以使结果不至于过大或过小,避免经过softmax函数计算之后的结果非0即1。softmax是归一化函数,可以将数值向量转换为概率分布,即将向量与向量之间的相关性通过概率分布的形式表现出来。softmax函数计算过程如图1-7所示。

图1-5 自注意力中的QKV

图1-6 注意力计算过程示意

图1-7 softmax函数计算过程

在Transformer架构中,注意力模块会并行地重复计算多次。其中的每一次计算被称为一个注意力头(Attention Head)。注意力模块将QKV分成多份,然后将每一份独立地通过一个单独的注意力头进行处理。这些注意力计算结果最终被融合在一起,形成注意力分数,这种机制被称为多头注意力,能使得Transformer更好地捕捉每个单词之间的多重关系和细微差别。自注意力关注序列内每个位置对其他所有位置的重要性,而多头注意力则通过在多个子空间中并行计算注意力,使模型能够同时捕获和整合不同方面的上下文信息,从而增强了对复杂数据内在结构的分析能力。