大语言模型的技术发展历程,从N-gram到DeepSeek-R1

本文主要从技术角度回顾自然语言处理NLP领域的发展历程,介绍各个模型的思路和创新点,聚焦NLP经典模型和技术突破的理解,不深入数学推导过程

前言

根据整个自然语言处理NLP领域的技术发展,可以将其分为四个技术阶段:统计语言模型神经网络模型预训练语言模型PLM大型语言模型LLM

下文将按照这四个主要发展阶段各自介绍涌现出的经典模型和技术

统计语言模型阶段

统计语言模型主要依靠统计学方法,通过前文预测后续的单词,代表模型即N-gram

N-gram

核心思想是通过统计词序列的概率来预测下一个词,当前词的概率只依赖于前N−1个词

例如,当需要预测“狗坐在__”之后的下一个字词是,根据语料库中出现的次数,“狗坐在地(板上)”是出现频率最高的,那么我们就可以选择“地”作为预测的下一个字词

可以类比输入法里的后续字词推荐,会根据你此前输入的文本统计下一个字的概率并排序

很显然,这种方法无法捕捉长距离依赖关系,且数据稀疏问题严重

神经网络模型阶段

神经网络模型阶段一般会将任务拆分为词嵌入(embedding)和神经网络两个步骤,前者将单词转化为可以被计算处理的向量,后者在具体的任务上训练好模型

词嵌入模型

对于输入的字符(token),我们需要将他们处理成可以被计算机处理运算的数字形式,也就是向量,最开始我们使用独热码one-hot,但显然在字符数量增多以后独热码的存储和计算都极其不方便,我们考虑在实数域内的多维向量,这样可以在固定的维数内表征所有字符

对于输入模型中的字符,我们希望转化后的词向量能够尽可能全面的表征字符的语义特征,并让字符向量之间相互关联,用一个经典的例子来说明,“ 国王 - 男人 + 女人 = 女王 ”,越精准全面的词向量表征越有利于后续的下游任务处理

由此我们诞生了word2vec和GloVe等经典词嵌入模型

Word2vec

word2vec模型的思想很简单,每个单词都对应一个向量,那么一个句子中上下文的单词向量应该可以预测出中心词的概率,同理,一个句子的中心词应该也可以用来预测其上下文单词出现的概率,这分别是CBoW和Skip-gram的思路

基于这一思想,定义好表征上下文/中心词单词出现概率的计算方法(softmax)和表征计算误差的损失函数后,就可以通过迭代运算得到每个字符的向量表征

GloVe

与word2vec使用上下文窗口来预测不同,GloVe使用全局单词共现矩阵来计算词向量

基于这些词嵌入模型后,在下游任务的处理上,既可以直接使用训练好的模型参数进行处理,也可以利用模型重新学习一个embedding层,此后的语言任务基本都采用词嵌入+后续模型这个模式来完成(包括大语言模型)

序列模型

将单词转化为词向量后,在下游任务中,就需要用神经网络模型来基于单词序列解决特定语言任务,例如文本分类和机器翻译等

RNN系列模型

循环神经网络RNN系列模型曾是神经网络阶段NLP领域的主流模型,一经提出就受到广泛的使用,其思路来自于顺序文本的语义连贯性,根据输入文本顺序处理运算每个字符的词向量,同时每层使用相同的神经网络,训练同一个参数矩阵,通过上层结果和新的输入变量共同预测结果

RNN网络每层输出预测的概率向量y_t,由隐藏向量h_t经过概率公式转化而来,h_t则由前一个字符的隐藏向量h_{t-1}以及当前字符的词向量x_t共同矩阵运算得到

由于基础的RNN无法记忆太早之前的单词信息,模型往往不能在长句中维持精准性,GRU和LSTM模型又在每个神经元进行了进一步的改进,加入了各种门控参数,优化了每个神经元内更新隐藏向量的算法

编码器-解码器模型 

RNN系列模型的输出结果是隐藏层向量或者概率预测向量,在处理文本分类等分类任务时可以直接接入一个分类器完成训练,在处理机器翻译等生成任务时则不能直接得到输出结果,由此诞生了编码器-解码器模型

由编码器将输入序列压缩成指定长度的向量,解码器再将向量转化成输出序列

在解码器中,每一层的计算不仅依赖上一层,还依赖编码器的结果向量和上一层输出的单词,最终按顺序逐个输出字符

