一、GPT
GPT-1:这是GPT系列的第一个版本,发布于2018年。GPT-1具有1.17亿个参数,使用Transformer的Decoder结构作为基础,并采用了预训练的语言模型。它在多项自然语言处理任务上取得了很好的表现,如文本生成、机器翻译和阅读理解等。
GPT-2:GPT-2是GPT系列的第二个版本,发布于2019年。相比于GPT-1,GPT-2在模型规模和预训练数据上都有了显著的提升。GPT-2的参数数量增加到了15亿,并使用了更多的预训练数据。这些改进使得GPT-2在生成任务上表现出了更强的创造力和语言理解能力,能够生成更长、更连贯的文本。
GPT-3:GPT-3是GPT系列的第三个版本,发布于2020年。GPT-3具有惊人的1750亿个参数。这一巨大的模型规模使得GPT-3能够处理更加复杂和多样的自然语言处理任务,包括文本生成、翻译、问答和文本分类等。GPT-3在预训练过程中使用了大量的互联网文本数据,进一步提升了其性能和泛化能力。
GPT-4:GPT-4是GPT系列的第四个版本,发布于2023年3月。GPT-4是一款具有广泛应用的大型、多模态模型。与之前的版本不同,GPT-4是第一个能够同时接收文本和图像的多模态模型。它不仅可以接收文本输入,还能接收图像输入,并生成相应的文本输出。GPT-4在各种专业和学术基准测试中表现出色,显示出其强大的自然语言处理能力和多模态理解能力。
GPT的版本迭代
1. 堆叠Transformer的Decoder
GPT-2沿用了Transformer的解码器部分,通过堆叠多个Decoder层来构建模型。每个Decoder层都包含了自注意力(Self-Attention)机制和位置编码(Position Encoding)等关键组件。
GPT-2的堆叠层数可以根据具体需求进行调整,但通常包括多个(如12层)Decoder层,以提供足够的深度来捕捉文本中的复杂依赖关系。
2. 自注意力机制(Self-Attention)
自注意力机制是Transformer和GPT-2中的核心组件,它允许模型在处理文本时同时关注到文本中的其他部分。
在GPT-2中,自注意力机制通过计算输入序列中每个单词与其他单词之间的相关性来实现,从而帮助模型理解文本的全局上下文信息。
3. 位置编码(Position Encoding)
由于Transformer模型本身并不包含任何关于单词位置的信息,GPT-2引入了位置编码来弥补这一缺陷。
位置编码是一种将单词在序列中的位置信息嵌入到模型中的方法,它使得模型能够区分不同位置的单词并理解它们的顺序关系。
4. 残差连接(Residual Connections)和层归一化(Layer Normalization)
GPT-2在Decoder层之间使用了残差连接和层归一化技术,以提高模型的训练稳定性和收敛速度。
残差连接允许模型在传递信息时保留前一层的部分输出,从而避免了深层网络中的梯度消失或梯度爆炸问题。
层归一化则通过对每一层的输入进行归一化处理,使得模型的每一层都能够在相似的尺度上工作,进一步提高了模型的稳定性和性能。
5. 输出层
GPT-2的输出层通常包括一个线性层(Linear Layer)和一个Softmax层,用于将Decoder层的输出映射到词汇表上的概率分布。
通过这种方式,GPT-2可以根据输入的上文生成对应的下文单词,从而实现文本生成任务。
GPT-2的架构
二、LlaMA
训练数据:LLaMA的训练数据来源于公开数据集,无任何定制数据集,确保了其工作的开源兼容性和可复现性。整个训练数据集在token化之后大约包含1.4T的token。随着版本的迭代,训练数据的规模不断增加,LLaMA3甚至基于超过15万亿个token的数据进行预训练。
模型规模:LLaMA提供了多种规模的版本,包括7B、13B、70B和405B(4050亿)等不同参数量的模型。这些模型可以根据具体的应用场景和计算资源进行选择。
性能优异:LLaMA在多个基准测试上表现出色,甚至能够媲美或超越一些参数量更大的模型。例如,具有130亿参数的LLaMA模型在大多数基准上可以胜过GPT-3(参数量达1750亿)。
前置层归一化(Pre-normalization)
为了提升训练时的稳定性,LLaMA将归一化操作从Transformer子层的输出移到了输入。具体地,第一层归一化被设置在多头注意力层之前,第二层归一化被移动到全连接层之前。同时,残差连接的位置也调整到了多头注意力层与全连接层之后。这种设计有助于减少梯度消失或爆炸的问题,从而提高训练稳定性。
RMSNorm归一化函数
LLaMA在归一化过程中使用了RMSNorm(Root Mean Square Layer Normalization),这是一种基于均方根(RMS)的归一化方法。RMSNorm不依赖于均值,而是通过计算特征向量的RMS值来进行归一化。这种方法在计算上更为简洁,且在某些情况下可以提供类似甚至更好的性能。在LLaMA中,RMSNorm还加入了可学习的缩放因子和偏移参数,以进一步提高模型的灵活性。
SwiGLU激活函数
LLaMA使用了SwiGLU(Swish-Gated Linear Unit)激活函数,这是Shazeer在文献中提出的一种激活函数,并在PaLM等模型中得到了广泛应用。相较于传统的ReLU函数,SwiGLU在很多评测数据集上表现出了更好的性能。在LLaMA中,全连接层使用了带有SwiGLU激活函数的计算方式,这有助于提升模型的非线性处理能力。
旋转位置嵌入(RoPE)
LLaMA没有使用传统的绝对位置编码(如BERT中的sin/cos位置编码),而是采用了旋转位置嵌入(RoPE)。RoPE借助了复数的思想,通过绝对位置编码的方式实现了相对位置编码的效果。这种方法能够更有效地捕捉序列中的位置信息,从而提升模型在处理序列数据时的性能。