随着深度学习技术的不断发展,语言模型(Language Model,LM)在自然语言处理领域的应用越来越广泛。其中,基于Transformer架构的预训练语言模型(Pretrained Language Model,PLM)更是成为了研究的热点。在众多PLM中,基于大规模语料库的预训练语言模型(Large Language Model,LLM)以其强大的语言生成和理解能力,受到了广泛的关注。本文将深入探讨LLM的关键技术。
一、 LLM技术
- LLM技术概述
LLM(Large Language Models)是一种基于深度学习的自然语言处理技术,他利用大规模的文本训练,实现强大语言模型的构建。目前主流的LLM基座都采用Transformer架构,它由多层自注意力机制和前馈神经网络组成,旨在实现较长输入序列的并行处理。 - LLM技术发展
在说到Transformer之前,需要首先讲讲NLP。
NLP(Natural Language Processing)即自然语言处理。NLP主要用于研究实现人类语言和机器语言之间的无障碍沟通,分为自然语言的理解和自然语言的生成。包含词性标注、情感分析、信息检索、机器翻译、聊天机器人、语音识别、中文OCR等。
对NLP而言,输入通常为一句话或者一篇文章。因而其处理难度在于首先内容的长度是不固定的。
其次,单词或者短语的顺序会影响到整个语句的含义,例如“我不完全懂你的意思”和“我完全不懂你的意思”含义就千差万别。
最后,对于中文而言,分词也是非常有难度的,不同的断句往往含义差别很大,因而中文分词往往是自然语言处理第一个要解决的问题。例如“我攒了1千万一需要我就拿出来”,可以有以下的分词。
可以看到分词不同很容易产生歧义,因而在理解是很多时候不能单词看其中一个片段,需要结合上下文来看。而特征抽取器作为语义特征提取的核心,能否具备长距离特征捕获能力对于解决 NLP 任务来说是很关键的。
在自然语言处理中,有三个主流的特征提取器,分别是RNN、CNN和Transformer。
在以Bert和GPT为代表的LLM出现之前,NLP领域流行的技术是深度学习模型。
RNN即循环神经网络(Recurrent Neural Network),它可以对序列数据进行处理和学习。后期引入LSTM(长短期记忆)、GRU(门控循环单元)来改善记忆能力,实现更好的序列处理。RNN广泛应用于语音识别、机器翻译等领域。
CNN是卷积神经网络(Convolutional Neural Network),也是一种深度学习模型,可以通过学习从原始图像中提取特征,实现对图像的分类、检测、分割等任务。广泛应用于图像识别、人脸识别、图像生成、目标检测等。
2017年Transformer提出,2018基于Transformer的预训练模型GPT1和Bert相继公布,标志着NLP领域进入一个崭新的时代。Transformer完全摒弃了CNN和RNN的架构,完全基于自注意力机制的神经网络结构,具有强大的语义特征提取能力,长距离的特征捕获能力,再加上强大的并行计算能力,机器翻译、文本生成、语言建模等任务中表现出了优异的性能。至此部分NLP子领域走向消亡,而其他NLP子领域的技术方法和框架日趋统一,特征提取器逐步归敛于Transformer。
二、 LLM基座-Transformer - Transformer的模型架构
2017年Google发表一篇名为《Attention is All You Need》的论文,文中阐述了一种基于自注意力机制(self-attention mechanism)的神经网络架构-Transformer,描述了Transformer结构及原理,包括自注意力机制、位置编码、解码器、前馈神经网络等组件。
1.1 工作流程
Transformer结构是由输入输出、编码器(Encoder)、解码器(Decoder)组成。其中编码器和解码器是Transformer的核心,每个部分由多个层次组成,每个层次由多头自注意力机制和全连接层组成。
从输入提示词到输出,整个流程包含以下步骤:
- 获取输入的提示词并进行分词,进行词的向量化。向量由单词的 Embedding和位置编码计算得出。
- 将所有的向量矩阵传递到Encoder,并输出所有分词的编码矩阵。如下图。向量的维度通常为512。
- 将编码矩阵传递到Decoder进行翻译输出。
- 注意力机制
当我们感知周遭环境时,通常都会来分辨焦点在什么地方,以便聚焦处理更重要的内容。因而,作为神经网络的大模型,在进行单词生成或者内容提取时,也是需要“注意”向量和其他元素之间的关系。
注意力机制用以描述元素的加权平均值,包含3个关键点:
Query:用以描述在序列中需要寻找或者注意的内容。
Keys:key是输入元素的特征向量,描述该元素“提供”什么,或者它何时可能很重要。
Values:value是输入元素的值向量。
哪些向量是我们需要的?此时就需要一个评分函数将Query和Keys作为输入,并输出他们的得分,计算加权平均值,用以表示匹配程度。
2.1自注意力机制
在自注意力(self-attention)中,每个序列元素提供一个key、value和query。对于每个元素,根据其query作用一个注意力神经层,检查所有序列元素键的相似性,并为每个元素返回一个不同的平均值向量。
2.2多头注意力
序列元素通常需要关注多个不同方面,并且单个加权平均值并不是最佳选择。这就是提出多头注意力机制的根源,即相同特征上的多个不同的(查询,键,值)三元组。
具体来说,给定一个查询、键和值矩阵,我们将它们转换为h个子查询、子键和子值,然后分别输入给点击注意力模型,最后连接头部并将它们与最终的权重矩阵组合起来。 - Transformer的组成
3.1 输入
通常我们使用LLM时,都是输入提示词给大模型,大模型根据提示词生成指定的内容。那么LLM是如何理解输入的提示词的?
首先会将文字进行切割分词,将完整的词组合成令牌(tokens)-—可以编码的基本单位。
针对于可能出现多重含义的词,例如key。LLM在预训练时,就需要观察上下文,根据与key的临近程度使用向量-数值列表的形式表示,这个向量称为词嵌入(embedding)。不同的值可以用以标识不同的场景。
我们都清楚,一句话中同一个词,出现的位置不同,可能含义相差很大。因此在Transformer中会给每个词向量添加位置编码(positional encoding)保证含义的准确。
3.2 Encoder
Encoder包含6个block,每个Encoder由Multi-Head Attention 和 全连接神经网络Feed Forward Network构成。处理流程如下:
将输入的词向量与位置编码相加得到输入向量。
将输入向量作为自注意力机制的输入,得到注意力矩阵。
将所有的输入词语进行Embedding,然后将其与维度相同的位置向量组合(相加)。
将第一步得到的向量通过self-attention层,得到输出向量。在得到输出向量后,可以看到,在self-attention层后还包含着一个残差网络与LayerNorm操作。
将LayerNorm输出的向量,经过全连接层,然后再经过一个残差网络以及LayerNorm,便可得到一个Encoder的输出。
Transformer的Encoder是由N=6个相同的layer组成,layer指的是上图左侧的单元,最左边有个"Nx",这里的x是6,每个layer由两个sub-layer组成,分别是multi-head self-attention mechanism和fully connected feed-forward network。
3.3 Decoder
Decoder也是由6个decoder堆叠而成。 decoder由Masked Multi-Head Attention,Multi-Head Attention和全连接神经网络FNN构成。比Encoder多了一个Masked Multi-Head Attention,其他的结构与encoder相同,处理流程如下:
获取输入句子的每一个单词的表示向量X,X由单词的Embedding和单词位置的Embedding相加得到。
将得到的单词表示向量矩阵传入Decoder中,根据当前翻译过的单词翻译下一个单词。 - Encoder-Decoder、Encoder-Only、Decoder-Only
在Transformer中,根据 Encoder/Decoder 的路线不同,发展出三个主流分支: - Encoder-only(也叫Auto-Encoder),典型代表BER,见图中粉色路线。
- Encoder-decoder,典型代表T5和GLM,见图中绿色路线。
- Decoder-only(也叫Auto-Regressive),典型代表GPT/LLaMa/PaLM,见图中灰色路线。
这三种结构不同的LLM,往往擅长处理不同的任务:
三、 总结
前面已经了解了LLM的底层模型,那么三种分支模型那个更有前景?
Encoder-Decoder模型:这种模型能够理解输入并生成相关输出,因此广泛应用于各种任务,如机器翻译、对话系统等。然而,它也有局限性,例如对于某些生成任务,它可能无法生成连贯、有创造性的文本。此外,对于复杂输入的理解能力有限也是其不足之处。尽管如此,由于其通用性和灵活性,Encoder-Decoder模型的前景仍然广阔,特别是在需要理解和生成序列数据的任务中。
Encoder-Only模型:这种模型专注于理解和分析输入信息,并不生成新的内容。它在分类和情感分析等任务中特别有效。然而,由于其无法生成新的输出,因此在某些生成任务中无法使用。在未来的研究中,可以探索如何提高Encoder-Only模型在生成任务中的表现,例如通过引入自注意力机制或使用其他生成模型技术。
Decoder-Only模型:这种模型从一系列输入中生成或预测输出,具有强大的生成能力和灵活性,适用于各种生成型任务。然而,由于其不擅长理解复杂的输入数据,因此在某些需要理解输入的任务中可能表现不佳。在未来的研究中,可以探索如何提高Decoder-Only模型的理解能力,例如通过引入更多的上下文信息或使用其他技术来增强模型的表示能力。
总结来说,这三种模型各有优缺点,适用于不同的任务。未来的研究可以探索如何结合它们的优点,或者探索新的模型架构和技术,以更好地处理自然语言处理和其他序列数据处理任务。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。