注意力机制

人类在处理大量信息时会更加关注更具价值的信息,注意力机制也是由此被设计出,在处理信息的时候,将注意力放在需要关注的信息上,对于其他无关的外部信息进行过滤,越重要或者越相关的信息就赋予越高的权重

对每一层的输入向量,训练出各自的权重矩阵,得到用于计算注意力权重的Q,K,V三个向量,依据它们可以计算每个token之间的关联性,从而加权计算出新的隐藏层向量

注意力机制有着众多优点,其高可解释性就是其一,例如左下图的例子,注意力机制在处理这个句子的时候,为每个单词计算隐藏向量,得到每个单词对应的键值矩阵,通过注意力权重算法可以计算出每个单词的隐藏向量和其他单词的关联性,可以看到 " it " 和 " the animal " 的关联性最高,证明了注意力机制的语义理解能力

        

多头注意力机制:对输入的特征向量训练多个Q,K,V权重矩阵,分别关注不同维度的语义信息,例如右上图表征的是八个不同的注意力权重矩阵训练得到的词义关联信息

Transformer模型

2017年Google通过《Attention is All You Need》一文发布了transformer模型,不再使用顺序的LSTM模型而仅仅使用注意力机制,实现了模型性能的突破,其原因就在于注意力机制的另外两大优点——长信息处理能力和并行化能力

LSTM模型因为需要顺序计算更新隐藏层的神经元,无法并行计算,导致训练缓慢,而且顺序处理也导致其对较远的单词关系比较乏力,而注意力机制不仅可以并行运算每一层的模型,还能够通过计算注意力权重来捕获长文本中不同位置单词的信息,因此成为了语言模型的新趋势

transformer模型作为序列到序列模型,总体依旧使用编码器-解码器结构,一共使用了6层编码器和6层解码器,每层编解码都选择多头注意力机制完成,编码器每层包含一个多头子注意力模块和一个前馈网络,解码器则在此基础上又添加了一个“encoder-decoder attention”层,用于捕捉解码器隐藏层结果对编码器结果的注意力权重(关联性),此外编解码器都还加入了残差和归一化流程,形成了transformer模型的基础

模型还提出了独特的用正弦函数进行位置编码的方式,用来补足注意力机制对于文本顺序信息的关注,其词嵌入模型也是独立训练,最终形成了引领语言模型进入新时代的transformer模型

预训练语言模型阶段

因为transformer模型的提出,其并行计算的属性让自然语言处理研究者们可以开始扩大模型的参数和训练数据规模,以此来达到更好的模型效果,只要有足够的算力资源和高质量的训练语料数据,模型的性能就可以稳定提升,语言模型研究来到新的阶段

预训练语言模型阶段开始考虑在特定的任务中训练成本和训练数据稀缺的问题,采用预训练+微调的模式,节约在具体语言任务上所需要的计算成本

预训练(Pre-training):在大规模无标注文本数据上训练模型,学习通用的语言表示
微调(Fine-tuning):在特定任务的有标注数据上对模型进行微调,使其适应具体任务

例如模型先在数亿tokens规模训练数据和参数的大模型上得到一些通用的语言能力,然后再专门使用一些小规模(数千tokens)的高质量数学竞赛题解语料来专项训练模型的数学竞赛解题能力

ELMo模型

发布于2018年,使用双向LSTM模型(分别按照语句正序和逆序逐词训练的LSTM模型,用于捕捉双向的语义关联信息)在预测任务上进行语言建模的预训练模型,开启了预训练语言模型的篇章

动机是每个单词都有多种含义,具体意思应该取决于它的上下文语境,即需要语境化的词嵌入

ELMo模型通过在大规模语料训练集上预训练,得到了包含更丰富语义的词嵌入模型,随后在具体语言任务中只需要微调就可以完成

当然,由于其使用的是LSTM模型,仍具有此前所说的局限性,其性能被同年后续发布的GPT模型和BERT模型所超越

GPT模型

2018年OpenAI提出了GPT模型,其仅使用transformer模型的decoder组件,使用masked self-attention和自动回归技术完成语言建模

自动回归指的是在生成时,GPT模型与transformer模型不同,GPT一次只生成一个单词(token),而生成的新单词立马加入输入队列,组合成为模型下一个输出单词的输入

