AI大模型术语大全:从Transformer到RAG,一文搞懂所有核心概念
预训练是在大规模无标签数据集上对模型进行初始训练的阶段,旨在让模型学习通用的语言表示和世界知识。
预训练 (Pre-training)
预训练是在大规模无标签数据集上对模型进行初始训练的阶段,旨在让模型学习通用的语言表示和世界知识。
预训练是构建大型语言模型的第一步,也是计算成本最高的一步 。在这个阶段,模型会接触到来自互联网、书籍、代码等来源的数万亿级别的词元数据 。预训练的目标不是为了完成某个特定任务,而是学习一种普适的、可迁移的知识。其核心任务通常是自监督的,最常见的是“下一个词元预测”(Next Token Prediction)。模型被给定一段文本,并被要求预测接下来最可能出现的词元 。
通过在海量数据上反复执行这个看似简单的任务,模型被迫学习语言的内在规律,包括语法结构、词汇语义、事实性知识,甚至一些基础的推理模式。例如,为了准确预测“法国的首都是”之后的词元,模型必须在训练数据中学习到“巴黎”与这个句子的强关联性。预训练完成后,我们得到一个“基础模型”(Base Model) 。这个模型就像一个知识渊博但未经专门指导的学生,它是一个强大的“互联网文档模拟器”,能够生成流畅、连贯的文本,但它并不一定能理解或遵循用户的具体指令 。
轮次 (Epoch)
一个轮次(Epoch)指学习算法完整地遍历一次整个训练数据集的过程。
在模型训练中,Epoch是衡量训练进度的基本单位 。当模型完成了一个Epoch的训练,意味着它已经“看过”了训练集中的每一个样本一次。
通常,为了让模型充分学习数据中的模式,训练过程会包含多个Epochs。模型会在数据集上进行反复的学习和迭代,每一次遍历(即每个Epoch),它都会根据在前一个Epoch中学到的知识,进一步调整其内部的权重参数,以期在新一轮的学习中表现得更好 。
Epoch的数量是一个重要的超参数。设置得太少,模型可能学习不充分(欠拟合);设置得太多,模型可能会过度学习训练数据中的噪声,导致在未见过的数据上表现不佳(过拟合)。
批量大小 (Batch Size)
批量大小是一个超参数,它定义了在单次参数更新前,模型需要处理的训练样本数量。
在训练大型神经网络时,一次性将整个数据集加载到内存并计算梯度是不可行的。因此,通常会将数据集分成若干个小的“批次”(mini-batches)。批量大小(Batch Size)就是指每个批次中包含的样本数量 。
模型在处理完一个批次的样本后,会计算这个批次的平均损失,然后根据这个损失进行一次反向传播和参数更新。因此,批量大小直接影响了训练的动态过程:
- 大批量大小: 梯度估计更稳定,有助于模型更快地收敛。同时,可以更好地利用硬件的并行计算能力,训练速度更快。但它需要更多的内存,并且有研究指出,过大的批量可能会使模型收敛到泛化能力较差的“尖锐”最小值点 。
- 小批量大小: 梯度估计的噪声更大,这在某种程度上可以帮助模型跳出局部最小值,可能获得更好的泛化能力。但训练过程会更慢,且梯度更新的波动性更大 。
根据批量大小的不同,梯度下降可以分为三种类型:批量梯度下降(Batch Gradient Descent,批量大小等于整个数据集)、随机梯度下降(Stochastic Gradient Descent, SGD,批量大小为1)和最常用的小批量梯度下降(Mini-Batch Gradient Descent) 。
迭代 (Iteration)
一次迭代代表模型权重的一次更新,对应于模型处理完一个批次的数据。
迭代(Iteration)是训练循环中最小的步骤单位 。每当模型完成对一个批次(mini-batch)数据的前向传播和反向传播,并更新一次其权重参数,就完成了一次迭代。
迭代、批量大小和轮次之间的关系可以用一个简单的公式来表示: 每个轮次的迭代次数 = 训练集总样本数 / 批量大小
例如,如果一个训练集有2000个样本,批量大小设置为100,那么模型需要进行 2000 / 100 = 20
次迭代才能完成一个轮次的训练 。理解这三个术语的区别对于准确描述和配置模型训练过程至关重要
监督学习 (Supervised Learning)
监督学习是一种机器学习范式,模型通过学习带有明确标签(即正确答案)的输入输出对来进行训练。
监督学习是机器学习中最传统也最直接的方法 。在监督学习中,训练数据集的每一条数据都包含一个输入和一个期望的输出(标签)。例如,在情感分析任务中,输入是一段评论文本,标签是“正面”或“负面”。模型的目标是学习一个从输入到输出的映射函数,使其在见到新的、未标记的输入时,能够准确预测出其对应的标签。
虽然LLM的预训练阶段主要是自监督的,但后续的微调阶段(如指令微调)则大量采用了监督学习 。在指令微调中,研究人员会构建一个高质量的指令数据集,其中每条数据都是一个(指令,期望回答)对。模型在这个数据集上进行训练,从而学会遵循人类的指令,表现得更像一个有用的助手,而不是一个简单的文本补全工具 。
自监督学习 (Self-Supervised Learning, SSL)
自监督学习是一种特殊的无监督学习,它通过从数据本身创造“伪标签”来进行训练,而无需人工标注。
自监督学习是驱动LLM预训练革命的关键技术。它巧妙地解决了传统监督学习对大规模人工标注数据的依赖问题 。在SSL中,学习信号(即监督信息)是从输入数据自身中提取的。对于语言模型而言,这意味着可以利用文本的内在结构来构建学习任务 。
最典型的自监督任务就是语言建模,具体又可分为两种:
- 自回归语言建模(Autoregressive LM):如GPT系列所采用,任务是根据前面的词元序列预测下一个词元。在这里,序列本身就提供了标签:每个词元都是其前面所有词元的“正确答案”。
- 掩码语言建模(Masked LM):如BERT所采用,任务是随机“掩盖”(mask)掉输入序列中的一部分词元,然后让模型去预测这些被掩盖的词元是什么。
通过这种方式,模型可以利用几乎无限的、未经标注的文本数据进行学习,这使得训练具有数千亿甚至万亿参数的模型成为可能。
反向传播 (Backpropagation)
反向传播是一种用于训练神经网络的核心算法,它通过计算损失函数相对于网络参数的梯度,来指导参数的更新方向。
当神经网络做出一次预测后,我们需要一个机制来告诉它“错在哪里”以及“如何修正”。反向传播就是这个机制 。其过程可以分为两步:
- 前向传播(Forward Pass):输入数据从输入层开始,逐层通过网络,直到输出层产生一个预测结果。
- 反向传播(Backward Pass):首先,通过损失函数计算预测结果与真实标签之间的误差。然后,这个误差信号会从输出层开始,沿着与前向传播相反的方向逐层传递。在每一层,算法都会利用微积分中的链式法则,计算损失函数对该层参数(权重和偏置)的偏导数,即梯度。
这个梯度向量指明了为了使损失减小,每个参数应该调整的方向和幅度。简而言之,反向传播高效地计算出了成千上万甚至数亿个参数中,每一个参数对最终误差的“贡献度”,为后续的参数更新提供了依据 。
梯度下降 (Gradient Descent)
梯度下降是一种迭代优化算法,它通过沿着损失函数梯度的反方向小步更新模型参数,以找到损失函数的最小值点。
反向传播计算出了梯度,而梯度下降则利用这个梯度来实际更新模型的参数 。想象一个身处山谷中的人想要走到谷底(损失函数的最小值)。梯度指向的是坡度最陡峭的上升方向,那么梯度的反方向就是最陡峭的下降方向。梯度下降算法就是让这个人朝着最陡峭的下降方向迈出一小步。
这个过程会不断重复:计算梯度 -> 更新参数 -> 再计算梯度 -> 再更新参数……直到模型收敛,即损失不再显著下降。其中,“步长”的大小由一个称为“学习率”(Learning Rate)的超参数控制。学习率过大可能导致在谷底附近来回震荡甚至发散,学习率过小则会导致收敛速度过慢。
在实践中,通常使用随机梯度下降(Stochastic Gradient Descent, SGD)及其变体(如Adam)。SGD不是在整个数据集上计算梯度,而是在每个迭代步骤中随机抽取一小批(mini-batch)数据来估计梯度并更新参数,这大大提高了训练效率 。
学习率
学习率是梯度下降算法中的一个关键超参数,它控制着每次参数更新的步长大小。
学习率(Learning Rate)是决定模型学习速度和稳定性的核心超参数之一 。在梯度下降的每一步更新中,参数的调整量等于梯度乘以学习率。因此,学习率决定了模型在参数空间中向损失函数最小值的方向上“迈出”的步伐有多大。
学习率的选择是一个微妙的权衡过程:
- 学习率过大: 如果步长太大,模型可能会在损失函数的最小值点附近来回“震荡”,甚至可能“跨过”最小值点,导致损失函数不降反升,最终无法收敛 。这就像下山时步子迈得太大,直接跳到了对面的山坡上。
- 学习率过小: 如果步长太小,模型的学习过程会非常缓慢,需要大量的迭代才能达到最小值点,这会极大地增加训练时间和计算成本。此外,过小的学习率也可能使模型陷入一个不理想的局部最小值(local minimum),无法找到全局最优解 。
因此,选择一个合适的学习率对于成功训练一个深度学习模型至关重要。在实践中,通常需要通过实验来调整学习率,或者使用更高级的“学习率调度”策略来在训练过程中动态地调整学习率。
优化器
优化器是用于更新神经网络参数(如权重和学习率)以最小化损失函数的算法。
优化器(Optimizer)是驱动神经网络学习的核心引擎。在反向传播计算出损失函数相对于每个参数的梯度之后,优化器负责根据这些梯度信息来决定如何调整参数。它的最终目标是找到一组能够使损失函数达到最小值的参数。
梯度下降本身就是一种最简单的优化器。然而,在实践中,尤其是在处理深度神经网络复杂而崎岖的损失函数“地形”时,简单的梯度下降往往效率低下或容易陷入困境。因此,研究人员开发了许多更先进的优化器,它们通过引入动量、自适应学习率等机制来加速收敛并提高稳定性。
随机梯度下降 (SGD)
随机梯度下降是一种基础的优化算法,它每次仅使用一小批(甚至一个)训练样本来计算梯度并更新模型参数。
随机梯度下降(Stochastic Gradient Descent, SGD)是梯度下降算法的一个变种,也是深度学习中最基础的优化器之一 。与在整个数据集上计算梯度的标准梯度下降不同,SGD在每次迭代中只随机抽取一小批(mini-batch)样本来估计梯度,并据此更新模型参数 。当批量大小为1时,就是最纯粹的SGD。
这种“随机”或“嘈杂”的梯度估计带来了几个特点:
- 优点: 更新频率高,训练速度快。梯度的噪声有时能帮助算法跳出局部最小值,探索更广阔的参数空间。
- 缺点: 梯度更新的方向波动很大,收敛过程不稳定,可能会在最小值附近震荡,难以精确收敛。
尽管有其局限性,SGD及其加入了动量(Momentum)的变体,至今仍在许多任务中被广泛使用,并且是理解更复杂优化器的基础。
Adam (自适应矩估计)
Adam是一种高效且流行的优化算法,它通过为每个参数计算自适应的学习率,并结合了动量和RMSprop的优点。
Adam(Adaptive Moment Estimation)是目前深度学习领域最受欢迎和广泛使用的优化器之一,通常被作为默认选择 。它的成功在于巧妙地结合了两种先进的优化思想:
- 动量 (Momentum): 这个思想模拟了物理学中的动量概念。它不仅仅依赖于当前的梯度来更新参数,还引入了一个过去梯度的指数移动平均值。这就像一个从山上滚下来的球,它会积累动量,在梯度方向一致的平坦区域加速滚动,而在梯度方向改变的崎岖地带则能抑制震荡,从而加速收敛 。
- 自适应学习率 (Adaptive Learning Rate) - 类似RMSprop: Adam为网络中的每一个参数都维护一个独立的、自适应的学习率。它通过计算过去梯度的平方的指数移动平均值来实现这一点。对于梯度一直很大的参数,其学习率会相应减小;而对于梯度较小的参数,其学习率则会增大。这使得模型在不同参数上能够以不同的“速度”进行学习 。
通过将这两者结合,并进行偏差修正,Adam能够在各种不同的模型和数据集上都表现出快速、稳定且鲁棒的收敛性能 。
AdamW (带解耦权重衰减的Adam)
AdamW是Adam优化器的一个重要变种,它通过将权重衰减(L2正则化)与梯度更新步骤解耦,修正了原始Adam中正则化实现方式的缺陷,从而获得更好的泛化性能。
权重衰减(Weight Decay)是一种常用的L2正则化技术,旨在通过惩罚大的权重来防止模型过拟合。在传统的优化器(如SGD)中,权重衰减等效于在损失函数中添加一个L2正则化项。
然而,在Adam这样的自适应学习率优化器中,原始的实现方式将权重衰减项与梯度耦合在了一起。研究发现,这种耦合方式会使得权重衰减的效果受到Adam自适应学习率的影响,导致对于具有较大历史梯度的权重,其有效的权重衰减效果会减弱。这使得正则化变得不那么有效 。
AdamW通过一个简单而关键的修正解决了这个问题:它将权重衰减从梯度计算中解耦出来。具体来说,它首先像正常的Adam一样根据梯度和动量来计算参数的更新量,然后在最后一步,直接从权重中减去一个与权重自身成正比的小量(即 weight = weight - learning_rate * weight_decay * weight
) 。这种解耦的方式恢复了L2正则化在SGD中的原始效果,被证明能够带来更好的模型泛化能力,尤其是在训练Transformer这类大型模型时,AdamW已成为事实上的标准选择 。
过拟合与欠拟合
过拟合指模型过度学习了训练数据的噪声和细节,导致其在未见过的新数据上表现不佳;欠拟合则指模型过于简单,未能捕捉到数据中的基本模式。
过拟合(Overfitting)和欠拟合(Underfitting)是机器学习中描述模型性能的两个核心概念,它们共同构成了所谓的“偏见-方差权衡”(bias-variance tradeoff)。
- 过拟合 (Overfitting): 当一个模型过于复杂(例如,参数过多),或者在有限的数据上训练时间过长时,它可能会开始“记忆”训练样本,而不是学习其背后的普适规律。这样的模型在训练集上会表现得非常出色(训练误差很低),但一旦遇到新的、未见过的数据,其性能就会急剧下降(测试误差很高) 。过拟合的模型就像一个只会死记硬背的学生,考试时遇到做过的原题能拿满分,但题目稍微变化一下就束手无策。
- 欠拟合 (Underfitting): 当一个模型过于简单,无法捕捉数据中复杂的潜在模式时,就会发生欠拟合。这样的模型无论是在训练集还是测试集上,表现都会很差(训练误差和测试误差都很高) 。欠拟合的模型就像一个根本没用心学习的学生,连课本上的基础知识都没掌握。
理想的模型应该在这两者之间找到一个平衡点,既能充分学习数据中的规律,又具备良好的泛化能力,能够在未知数据上做出准确的预测。
损失函数 (Loss Function)
损失函数是一个衡量模型预测值与真实值之间差异的函数,模型训练的目标就是最小化这个函数的值。
损失函数(也称成本函数或目标函数)是机器学习模型训练的核心。它为模型的性能提供了一个量化的、可优化的指标 。在每次预测后,损失函数会输出一个标量值,表示这次预测的“糟糕”程度。损失值越大,说明模型的预测偏离真实值越远。
整个训练过程可以看作是一个寻找一组能使总损失最小化的模型参数的过程。通过反向传播和梯度下降,模型不断调整其参数,以期在下一次遇到相似输入时,能够做出更接近真实值的预测,从而获得更低的损失值。损失函数的选择取决于具体的任务类型。
交叉熵损失 (Cross-Entropy Loss)
交叉熵损失是分类任务(包括语言建模)中最常用的损失函数,它衡量的是模型预测的概率分布与真实的概率分布之间的差异。
在LLM的下一个词元预测任务中,模型在最后一步会输出一个覆盖整个词汇表的概率分布。例如,对于词汇表中的10万个词元,模型会为每个词元分配一个概率,表示它作为下一个词元出现的可能性。而真实的分布是“one-hot”的:正确的下一个词元概率为1,其他所有词元概率为0。
交叉熵损失函数就是用来衡量这两个概率分布之间的“距离”的 。如果模型为正确的词元分配了很高的概率(例如0.99),那么交叉熵损失就会很小;反之,如果模型为正确的词元分配了很低的概率(例如0.01),损失就会非常大。通过最小化交叉熵损失,模型被激励去为正确的下一个词元赋予尽可能高的概率,从而学习到语言的统计规律。
参数/权重 (Parameters / Weights)
参数或权重是神经网络中可学习的变量,它们在训练过程中被不断调整,以存储从数据中学到的知识和模式。
一个神经网络本质上是一个复杂的、由许多简单数学运算(如矩阵乘法和加法)构成的复合函数。这些运算中的可变数值就是模型的参数,主要包括权重(weights)和偏置(biases) 。权重决定了神经元之间连接的强度,而偏置则提供了额外的可调偏移量。
模型的“知识”就编码在这些参数的数值之中。在训练开始时,参数通常被随机初始化。随着训练的进行,梯度下降算法会根据损失函数反馈的误差,对数以亿计的参数进行微调 。这个过程就像是在雕琢一件复杂的雕塑,最终形成的参数组合使得模型能够对输入数据做出准确的预测。模型的参数量(例如,GPT-3拥有1750亿个参数 )通常被用作衡量其容量(capacity)和复杂性的一个指标。
激活函数
激活函数是应用于神经元输出的非线性数学函数,它使神经网络能够学习和模拟数据中复杂的非线性关系。
激活函数(Activation Function)是神经网络中一个至关重要的组成部分。在一个神经元接收到所有输入的加权和并加上偏置后,这个结果会通过激活函数进行处理,然后才作为输出传递给下一层。
激活函数的主要作用是向网络中引入非线性(non-linearity) 。这一点至关重要,因为现实世界中的绝大多数问题,如语言理解、图像识别等,其数据关系都是高度非线性的。如果没有非线性激活函数,无论神经网络有多少层,其本质都只是一个复杂的线性模型,其表达能力将大受限制,无法解决复杂问题。
常见的激活函数包括:
- Sigmoid: 将任意实数输入压缩到0到1之间,常用于二分类问题的输出层,表示概率。
- ReLU (Rectified Linear Unit): 函数形式为 f(x)=max(0,x)。它计算简单,能有效缓解梯度消失问题,是目前深度学习中最常用的激活函数之一。
- Softmax: 通常用于多分类问题的输出层,它将一个向量转换为概率分布,其中每个元素的值在0到1之间,且所有元素之和为1 。
词汇表 (Vocabulary)
词汇表是模型能够识别和生成的所有唯一词元的集合。
词汇表定义了模型的输入和输出空间 。它是在词元化阶段,通过对大规模训练语料进行分析后构建的。词汇表中的每一个词元都被赋予一个唯一的整数ID。当模型进行预测时,其最终的输出层(通常是一个Softmax层)会为词汇表中的每一个词元计算一个概率,表示该词元是下一个输出的可能性。
词汇表的大小是一个关键的设计决策。一个过小的词汇表可能无法很好地表示语言的多样性,导致许多词被拆分成多个词元,增加了序列长度。一个过大的词汇表则会增加模型输出层的计算负担和内存占用。现代LLM的词汇表大小通常在几万到十几万之间,例如GPT-4的词汇表大小约为10万 。
循环神经网络 (RNN)
循环神经网络是一种为处理序列数据而设计的神经网络,其内部的循环结构使其能够保留先前信息,从而理解上下文。
循环神经网络(Recurrent Neural Network, RNN)是专门为处理序列数据(如文本、时间序列或语音)而设计的。与前馈神经网络不同,RNN的神经元之间的连接形成了一个沿着序列方向的环路 。这个环路结构赋予了RNN一种“记忆”能力。
在处理一个序列时,RNN会逐个读取序列中的元素(例如,一个句子中的单词)。在每个时间步,RNN不仅接收当前元素的输入,还会接收来自上一个时间步的隐藏状态(hidden state)。这个隐藏状态可以看作是网络对到目前为止所有信息的摘要或记忆。因此,RNN对当前元素的处理方式会受到它之前看到的所有元素的影响,这使得它能够捕捉序列中的时间动态和上下文依赖关系 。在Transformer架构出现之前,RNN及其变体是自然语言处理领域的标准模型。
自回归模型 (Autoregressive Model)
自回归模型是一种按顺序生成序列的模型,其中每个元素的生成都以之前已生成的所有元素为条件。生成式大型语言模型(如GPT系列)本质上都是自回归模型 。这意味着它们生成文本的方式是逐个词元进行的,就像人类说话或写作一样。当模型需要生成一段回答时,它首先根据输入的prompt生成第一个词元。然后,它将这个新生成的词元添加到输入序列中,再根据这个新的、更长的序列来预测第二个词元。这个过程不断重复,每次都将最新生成的词元作为下一步预测的条件之一,直到模型生成一个特殊的“序列结束”(End-of-Sequence, EOS)词元,或者达到了预设的最大长度 。
这种自回归的特性是LLM能够生成连贯、有逻辑的长文本的关键。每个词元的生成都建立在已经形成的上下文之上,保证了前后文的一致性。
推理 (Inference)
推理是指使用已经训练好的模型对新的、未见过的数据进行预测或生成输出的过程。
推理与训练是模型生命周期中两个截然不同的阶段 。训练是一个耗时且计算密集的过程,其目标是学习模型参数。一旦模型训练完成,其参数就被“冻结”,进入推理阶段。在推理阶段,模型被部署用于实际应用,接收用户输入(prompt),并快速生成响应。
对于拥有数百亿参数的大型模型,推理本身也可能是一个计算挑战 。为了提高推理效率,业界发展出了多种优化技术,如模型量化(quantization)、剪枝(pruning)以及专门的推理服务器和硬件(如NVIDIA的TensorRT-LLM)。此外,许多公司提供“推理端点”(Inference Endpoint)服务,允许开发者通过API调用托管在云端的大型模型,而无需自己管理复杂的推理基础设施 。
微调 (Fine-Tuning)
微调是将在大规模通用数据上预训练好的模型,进一步在小规模、特定任务的数据集上继续训练,以使其适应特定需求的过程。
微调是迁移学习(Transfer Learning)在NLP领域的典型应用 。其核心思想是,预训练模型已经学到了丰富的语言规律和世界知识,我们不需要为每个新任务都从零开始训练一个模型。相反,我们可以利用这些预训练好的知识作为起点,仅用少量特定任务的数据(例如,法律文书、医疗记录或客服对话)对模型进行“微调”,使其“专业化” 。这个过程就像一个博学的通才,通过短暂的专业培训,迅速成长为某个领域的专家。微调能够显著提升模型在下游任务(downstream tasks)上的性能,使其表现远超直接使用基础模型 。
全量微调 (Full Fine-Tuning, FFT)
全量微调是在微调过程中更新模型所有参数的传统方法。
在全量微调中,预训练模型的所有权重都会在任务特定的数据上进行训练和调整 。这种方法允许模型最充分地适应新任务,通常能够达到最佳的性能。然而,对于动辄拥有数百亿参数的大型语言模型来说,全量微调的弊端也十分明显:
- 计算成本高:更新所有参数需要大量的GPU内存和计算资源,与预训练的成本相差不大,这使得许多个人和中小型组织望而却步。
- 存储效率低:每微调一个新任务,就需要保存一份完整的、与原始模型同样大小的模型副本。如果要支持上百个任务,存储开销将是巨大的 。
- 部署困难:在服务多个微调模型时,需要在不同模型副本之间切换,管理复杂且效率低下。
参数高效微调 (Parameter-Efficient Fine-Tuning, PEFT)
参数高效微调是一系列旨在通过只训练模型一小部分参数或少量额外参数,来高效地将大型预训练模型适配到新任务上的技术。
PEFT的出现是为了解决全量微调带来的高昂成本和低效率问题 。其核心思想是冻结预训练模型的大部分(甚至全部)参数,只对极少数参数进行微调。这些技术通常能以不到1%的可训练参数,达到与全量微调相当甚至更好的性能 。PEFT不仅大幅降低了计算和存储成本,还使得在单个消费级GPU上微调大型模型成为可能,极大地促进了LLM技术的普及和应用创新 。
根据修改参数的方式,PEFT方法可以大致分为以下几类 :
- 增量式PEFT (Additive PEFT):在冻结的原模型中插入新的、可训练的小模块。
- 选择式PEFT (Selective PEFT):只选择并微调原模型中已有参数的一个小子集。
- 重参数化PEFT (Reparameterization PEFT):用一种更高效的、低维的表示来对模型的某些参数进行更新。
LoRA (Low-Rank Adaptation)
LoRA是一种重参数化PEFT方法,它通过在Transformer的权重矩阵旁边注入两个可训练的低秩小矩阵来模拟权重的更新,从而极大减少了需要训练的参数数量。
LoRA是目前最流行和最成功的PEFT方法之一 。其背后的核心假设是,模型在适应新任务时,其权重矩阵的“变化量”
ΔW是低秩的。也就是说,这个巨大的变化矩阵可以用两个更小的矩阵的乘积来近似:ΔW≈BA,其中B的维度是d×r,A的维度是r×d,r(秩)远小于d。
在实践中,LoRA会冻结原始的预训练权重矩阵W0,并在其旁边增加一个并行的分支,该分支由矩阵A和B组成。在训练时,只有A和B的参数被更新,而W0保持不变。前向传播时,输入x会同时通过两个分支,最终的输出是h=W0x+BAx。由于r非常小,可训练参数的数量(A和B中的参数总和)远小于W0中的参数数量,通常能减少99%以上 。训练完成后,学习到的权重增量
BA可以被直接加回到原始权重W0中(W′=W0+BA),这意味着在推理时,LoRA不会引入任何额外的计算延迟。
Transformer
Transformer是一种基于自注意力机制的深度学习模型架构,专为处理序列数据而设计,是现代大型语言模型的核心基础。Transformer架构于2017年在里程碑式的论文《Attention Is All You Need》中被提出,标志着自然语言处理(NLP)领域的一个分水岭 。在此之前,处理文本等序列数据的主流模型是循环神经网络(RNN)及其变体(如LSTM和GRU)。这些模型按顺序逐个处理输入序列中的元素,这种固有的序列依赖性使其难以进行大规模并行计算,从而限制了训练速度和模型规模。Transformer的革命性在于,它完全摒弃了循环结构,转而依赖一种名为“自注意力”(Self-Attention)的机制 。这种机制允许模型在处理序列中的任何一个词元(token)时,都能同时计算并权衡序列中所有其他词元的重要性,从而捕捉长距离依赖关系 。这种设计的直接后果是巨大的计算效率提升。由于可以并行处理整个输入序列,Transformer能够充分利用现代图形处理器(GPU)的大规模并行计算能力 。这种算法设计与硬件能力的完美协同,极大地缩短了训练时间,使得在海量数据上训练拥有数千亿参数的超大规模模型成为可能,直接催生了GPT-3、Claude 2等大型语言模型的诞生 。可以说,Transformer不仅提供了一种更优的语言建模方法,更重要的是,它创造了实现自身规模化扩展的计算条件。
编码器-解码器架构 (Encoder-Decoder Architecture)
编码器-解码器是Transformer的原始架构,其中编码器负责理解输入序列并生成其上下文表示,解码器则利用该表示生成输出序列。原始的Transformer模型包含两个主要部分:编码器(Encoder)和解码器(Decoder) 。编码器的作用是接收并处理整个输入序列(例如,一句待翻译的德语),通过其内部的多层自注意力网络,为每个词元生成一个富含上下文信息的向量表示。这个过程可以理解为对输入句子的深度“理解”。解码器的任务则是根据编码器提供的上下文表示,并结合其自身已经生成的部分输出,以自回归的方式逐个生成目标序列中的词元(例如,翻译后的英语句子)。解码器在生成每个新词元时,都会“参考”编码器的完整输出和自己之前已生成的内容。值得注意的是,后续的许多著名模型根据任务需求对该架构进行了调整。例如,BERT及其变体主要使用编码器部分,专注于理解任务(如文本分类、情感分析),因此被称为“编码器-only”模型。而GPT系列模型则主要使用解码器部分,专注于生成任务(如文本续写、对话),因此被称为“解码器-only”模型 。这种架构上的分化体现了不同模型设计的侧重点。
仅编码器架构 (如 BERT)
仅编码器架构利用Transformer的编码器堆栈来生成输入的深度双向表示,专为自然语言理解任务而设计。
仅编码器架构(Encoder-Only Architecture)是Transformer模型的一个重要分支,其代表作是谷歌提出的BERT(Bidirectional Encoder Representations from Transformers) 。这类模型只使用了Transformer的编码器部分。
其核心特点是双向性(bidirectionality)。在编码器的自注意力机制中,每个词都可以同时关注到它左边和右边的所有词 。这使得模型能够构建一个对整个输入句子上下文有深刻理解的表示。例如,在理解“bank”这个词的含义时,模型可以同时看到句子中它前面和后面的所有词,从而准确判断它指的是“河岸”还是“银行”。
由于这种深度双向的上下文理解能力,仅编码器架构非常适合于自然语言理解(NLU)任务,如情感分析、命名实体识别、文本分类等,这些任务都需要对输入文本有一个全面的理解,而不是生成新的文本 。
仅解码器架构 (如 GPT)
仅解码器架构利用Transformer的解码器堆栈进行自回归文本生成,其中每个新生成的词都只依赖于它之前的词。
仅解码器架构(Decoder-Only Architecture)是Transformer的另一个主流分支,其最著名的代表是OpenAI的GPT(Generative Pre-trained Transformer)系列模型 。这类模型只使用了Transformer的解码器部分。
其核心特点是自回归(autoregressive)和因果掩码(causal masking)。在解码器的自注意力机制中,应用了一种特殊的“掩码”,它阻止了任何一个位置的词关注到它后面的词 。这意味着,在预测第 t 个词时,模型只能看到第 1 到 t−1 个词的信息,而看不到“未来”的信息。
这种结构天然地适用于文本生成任务。模型逐个词地生成文本,每生成一个新词,就将其添加到已有序列的末尾,然后作为下一步预测的输入 。这种一次一个词、依赖于历史生成内容的方式,就是自回归。当今所有主流的聊天机器人和生成式AI模型,几乎都采用了仅解码器架构。
架构的大分化
原始的Transformer模型是一个用于机器翻译的编码器-解码器模型。然而,其后最成功的模型,如BERT和GPT,都是通过解构这一原始架构并专注于其中一半而取得成功的。这一现象揭示了LLM设计中的一个根本性权衡:一个模型可以被优化用于深度的双向理解(仅编码器),或者用于连贯的序列生成(仅解码器),但在一个单一、简洁的架构中同时将两者都做到极致是非常困难的。
这一演化路径可以追溯如下:
- 原始的Transformer论文 提出了一个完整的编码器-解码器堆栈,用于处理序列到序列的任务。
- 随后,BERT 出现,它只使用了编码器堆栈。其核心优势是双向性,这对于需要分析完整句子的自然语言理解(NLU)任务是完美的。然而,它无法进行开放式的文本生成,因为它不是自回归的。
- 几乎同时,GPT 出现,它只使用了解码器堆栈。其核心特征是掩码自注意力,使其成为自回归模型,非常适合文本生成。然而,它在理解位置 i 的词时,只基于位置 1 到 i−1 的词,无法像BERT那样利用完整的上下文。这种分化表明,原始Transformer的两个组件服务于根本不同且存在内在张力的目的。编码器的优势(看到一切)对于生成任务来说是一个弱点(它会通过看到“未来”来“作弊”),而解码器的优势(用于生成的因果掩码)对于纯粹的理解任务来说则是一种限制。
这一架构上的分裂驱动了LLM的专业化。如今,业界通常会根据任务需求来选择“BERT风格”的模型(用于分析/嵌入)或“GPT风格”的模型(用于生成)。架构的选择是设计LLM时第一个也是最关键的决定,因为它预先决定了模型的核心能力。
查询、键和值 (Q, K, V)
查询、键和值是现代注意力机制中的三个核心向量,模型通过匹配一个“查询”向量和多个“键”向量来计算注意力权重,并用这些权重来加权求和对应的“值”向量。
查询(Query)、键(Key)和值(Value)是构成当前主流注意力机制(特别是Transformer中的自注意力)的三个关键元素,其概念借鉴自信息检索系统 。对于输入序列中的每一个词,模型都会学习生成三个不同的向量:
- 查询向量 (Query, Q): 代表当前词为了更好地理解自身,向序列中其他词发出的“提问”或“信息请求” 。它表达了“我正在寻找与我相关的什么信息?”。
- 键向量 (Key, K): 代表序列中每个词所包含信息的“标签”或“索引” 。它用来与查询向量进行匹配,回答“我这里有这样的信息”。
- 值向量 (Value, V): 代表序列中每个词实际包含的、要传递出去的信息内容 。
注意力分数的计算过程如下:将当前词的查询向量 (Q) 与序列中所有词(包括其自身)的键向量 (K) 进行点积或其他相似度计算。这个计算结果反映了查询与各个键的匹配程度。然后,将这些分数通过Softmax函数归一化,得到注意力权重。最后,将这些权重分别乘以每个词对应的值向量 (V),并将结果加权求和,得到当前词的最终输出表示 。这个Q, K, V范式使得注意力机制的计算变得非常高效和灵活,是Transformer架构的核心计算引擎。
语料库
语料库是用于训练语言模型的大规模、结构化的文本集合。
语料库(Corpus,复数形式为Corpora)是语言模型学习的源泉和基础 。它是一个经过收集和组织的庞大文本数据库。语料库的质量、规模和多样性直接决定了训练出的模型的知识范围、语言能力和潜在偏见 。
现代大语言模型的训练通常使用包含数百亿甚至数万亿词的语料库。这些语料库的数据来源极其广泛,包括网页(如通过Common Crawl项目抓取的大量互联网文本)、书籍、百科全书(如维基百科)、学术论文、代码库(如GitHub)等 。构建一个高质量的语料库是训练强大语言模型的第一步,也是最关键的步骤之一。
数据清洗
数据清洗是在训练前对语料库进行预处理,以移除噪声、错误、重复和有害内容,从而提高数据质量的过程。
从互联网等来源收集的原始语料库通常是杂乱无章的,包含了大量对模型训练无用甚至有害的数据。数据清洗(Data Cleaning)就是对这些原始数据进行筛选和净化的过程,旨在提升训练数据的整体质量 。
数据清洗的具体步骤包括但不限于:
- 去除重复内容: 删除完全相同或高度相似的文本,避免模型在重复数据上过度学习。
- 格式清理: 移除HTML标签、广告、导航栏等网页噪声。
- 质量过滤: 剔除低质量文本,如乱码、自动生成的文本或意义不连贯的段落。
- 有害内容过滤: 识别并移除包含仇恨言论、暴力、歧视或其他不当内容的文本。
- 个人身份信息(PII)移除: 检测并匿名化处理姓名、电话号码、地址等个人隐私数据,以保护用户隐私和符合法规要求 。
由于网络数据质量参差不齐,数据清洗是一个极其重要且具有挑战性的环节。一个经过精心清洗的高质量语料库是训练出表现优异且行为安全的语言模型的前提 。
词元化 (Tokenization)
词元化是将原始文本分割成模型能够处理的基本单元(词元)的过程,这些词元随后被转换为数字ID。计算机无法直接处理文本,因此必须先将文本转换为数字形式。词元化就是这个转换过程的第一步 。一个“词元”(Token)是模型词汇表中的一个基本单位,它可以是一个完整的单词、一个子词(subword),甚至是一个单独的字符 。例如,“transformer”这个词可以被视为一个词元,而“tokenization”可能被拆分为“token”和“ization”两个词元。这个过程由一个称为“分词器”(Tokenizer)的模块完成。常用的分词算法包括字节对编码(Byte Pair Encoding, BPE)、WordPiece和SentencePiece 。这些算法通过统计语料库中字符序列的出现频率,迭代地合并高频对,从而构建出一个既能覆盖大多数词汇,又能有效处理未知词或罕见词的词汇表。词汇表的大小是一个重要的超参数,它需要在序列长度和词元粒度之间做出权衡:词汇表越大,单个词元能表示的含义越丰富,序列长度就越短,但模型需要学习的词元嵌入就越多;反之亦然 。
嵌入 (Embedding)
嵌入是将离散的词元ID映射到低维、稠密的连续向量空间中的过程,使得语义相近的词元在向量空间中也相互靠近。词元化之后,每个词元都表示为一个整数ID。然而,这些ID本身不包含任何语义信息。嵌入层的作用就是将这些无意义的ID转换为富有语义的向量,即“词嵌入”(Word Embeddings) 。这一步至关重要,因为早期的机器学习方法通常使用类似独热编码(one-hot encoding)的稀疏表示,无法捕捉词与词之间的关系(例如,“国王”和“女王”的相似性) 。词嵌入向量是稠密的、低维的(通常是几百到几千维),向量中的每个维度都可能代表某种抽象的语义特征。在实践中,嵌入层通常实现为一个大型的查找表(lookup table),其中每一行对应一个词元ID,存储着该词元的向量表示 。当模型接收到一个词元ID时,它就在这个表中“查找”对应的向量。这些嵌入向量是模型参数的一部分,会在训练过程中通过反向传播不断学习和优化,最终使得语义上相关的词元(如“猫”和“狗”)在向量空间中的位置更加接近 。
位置编码 (Positional Encoding)
位置编码是一种向模型输入中注入序列中词元位置信息的技术,以弥补Transformer架构本身无法感知顺序的缺陷。由于Transformer的自注意力机制是并行处理所有词元的,它本身并不具备捕捉序列顺序的能力。如果没有位置信息,“狗咬人”和“人咬狗”这两句话在模型看来可能毫无区别,因为它们包含了完全相同的词元 。为了解决这个问题,需要显式地将词元的位置信息添加到它们的嵌入向量中。在最初的Transformer论文中,研究者提出了一种基于正弦和余弦函数的巧妙方法来生成位置编码 。对于序列中的每个位置t和嵌入向量的每个维度k,位置编码的值由不同频率的正弦和余弦函数确定。这种方法的优点在于,它不仅能为每个位置提供一个唯一的编码,而且能够让模型轻易地学习到相对位置关系,因为任意两个位置之间的编码差异可以通过线性变换来表示。这些固定的位置编码向量会与词元嵌入向量相加,共同作为模型后续层次的输入 。
自注意力机制 (Self-Attention Mechanism)
自注意力机制是Transformer的核心,它允许模型在处理一个词元时,动态地评估和加权序列中所有其他词元对当前词元的重要性。自注意力机制是理解Transformer的关键。对于输入序列中的每一个词元,该机制都会计算一个“注意力分数”,这个分数反映了序列中其他所有词元(包括其自身)对于理解当前词元的重要性 。为了实现这一点,模型会为每个输入词元的嵌入向量学习三个不同的线性变换,从而生成三个新的向量:查询向量(Query, Q)、键向量(Key, K)和值向量(Value, V) 。
可以这样理解这三个向量的作用:
- 查询向量 (Q):代表当前正在处理的词元,它正在“寻找”与之相关的其他词元。
- 键向量 (K):代表序列中所有可被查询的词元,它像是每个词元的“标签”,用于和查询向量进行匹配。
- 值向量 (V):代表序列中每个词元的实际内容或信息。注意力分数的计算过程是:将当前词元的Q向量与序列中所有词元的K向量进行点积运算。这个点积结果衡量了查询与键的相似度或相关性。然后,将这些分数进行缩放和Softmax归一化,得到一组权重。最后,用这些权重对所有词元的V向量进行加权求和,得到的结果就是当前词元经过自注意力计算后的新表示。这个新表示融合了整个序列的上下文信息,并且是根据动态计算出的相关性进行加权的。
缩放点积注意力 (Scaled Dot-Product Attention)
缩放点积注意力是自注意力机制的具体数学实现方式,通过计算查询和键的点积,并进行缩放和Softmax归一化来得到注意力权重。
多头注意力 (Multi-Head Attention)
多头注意力机制通过并行运行多个独立的注意力“头”,让模型能够同时从不同的表示子空间中学习信息,从而捕捉更多样的上下文关系。与其只进行一次自注意力计算,多头注意力机制将Q、K、V向量分别进行h次不同的线性投影(h即“头”的数量),然后将这h组投影后的Q、K、V向量并行地输入到h个独立的缩放点积注意力模块中 。每个“头”可以被看作是在学习一种不同类型的依赖关系。例如,一个头可能专注于学习句法关系(如主谓宾),另一个头可能专注于学习语义相似性,还有一个头可能关注词语的相对位置 。
每个注意力头都会产生一个输出矩阵。最后,将这h个输出矩阵拼接(concatenate)在一起,再通过一次线性投影,将其维度恢复到原始的输入维度,得到多头注意力层的最终输出。这种设计极大地增强了模型的表达能力,使其能够更全面地理解输入序列中复杂的相互作用。
前馈网络 (Feed-Forward Network, FFN)
前馈网络是Transformer层中的一个子模块,它对每个词元的表示进行独立的非线性变换,以增加模型的表示能力。在每个Transformer层中,多头注意力模块的输出会经过一个位置独立的前馈网络(Position-wise Feed-Forward Network) 。这个FFN通常由两个线性层和一个非线性激活函数(如ReLU或GELU)组成。它独立地应用于序列中的每一个位置(词元),但所有位置共享相同的网络权重。这意味着,它对每个词元的处理方式是相同的,但与其他词元无关。
FFN的作用是为模型引入非线性,并对注意力机制整合后的信息进行进一步的加工和提炼。通常,FFN的中间层维度(intermediate size
)会远大于模型的隐藏层维度(hidden size
),例如是其4倍。这种“先扩张再压缩”的结构被认为有助于模型学习更复杂的特征表示。
层归一化 (Layer Normalization)
层归一化是一种用于稳定深度神经网络训练的技术,通过对每个样本的特征进行归一化,使其具有零均值和单位方差。在深度神经网络中,随着层数的增加,每一层输入的分布会不断变化,这种现象称为“内部协变量偏移”(Internal Covariate Shift),它会减慢训练速度并使训练过程不稳定。层归一化(LayerNorm)通过在每个Transformer子层(如自注意力和FFN)的输入上进行归一化来解决这个问题 。具体来说,它会计算单个样本在特征维度上的均值和方差,并用它们来标准化该样本的特征。
在Transformer的实践中,存在两种常见的层归一化应用方式:
- Post-LN:在原始论文中提出,将层归一化应用在每个子层的输出之后(即在残差连接之后)。这种方式在训练初期可能不稳定。
- Pre-LN:后续研究发现,将层归一化应用在每个子层的输入之前(即在进入自注意力或FFN模块之前),可以使训练过程更加稳定,收敛速度更快,因此在现代LLM中更为常用 。
残差连接 (Residual Connections)
残差连接(也称“跳跃连接”)是一种将子层的输入直接加到其输出上的技术,旨在缓解梯度消失问题并促进信息在深层网络中的流动。
一个标准的Transformer层包含两个主要的子层:多头注意力和前馈网络。在每个子层的周围都使用了一个残差连接 。这意味着,子层的输出并不仅仅是其输入经过变换后的结果F(x),而是变换结果与原始输入的和,即F(x)+x。这种设计带来了两个核心好处:
- 缓解梯度消失:在非常深的网络中,梯度在通过反向传播逐层传递时可能会变得非常小,导致底层网络的参数几乎不更新。残差连接提供了一条“捷径”,使得梯度可以直接流向更早的层,从而保证了整个网络的有效训练。
- 保留原始信息:通过直接将输入x添加到输出中,模型可以更容易地学习一个恒等函数(即F(x)=0),这意味着如果某个子层的变换不是必需的,模型可以轻易地“跳过”它,保留原始信息。这使得训练更深的网络变得更加容易。
稠密模型 (Dense Model)
稠密模型是一种标准的神经网络,其在进行每次推理计算时,都会激活并使用模型中的所有参数。
在讨论新兴架构之前,有必要明确其对立面——稠密模型。绝大多数早期的以及部分现代的LLM,如GPT-3,都属于稠密模型。这意味着,无论输入是一个简单的问题还是一个复杂的任务,模型都必须调动其全部的数百亿个参数来进行计算 。这种设计的优点是结构简单,信息在网络中密集流动。然而,随着模型规模向万亿参数级别迈进,其计算成本变得难以承受。为每一个token的生成都动用所有参数,在计算上是极其低效的。这种固有的计算与参数量的线性增长关系,是稠密模型面临的主要瓶颈。
混合专家模型 (Mixture-of-Experts, MoE)
混合专家模型是一种通过将模型的部分层替换为多个并行的“专家”子网络,并在计算时只激活其中一小部分专家,从而在不增加计算量的情况下极大扩展模型参数容量的架构。
MoE架构的核心思想是条件计算(Conditional Computation) 。它挑战了稠密模型“所有参数必须参与所有计算”的假设。在MoE模型中,一些前馈网络层(FFN)被替换为MoE层。一个MoE层由两部分组成:多个并行的“专家”网络(Experts)和一个“门控网络”(Gating Network)或“路由器”(Router) 。
- 专家(Experts):每个专家本身就是一个标准的前馈网络(FFN)。这些专家在功能上可以被认为是特化的,例如,某些专家可能擅长处理与编程相关的知识,而另一些则可能擅长处理文学或历史知识 。
- 门控网络/路由器(Gating Network/Router):这是一个小型的、可训练的神经网络,它的任务是为每个输入的词元(token)动态地决定应该将这个词元发送给哪些专家处理 。
通过这种方式,MoE模型实现了参数量与计算量的解耦。一个模型可以拥有极多的总参数(例如,通过增加专家的数量),但对于每个输入词元,只有一小部分专家(例如,最好的2个)被激活和计算。
稀疏混合专家模型 (Sparse MoE, SMoE)
稀疏混合专家模型是MoE的实际应用形式,其中门控网络仅为每个输入选择少数几个(Top-k, k通常为1或2)专家进行计算,从而实现稀疏激活。
SMoE是使MoE架构在实践中可行的关键 。如果门控网络为每个词元激活所有专家,那就退化成了计算成本更高的稠密模型。通过强制稀疏性(例如,只取门控网络输出概率最高的Top-2专家),SMoE能够以与小规模稠密模型相当的计算成本(FLOPs),获得与超大规模稠密模型相媲美的性能 。例如,Mixtral 8x7B模型,其命名中的“8x”表示它在某些层有8个专家,但对于每个token,路由器只选择2个专家进行计算。因此,它的推理成本大致相当于一个12B-14B参数的稠密模型,但其知识和能力却得益于总计约47B的有效参数量。门控网络的设计至关重要,它不仅要做出正确的路由决策,通常还需要包含一个“负载均衡损失”(load balancing loss),以确保所有专家都能得到充分的训练和利用,避免部分专家“过劳”而另一些“无所事事” 。
Top-k 与 Top-p (核) 采样
Top-k和Top-p是两种改进的采样策略,它们通过限制采样范围来避免从概率极低的词元中采样,从而在保持多样性的同时提高文本的连贯性。
纯粹的温度采样有一个问题:即使概率很低,词汇表中那些不相关或无意义的词元仍然有被选中的可能,这可能破坏文本的质量。Top-k采样和Top-p(核)采样就是为了解决这个问题而提出的 。
- Top-k 采样 (Top-k Sampling): 这种策略非常直接。在采样之前,它首先将词汇表按概率从高到低排序,然后只考虑概率最高的
k
个词元,将其他所有词元的概率设为0。最后,在这个缩减后的k
个词元集合中进行温度采样 。例如,如果k=50
,模型就只会在当前最可能的50个词元中进行选择。这有效地排除了那些明显不合适的词元。 - Top-p (核) 采样 (Top-p / Nucleus Sampling): Top-p采样被认为是一种比Top-k更智能、更动态的策略。它不是选择固定数量的
k
个词元,而是选择一个累积概率刚好超过阈值p
的最小词元集合(这个集合被称为“核”,nucleus)。然后,在这个动态大小的“核”中进行采样 。
例如,如果p=0.9
,模型会从高到低累加词元的概率,直到总和达到0.9为止,然后只在这个词元集合中采样。这种方法的优点在于,当模型对下一个词非常确定时(例如,概率分布很尖锐),这个“核”会很小,可能只有几个词;而当模型不那么确定时(概率分布很平坦),“核”会变得更大,允许更多的多样性。Top-p采样因其自适应性而成为当前许多大型模型(如GPT系列)的默认或推荐采样策略。
检索增强生成 (Retrieval-Augmented Generation, RAG)
RAG是一种将预训练语言模型与外部知识库相结合的框架,它在生成回答前先从知识库中检索相关信息,并将其作为上下文提供给模型,以提高回答的准确性和时效性。
LLM的一个核心局限是其知识是静态的,仅限于其训练数据截止的日期,并且容易产生“幻觉”(即编造事实) 。RAG框架通过将LLM从一个“闭卷考试者”转变为一个“开卷考试者”,有效地解决了这个问题 。
RAG的工作流程通常包括三个步骤 :
- 检索(Retrieve):当收到用户查询时,系统首先使用这个查询(通常将其转换为向量)去一个外部知识库(如公司的内部文档、最新的新闻文章等)中进行搜索,找出最相关的几段文本。
- 增强(Augment):将检索到的这些文本片段与用户的原始查询拼接在一起,形成一个内容更丰富、上下文更明确的“增强提示”(augmented prompt)。
- 生成(Generate):将这个增强提示送入LLM,让模型基于这些新提供的信息来生成最终的回答。
通过这种方式,RAG将模型的生成过程“锚定”在真实、可验证的外部知识上,从而显著减少幻觉,能够回答关于最新事件的问题,并可以方便地通过更新知识库来更新模型的知识,而无需重新训练模型 。
向量数据库 (Vector Database)
向量数据库是一种专门用于存储、索引和高效查询高维向量数据的数据库系统,是RAG框架中的核心检索组件。
为了实现RAG中的高效检索,知识库中的所有文档(或文档块)都需要被预先转换成向量嵌入(Embeddings)。向量数据库就是为处理这些海量的高维向量而设计的 。与传统的关系型数据库按行和列存储结构化数据不同,向量数据库使用特殊的索引算法(如HNSW、IVF-PQ)来组织向量数据。这些算法使得数据库能够极快地执行“近似最近邻搜索”(Approximate Nearest Neighbor, ANN),即在数百万甚至数十亿的向量中,迅速找到与给定查询向量最相似(例如,余弦距离最近)的向量。这使得RAG系统能够实时地为用户查询找到最相关的上下文信息,是实现高效检索的关键基础设施。
量化
量化是一种模型压缩和优化技术,它通过降低模型权重和激活值的数值精度(如从32位浮点数降至8位或4位整数)来减小模型大小、降低内存消耗并加速计算。
大语言模型的权重通常以高精度浮点数(如32位FP32或16位FP16)存储。量化(Quantization)技术旨在通过使用更少的比特位来表示这些数值,从而实现模型的压缩和加速 。
例如,一个32位的浮点数可以表示超过40亿个不同的值,而一个8位的整数只能表示256个值。量化过程就是找到一种映射关系,将原始的高精度数值范围映射到低精度的离散值上。这样做的好处是显而易见的:
- 减小模型体积: 将权重从FP16(16位)量化到INT8(8位)或INT4(4位),模型的存储大小可以减少2倍或4倍。
- 降低内存带宽需求: 更小的数据类型意味着在内存和计算单元之间传输数据更快。
- 加速计算: 许多现代硬件(如GPU和TPU)对低精度整数运算有专门的优化,其计算速度远超浮点数运算。
当然,量化也会带来精度损失,这可能会影响模型的性能。因此,量化技术的核心挑战在于如何在最大化压缩和加速效果的同时,最小化对模型准确率的影响。常见的量化方法包括训练后量化(PTQ)和量化感知训练(QAT) 。
剪枝
剪枝是一种模型压缩技术,它通过识别并移除神经网络中冗余或不重要的参数(权重)或结构(如注意力头、神经元),来减小模型尺寸和计算量。
研究发现,大型神经网络中存在大量的参数冗余,即许多权重对模型的最终预测贡献甚微。剪枝(Pruning)技术就是利用这一点,通过系统性地移除这些“可有可无”的参数或结构,来创建一个更小、更高效的模型 。
剪枝主要分为两类:
- 非结构化剪枝 (Unstructured Pruning): 这种方法移除的是单个的、独立的权重。通常,它会根据权重的大小(magnitude-based pruning,即移除绝对值最小的权重)来决定哪些权重不重要。这可以实现非常高的稀疏度(即模型中零值的比例),但由此产生的稀疏权重矩阵在通用硬件(如GPU)上难以实现有效的加速,因为它破坏了规整的矩阵结构 。
- 结构化剪枝 (Structured Pruning): 这种方法移除的是更大粒度的、结构化的单元,例如整个神经元(即权重矩阵的整列)、注意力头,甚至是整个网络层。虽然结构化剪枝通常无法达到非结构化剪枝那样高的稀疏度,但由于它保留了规整的矩阵结构,因此可以在标准硬件上直接带来推理速度的提升和内存的节省 。
剪枝后的模型通常需要进行一轮短暂的“再训练”(retraining)或微调,以恢复因移除参数而造成的性能损失。
知识蒸馏
知识蒸馏是一种模型压缩技术,它通过训练一个小型“学生”模型来模仿一个大型“教师”模型的行为,从而将知识从大模型迁移到小模型中。
知识蒸馏(Knowledge Distillation)是一种强大的模型压缩和知识迁移方法 。其核心思想是,一个大型、复杂的“教师”模型(teacher model)所学到的知识,不仅仅体现在它对正确答案的预测上,更体现在它对所有可能答案给出的完整概率分布上。这个概率分布(通常是Softmax层的输出)包含了关于不同类别之间相似性的“暗知识”(dark knowledge)。
例如,一个图像分类的教师模型在看到一张猫的图片时,可能给“猫”90%的概率,给“狗”8%的概率,给“汽车”只有0.01%的概率。这个输出告诉我们,模型认为这张图片像猫,也有点像狗,但绝对不像汽车。
知识蒸馏的过程就是训练一个更小的“学生”模型(student model),使其不仅学习拟合真实的硬标签(这张图是猫),更要学习拟合教师模型输出的这种软化的、更丰富的概率分布 。通过模仿教师的“思考过程”,学生模型能够以更少的参数学到更有效的知识,从而在保持较高性能的同时,实现模型的小型化和高效化。
普通人如何抓住AI大模型的风口?
领取方式在文末
为什么要学习大模型?
目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。
目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!
最后
只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!
在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
大模型全套学习资料展示
自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。
希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!
01 教学内容
-
从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!
-
大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
02适学人群
应届毕业生: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
vx扫描下方二维码即可
本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!
03 入门到进阶学习路线图
大模型学习路线图,整体分为5个大的阶段:
04 视频和书籍PDF合集
从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)
新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
05 行业报告+白皮书合集
收集70+报告与白皮书,了解行业最新动态!
06 90+份面试题/经验
AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)
07 deepseek部署包+技巧大全
由于篇幅有限
只展示部分资料
并且还在持续更新中…
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐
所有评论(0)