与transformer相同的是GPT也使用了masked self-attention模块,注意这与后文BERT使用的掩码语言模型MLM不同,GPT和transformer在训练时会遮住当前向量按语句顺序的后续单词向量,也就是说训练时只计算当前字符和其前文字符的注意力权重,也就是说我们每生成一个新的字词只考虑前面已经生成的而不包括后面还没说出来的

这里给出参数规模,GPT-1使用12层解码器,1.17亿参数,GPT-2小型使用12层解码器,超大型使用48层解码器(15亿参数),GPT-3小型12层,大型96层,超大型100层以上(未公开模型)共1750亿参数

BERT模型

Google的BERT模型的提出在OpenAI的GPT模型之后,提出时将GPT-1当作竞争模型进行了性能对比,因此可以看到二者的大致规模是相似的

延续前文提到的使用transformer模型的理解,BERT基于其进行改进,仅使用transformer模型的encoder组件来完成预训练语言模型,BERT在对编码器的改进设计上使用掩码语言模型 Masked Language Model,在语言建模任务中随机mask掉输入序列中15%的单词,要求模型预测缺失的单词,以此完成语言建模

在使用上,BERT与此前的词嵌入模型一样,既可以直接使用训练好的模型参数进行处理,也可以利用模型重新学习一个词嵌入层

BERT聚焦于编码器,预训练出的模型在文本的语义理解方面有着极好的表现,其训练出的特征向量只需要再外接一层分类器就可以完成高准确率的文本分类任务,发布后BERT模型迅速普及于各种下游任务并带来了性能的提升

这里给出参数规模,BERT-Base使用12层编码器,共1.1亿参数(用于和GPT-1比较能力),BERT-Large使用24层编码器,共3.4亿参数(用于各个下游任务中刷新sota数据)

微调技术

前文不断提到我们用预训练语言模型+微调的模式完成语言任务,像ELMo,BERT和GPT模型,作为预训练语言模型,都需要经过微调才能在具体的语言任务上得到进一步的性能提升(例如GPT-3经过一系列微调得到ChatGPT)

微调是迁移学习的一种具体实现方式,核心思想是将源任务(通常是大规模数据集)中学到的知识迁移到目标任务上,以提升目标任务的性能

具体步骤:
1.选择预训练模型:选择一个在源任务上表现良好的预训练模型(如BERT)
2.调整模型结构:根据目标任务的需求,可能修改模型的最后几层(如分类层)
3.加载预训练参数:使用预训练模型的参数初始化模型
4.训练模型:在目标任务的数据上继续训练模型,通常使用较小的学习率

就好比学生先在学校里学习了许多数学的知识,包括各种概念和公式,但让他做几道应用题他不一定能做好,因为他还需要知道怎么具体应用这些知识,比如怎么套用公式,如果先给他讲几道题告诉他正确答案,他就能学会怎么做题了

大型语言模型阶段

大型语言模型则是在预训练语言模型的基础上进一步作出改进,以生成更自然的高质量文本,最终能够直接完成众多语言任务

幻觉

由于模型的结构选择不同,GPT和BERT走向了不同的发展,使用编码器的BERT模型强化了语义的理解,并在各个下游任务横扫之际,使用解码器的GPT模型强化了生成能力,却遇到了生成模型的一大难题——幻觉

幻觉,即语言模型生成与事实不符、无意义或与输入提示矛盾的内容,给人一种“一本正经地胡说八道”的印象,GPT-3在训练完成后有着很强的生成能力,可以轻松根据输入(即提示prompt)自由生成大量内容,但确实因为严重的幻觉导致没法真正投入应用之中

对于幻觉问题,OpenAI在2022年给出了解决方案,即监督微调和基于人类反馈的强化学习

监督微调(SFT):类似于指令微调,由人类专家设计高质量的输入-输出对和演示,然后在此基础上训练模型,以教它如何遵循指令并生成所需的输出,使模型擅长在对话中保持上下文和连贯性,实现更引人入胜且更像人类的交互

基于人类反馈的强化学习(RLHF):模型生成多个输出后,并让人类专家对模型输出的质量进行排名,以此指导模型进行强化学习,生成不仅有用,而且诚实和无害的响应

ChatGPT

2022年年初,OpenAI发布在GPT-3基础上经过SFT优化的InstructGPT模型,随后在2022年年底,发布了ChatGPT,其模型为在InstructGPT基础上又经过RLHF优化的GPT-3.5,彻底展现了GPT系列对话式人工智能的潜力,将NLP领域的研究潮流彻底引导向通用人工智能AGI这一领域

随后的OpenAI继续在AGI领域发展,不断发布更新版本的多模态大语言模型MLLM,2023年发布GPT-4和GPT-4V(结合计算机视觉的多模态模型),2024年发布GPT-4o(整合音频和视频的全模态模型)

提示工程

随着大语言模型的高速发展,从业者们发现由于大规模算力资源和高质量训练数据的限制,普通研究人员开始不具备参与模型开发的条件,此时在具体的语言任务中,对于如何更高效的利用已经训练好的大语言模型,诞生了一种新的技术或者说思想,就是提示工程prompt engineering

通过提示词(Prompts),即我们提供给LLM的输入,可以获得大量结果,但结果的质量与提供的信息数量和完善度有关,可以通过完善指令和问题,添加上下文、示例等详细信息来更好地指导模型

许多大模型公司都开放了可以自由调试参数和输入的playground,用户可以在网页上体验不同参数和提示词带来的输出差异

提示工程的发展已经有了许多共识,将提示词的基础元素定义为指令,上下文,输入数据,输出指示,越准确和详尽的提示词就能得到越高质量的输出,同时也有许多技巧,包括零样本提示,少样本提示,链式思考提示(CoT),检索增强提示(RAG)等

先不对这些具体的提示工程技巧进行深入,我们主要关注其中的链式思考提示技巧,这对大语言模型的后续发展具有启发意义

我们可以看到,对于上图所示的同样一个问题,输入的格式都是 “ 示例 + 问题 ”,如果示例中我们直接给出答案,模型就会输出错误的答案,而如果我们在示例中向模型演示了思考的逐步计算过程,模型也可以通过逐步计算得到正确的答案,这就是思维链的作用,提示工程的一个重要发现就在于我们需要尽可能的引导大语言模型自主分解问题并按照思维链逐步思考,最终生成正确的答案

下面演示两种链式思考提示的技巧:

我们看到问题为3+2,前面提到过,模型的输出是逐个预测下一个出现的字符,原本模型的最高概率字符是直接给出答案5,而代表模型的思考过程的字符概率较低

左图的方法是在提问的示例中给出思维链,引导模型开始思考;右图的方法是直接让模型一步步思考,两种方法最终都可以让模型的输出有更大概率给出思维链,从而提升回答的质量

推理模型

2024年9月,OpenAI团队发表《Learning to reason with LLMs》,将模型的改进方向放在提升推理能力上,通过结合思维链CoT和强化学习完成对推理能力的进一步提升,发布OpenAI o1模型(未开源),o1在回答问题前会进行深入思考并给出完整逻辑链,文章给出了对模型推理能力的测试结果,进一步刷新了大模型的逻辑,数学,代码等方面能力,提出并验证了将模型从训练时间计算转向测试时间计算的思路和可行性

训练时间计算(train-time compute):为了提高大模型的性能,在预训练阶段会不断扩大其模型参数数量,数据集token数量,以及训练时浮点运算次数,这些在训练期间完成的计算就是训练时间计算

提升训练时间计算,也就是扩大模型规模能够直接导致模型性能的提升,但是在2024年,模型规模稳步增长,收益回报却在降低,也许我们需要寻找新的技术

测试时间计算(test-time compute):允许模型在推理过程中思考更长的时间,也就是生成更多的代表思考过程的tokens

OpenAI验证了增加训练时间计算和测试时间计算都可以带来模型能力的稳定提升

随后各个大模型研究团队也纷纷开始尝试如何提升模型的思维链能力,许多尝试后将大致的优化思路确定为通过强化学习方法不断生成并选择思维链

DeepSeek

DeepSeek公司在2024年12月26日发布开源推理模型DeepSeek-V3,随后2025年1月31日发布DeepSeek-R1,正式与OpenAI o1同台竞争,对整个领域产生极大影响

DeepSeek-V3

DeepSeek-V3基于transformer架构做出了一系列改进措施,主要包含混合专家模型(提高计算效率),多头潜在注意力机制(压缩计算开销),负载均衡策略(稳定训练效果),多token预测技术(增强生成能力),强化学习算法(增强推理能力)等

为了降低训练所需要的成本,尽可能压缩模型的计算量,DeepSeek在模型中使用了两个核心技术:混合专家模型(Mixture-of-Experts, MoE)多头潜在注意力机制(Multi-head Latent Attention, MLA)

MoE模型的思路是培养多个不同领域的专家(模型网络),当需要解决问题时把问题分成不同任务分配给不同的专家,其中“专家”就是代替传统transformer架构中前馈网络(FFN)层的稀疏MoE层,包含若干(8个)独立的神经网络(通常就是FFN层),而分配任务则由门控网络来完成,其决定哪些tokens被分配到哪些专家,MoE模型依靠稀疏性减少了计算开销提高了计算效率

通常的混合专家模型 (MoE) 训练中,门控网络往往倾向于主要激活相同的几个专家,所有的令牌都被发送到只有少数几个受欢迎的专家,那么训练效率将会降低,为此DeeppSeek模型提出无损辅助负载均衡策略,引入了一个辅助损失,旨在确保所有专家接收到大致相等数量的训练样本,从而平衡专家之间的选择

MLA技术通过低秩联合压缩技术,将多个注意力头的键(Key)和值(Value)映射到一个低维的潜在空间中,从而减少KV的存储需求和矩阵运算维度,这种方法显著降低了推理时的显存占用和计算开销,同时在性能上与传统的多头注意力机制保持相当

为了提升长文本生成任务的表现,提出多Token预测技术(Multi-Token Prediction, MTP) ,该技术一次预测多个未来的token来增强文本生成能力

为了优化推理能力,DeepSeek-V3通过强化学习方法引导模型生成更长的思维链来优化模型

DeepSeek-V3舍弃监督微调步骤,直接使用强化学习进行训练,使用组相对策略优化(GRPO),该算法会增大/减小引导向正确/错误答案的选择(一组tokens或者推理步骤),模型设置了准确性奖励和格式奖励,前者测试答案准确性,后者则仅仅检查模型的输出是否包含<think>和<answer>标签,格式奖励可以间接鼓励模型生成更长更复杂的推理过程

验证发现DeepSeek-V3具备了高级推理能力,包括自我反思和自我验证等,但可读性差,更像是混合语言

DeepSeek-R1

DeepSeek-R1在V3的基础上采用了一系列优化方案,构建了更稳定的推理过程

1.通过一个小型高质量推理数据集(5k tokens)进行微调,以防止冷启动问题导致的可读性差

2.在强化学习过程中添加一个新的语言奖励,用来确保目标语言保持一致

3.使用V3和训练数据生成800k个高质量的推理数据集(600k含推理样本和200k无推理样本),随后对模型进行监督微调

4.在强化学习过程中添加新的偏好奖励,使答案与人类偏好保持一致

在V3的基础上经过一系列监督微调和强化学习,最终就形成了DeepSeek-R1模型

蒸馏技术

DeepSeek-R1拥有671B(6710亿)规模的巨量参数,很难在消费者硬件上运行,因此DeepSeek使用知识蒸馏技术(distill)将模型能力提炼到一系列规模更小的模型上,以供普通用户使用,例如阿里的千问系列Qwen-32B

蒸馏:模型压缩技术,旨在将一个大型、复杂的模型(教师模型)的知识迁移到一个更小、更高效的模型(学生模型)中

具体步骤:
1.训练教师模型:训练一个大型高性能模型(教师模型)
2.生成软标签:使用教师模型对训练数据生成软标签(输出概率分布)
3.训练学生模型:让学生模型学习教师模型的软标签,同时也可以结合真实标签
4.优化:通过损失函数衡量学生模型与教师模型的输出差异,并进行优化

参考文献

下面是一些涉及具体技术细节的参考文献,不全但这些文献都有很高质量

The Illustrated Transformer – Jay Alammar – Visualizing machine learning one concept at a time.

The Illustrated BERT, ELMo, and co. (How NLP Cracked Transfer Learning) – Jay Alammar – Visualizing machine learning one concept at a time.

The Illustrated GPT-2 (Visualizing Transformer Language Models) – Jay Alammar – Visualizing machine learning one concept at a time.

Prompt Engineering Guide | Prompt Engineering Guide

Learning to reason with LLMs | OpenAI

A Visual Guide to Reasoning LLMs - by Maarten Grootendorst

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值