点击“AladdinEdu你的AI学习实践工作坊”注册即送-H卡级别算力沉浸式云原生集成开发环境80G大显存多卡并行按量弹性计费教育用户更享超低价。一、引言语言模型的任务定义与核心价值在自然语言处理Natural Language Processing, NLP的众多基础任务中语言模型Language Model, LM占据着极为特殊的地位。它既是一个独立的研究方向也是机器翻译、语音识别、文本生成、信息检索等几乎所有高层NLP任务的基石。简单来说语言模型的任务是给定一个词序列或字符序列计算该序列作为一句自然语言出现的概率。用数学语言表达假设我们有一个句子 ( S ) 由词 ( w_1, w_2, …, w_n ) 顺序构成语言模型希望估计联合概率 ( P(w_1, w_2, …, w_n) )。根据概率链式法则该联合概率可以分解为条件概率的乘积[P(w_1, w_2, …, w_n) P(w_1) \cdot P(w_2 | w_1) \cdot P(w_3 | w_1, w_2) \cdots P(w_n | w_1, …, w_{n-1})]因此语言模型的核心就转化为如何准确估计给定历史上下文时下一个词出现的条件概率( P(w_k | w_1, …, w_{k-1}) )。为什么这个任务如此重要因为任何需要“理解”或“生成”自然语言的系统本质上都需要对语言序列的合理性做出判断。例如语音识别对于发音相同的一段音频“认识” vs “人世”哪个更可能是正确的文本语言模型会赋予前者更高的概率。机器翻译将英文“He kicked the bucket”译为中文是“他踢了水桶”还是“他去世了”语言模型结合上下文能做出更合理的选择。文本生成当自动续写“今天天气真好我们一起去…”时下一个词应该是“公园”还是“计算”语言模型会倾向于符合日常语言习惯的词。语言模型的演进历史几乎就是NLP学科从“基于规则”到“基于统计”再到“基于深度学习”发展的缩影。本文将按照时间顺序详细阐述从n-gram到现代预训练模型的理论演进分析每一步变革背后的数学动机和技术突破。二、统计语言模型的基石n-gram及其平滑技术2.1 马尔可夫假设与n-gram定义在早期的统计语言模型中研究者面临的最大挑战是参数空间过大。要准确估计 ( P(w_k | w_1, …, w_{k-1}) )如果词典大小为 ( |V| )那么长度为 ( k-1 ) 的历史序列共有 ( |V|^{k-1} ) 种可能这是一个天文数字。此外绝大多数长序列在训练语料中从未出现导致概率估计为零——但未出现的序列不一定是不可能的。为了简化问题马尔可夫假设Markov Assumption被引入一个词出现的概率只依赖于它前面的有限个词而与更早的上下文无关。基于这个假设我们得到了n-gram模型。定义n-gram模型假设当前词只依赖于前面 ( n-1 ) 个词即[P(w_k | w_1, …, w_{k-1}) \approx P(w_k | w_{k-n1}, …, w_{k-1})]当 ( n2 ) 时称为bigram模型依赖前1个词( n3 ) 时称为trigram模型依赖前2个词( n1 ) 时称为unigram模型此时词与词之间完全独立。以bigram为例整个句子的概率简化为[P(w_1, w_2, …, w_n) \approx \prod_{k1}^n P(w_k | w_{k-1})]其中( w_0 ) 通常定义为句子开始标记s句子结束后有/s标记。2.2 参数估计极大似然估计在n-gram模型中条件概率 ( P(w_i | w_{i-n1}, …, w_{i-1}) ) 通过极大似然估计Maximum Likelihood Estimation, MLE从训练语料中计算[P(w_i | w_{i-n1}, …, w_{i-1}) \frac{\text{Count}(w_{i-n1}, …, w_{i-1}, w_i)}{\text{Count}(w_{i-n1}, …, w_{i-1})}]这里分子是n-gram序列在语料中出现的次数分母是 ( n-1 )-gram历史序列出现的次数。从直观上看这就是频率的比值。例如在语料中“白色的猫”出现了10次“白色的”出现了20次那么 ( P(\text{猫} | \text{白色的}) 10/20 0.5 )。2.3 n-gram面临的核心问题尽管n-gram模型简洁直观但在实际应用中面临三大挑战问题一数据稀疏Data Sparsity即使经过海量语料训练绝大多数n-gram组合仍然不会出现。例如一个词汇量为5万的语料中理论上可能的trigram有 ( 5 \times 10{43} 1.25 \times 10^{14} ) 种而实际语料只能覆盖极小一部分。未出现的n-gram会被MLE赋予零概率导致包含这些序列的整句概率为零这显然不合理。问题二存储与计算开销n-gram模型需要存储所有出现过的n-gram计数。当n增大如5-gram或6-gram且语料规模巨大时存储空间可能达到数百GB甚至TB级别而且随着语料增长呈线性增长。问题三泛化能力不足n-gram模型本质上是“记忆”训练语料中的片段。对于与训练语料略有不同的新序列例如同义词替换或语序微调模型无法自动推广。它不具备对语言规律如语法、语义相似性的抽象理解能力。2.4 平滑技术解决零概率问题为了解决数据稀疏导致的零概率问题研究者提出了多种平滑技术Smoothing。其核心思想是从高频n-gram的计数中“借用”一部分概率质量分配给未见或低频的n-gram。加一平滑Add-one / Laplace Smoothing最简单的方法每个n-gram的计数都加上1。设总词表大小为 ( |V| )则[P_{\text{add-1}}(w_i | w_{i-1}) \frac{\text{Count}(w_{i-1}, w_i) 1}{\text{Count}(w_{i-1}) |V|}]加一平滑的缺点是对高频n-gram的概率估计偏差较大且将过多概率分配给了零计数项。古德-图灵估计Good-Turing Estimation核心思想用出现次数为 ( r1 ) 的n-gram的总体频率来重新估计出现次数为 ( r ) 的n-gram的概率。设 ( N_r ) 表示在语料中恰好出现 ( r ) 次的n-gram的个数则调整后的计数为[r^* (r1) \frac{N_{r1}}{N_r}]古德-图灵估计对低频n-gram的调整效果较好但要求 ( N_r ) 平滑通常需要对高阶r进行对数线性拟合。卡茨退避法Katz Backoff一种实用且广泛采用的方法当高阶n-gram如trigram的计数足够高时直接使用MLE估计当计数较低时退回到低阶n-gram如bigram或unigram的估计并乘以一个归一化系数以保证概率总和为1。Kneser-Ney平滑目前最有效的n-gram平滑方法之一。它的创新在于对于低频n-gram不是简单使用低阶概率而是考虑该词在不同上下文中的“延续性”continuation probability。一个词如果在多种不同上下文中出现它更有可能出现在新的上下文里。Kneser-Ney平滑公式修正版[P_{\text{KN}}(w_i | w_{i-1}) \frac{\max(\text{Count}(w_{i-1}, w_i) - d, 0)}{\text{Count}(w_{i-1})} \lambda(w_{i-1}) \cdot P_{\text{cont}}(w_i)]其中 ( d ) 是折扣系数通常为0.75( \lambda ) 是归一化权重( P_{\text{cont}}(w_i) ) 是词的延续概率。尽管平滑技术极大改善了n-gram模型的实用性但它终究是在统计框架内的修补无法从根本上解决泛化能力不足和无法捕捉长距离依赖的问题。随着深度学习时代的到来神经语言模型Neural Language Model开始崭露头角。三、从离散符号到连续空间神经语言模型的诞生3.1 分布式表示的思想渊源在进入神经语言模型之前有必要先理解一个关键概念分布式表示Distributed Representation。传统统计语言模型将每个词视为一个独立的符号如“猫”是ID 1024“狗”是ID 2048词与词之间在向量空间中没有任何先验的相似性关系。这种“独热编码”One-hot Encoding导致每个词都是正交的无法表达“猫”和“狗”都是宠物且语义相近这一事实。1986年认知心理学家杰弗里·辛顿Geoffrey Hinton提出了“分布式表征”的概念一个概念由多个维度的特征共同表示每个特征都可以参与多个概念的表示。例如“猫”可能由“有毛、四条腿、哺乳、喵喵叫、宠物”等特征构成“狗”则共享“有毛、四条腿、哺乳、宠物”只在“汪汪叫”上不同。这种表示方式使得相似概念的词在特征空间中距离更近为模型的泛化提供了基础。3.2 Bengio等人的神经概率语言模型2003真正将分布式表示与语言模型结合的开创性工作是Yoshua Bengio等人在2003年发表的论文《A Neural Probabilistic Language Model》。这项工作首次提出了神经概率语言模型Neural Probabilistic Language Model, NPLM标志着神经语言模型的正式诞生。模型结构NPLM的目标是学习一个函数 ( f(w_t, …, w_{t-n1}) P(w_t | w_{t-1}, …, w_{t-n1}) )其中 ( n ) 是历史窗口长度。该函数由两部分组成词嵌入层Word Embedding Layer将每个词 ( w ) 映射为一个连续实值向量 ( C(w) \in \mathbb{R}^d )其中 ( d ) 是嵌入维度通常远小于词表大小 ( |V| )。矩阵 ( C ) 是待学习的参数大小为 ( |V| \times d )。前馈神经网络层将上下文中 ( n-1 ) 个词的嵌入向量拼接成一个 ( (n-1) \times d ) 维的输入向量 ( x )然后通过一个或多个隐藏层最后经过softmax输出层得到词表上的概率分布。数学表达式为[x [C(w_{t-n1}); …; C(w_{t-1})] \quad (\text{向量拼接})][h \tanh(H x b_1)][y U h b_2][P(w_t | w_{t-1}, …, w_{t-n1}) \frac{\exp(y_{w_t})}{\sum_{i1}^{|V|} \exp(y_i)}]其中( H, U, b_1, b_2 ) 是神经网络的权重和偏置tanh是激活函数。整个模型的所有参数词嵌入矩阵 ( C )、隐藏层权重、输出层权重通过梯度下降联合优化目标函数是训练语料的负对数似然[\mathcal{L} -\sum_{t} \log P(w_t | w_{t-1}, …, w_{t-n1})]突破性意义连续空间表示词被映射到低维稠密向量语义相近的词在嵌入空间中距离相近。模型可以自动发现词之间的相似性例如训练后“猫”和“狗”的嵌入向量会非常接近。泛化能力由于使用了连续表示即使一个n-gram从未出现在训练语料中只要它的历史词与某个已见n-gram的历史词在嵌入空间上相近模型就能给出合理的概率估计。例如训练中见过“白色的小猫”从未见过“白色的小狗”但模型能推断出“白色的小狗”也是合理的。这是n-gram模型无法做到的。端到端学习词嵌入不再需要单独训练如先前的Latent Semantic Analysis而是与语言模型任务联合优化使得嵌入表示更适应目标任务。局限性固定窗口大小( n ) 限制了模型能捕捉的上下文长度通常 ( n \le 7 )无法处理真正的长距离依赖如跨句子或跨段落的指代关系。参数数量与 ( n ) 成正比增大窗口会线性增加输入维度导致参数激增。计算开销大softmax层需要对整个词表进行归一化当词表规模达到几十万时训练和推理都相当昂贵。3.3 词嵌入技术的独立发展Word2Vec与GloVe在NPLM之后词嵌入作为副产品被证明极具价值。2013年Mikolov等人提出的Word2Vec模型极大地推动了词嵌入技术的普及。Word2Vec包括两种训练框架CBOWContinuous Bag-of-Words用上下文词的嵌入平均来预测中心词。Skip-gram用中心词的嵌入来预测上下文词。与NPLM不同Word2Vec舍弃了复杂的神经网络结构采用简单的对数线性模型仅有一层投影层并使用负采样Negative Sampling或层次化SoftmaxHierarchical Softmax来加速训练。这使得Word2Vec能够在海量语料如数十亿词上高效训练生成的词嵌入表现出惊人的语义和语法规律性例如著名的类比关系( \text{vec}(\text{国王}) - \text{vec}(\text{男人}) \text{vec}(\text{女人}) \approx \text{vec}(\text{女王}) )。随后斯坦福大学提出的GloVeGlobal Vectors for Word Representation模型结合了全局矩阵分解和局部上下文窗口的优点通过构建词-词共现矩阵并对其进行因式分解来学习嵌入。虽然Word2Vec和GloVe不是完整的语言模型它们只能生成静态词嵌入无法计算条件概率但它们证明了分布式表示的巨大潜力并为后续更强大的神经语言模型奠定了表示基础。四、循环神经网络突破固定窗口的限制4.1 RNN语言模型的基本原理前馈神经语言模型的最大缺陷是固定长度的历史窗口。对于“我昨天在公园里散步的时候遇到了一位多年未见的老朋友”这样一句话要预测最后一个词“朋友”需要依赖句首的“我昨天”。如果窗口长度只有5前面的信息将完全丢失。循环神经网络Recurrent Neural Network, RNN天然适合处理序列数据。RNN的核心思想是维护一个隐藏状态( h_t )该状态理论上能够编码从序列开始到当前时刻 ( t ) 的所有历史信息。RNN语言模型的计算过程如下[h_t \sigma(W_{xh} x_t W_{hh} h_{t-1} b_h)][y_t \text{softmax}(W_{hy} h_t b_y)]其中( x_t ) 是当前词 ( w_t ) 的嵌入向量从嵌入矩阵 ( C ) 中查找得到( h_{t-1} ) 是上一时刻的隐藏状态( W_{xh}, W_{hh}, W_{hy} ) 是权重矩阵( b_h, b_y ) 是偏置( \sigma ) 是激活函数通常为tanh或ReLU( y_t ) 的输出是词表上的概率分布即 ( P(w_{t1} | w_1, …, w_t) )。在训练时每个时间步 ( t ) 都会产生一个损失预测 ( w_{t1} ) 的负对数概率总损失是所有时间步损失之和。参数更新采用随时间反向传播Backpropagation Through Time, BPTT算法即将RNN按时间步展开成一个深层前馈网络然后计算梯度。RNN语言模型的优势非常明显理论上无限长的记忆隐藏状态 ( h_t ) 包含了从 ( w_1 ) 到 ( w_t ) 的所有信息不存在固定窗口限制。参数共享在每个时间步使用相同的权重矩阵 ( W_{xh}, W_{hh}, W_{hy} )参数量与序列长度无关。自然处理变长序列无论句子长短RNN都能以统一的方式处理。4.2 梯度消失与梯度爆炸RNN的困境尽管RNN在理论上优雅但在实践中训练长序列RNN却异常困难。问题根源在于梯度消失Vanishing Gradient和梯度爆炸Exploding Gradient。考虑一个展开的RNN损失函数 ( L ) 对早期隐藏状态 ( h_1 ) 的梯度包含因子 ( \prod_{t2}^T \frac{\partial h_t}{\partial h_{t-1}} )。每个 ( \frac{\partial h_t}{\partial h_{t-1}} ) 是权重矩阵 ( W_{hh} ) 乘以激活函数的导数。当 ( W_{hh} ) 的特征值小于1时连乘结果随着 ( T ) 增大指数衰减到接近0梯度消失当特征值大于1时指数增长到无穷大梯度爆炸。梯度消失导致早期时间步的信息无法有效传递到后期RNN实际上只能记住最近若干个时间步的内容——这与n-gram的有限窗口并无本质区别只不过窗口是“软性”的。梯度爆炸则导致训练不稳定参数更新幅度过大损失函数出现NaN。解决梯度爆炸相对简单采用梯度裁剪Gradient Clipping当梯度的L2范数超过某个阈值时按比例缩小。解决梯度消失则需要更精巧的架构设计这就是门控循环单元和长短期记忆网络的用武之地。4.3 LSTM与GRU门控机制的革命长短期记忆网络Long Short-Term Memory, LSTM由Hochreiter和Schmidhuber于1997年提出后在众多学者的改进下成为处理长序列的经典模型。LSTM的核心思想是引入一个细胞状态( c_t )cell state作为信息高速公路并通过三个门控单元来控制信息的读写和遗忘遗忘门( f_t )决定从上一细胞状态 ( c_{t-1} ) 中丢弃哪些信息。输入门( i_t )决定哪些新信息候选值 ( \tilde{c}_t )写入细胞状态。输出门( o_t )决定从细胞状态中输出哪些信息到隐藏状态 ( h_t )。数学表达式为[f_t \sigma(W_f \cdot [h_{t-1}, x_t] b_f)][i_t \sigma(W_i \cdot [h_{t-1}, x_t] b_i)][\tilde{c}t \tanh(W_c \cdot [h{t-1}, x_t] b_c)][c_t f_t \odot c_{t-1} i_t \odot \tilde{c}t][o_t \sigma(W_o \cdot [h{t-1}, x_t] b_o)][h_t o_t \odot \tanh(c_t)]其中 ( \odot ) 表示逐元素乘法( \sigma ) 是sigmoid函数输出0到1之间的值表示“开启”程度。LSTM通过加法运算( c_t f_t \odot c_{t-1} i_t \odot \tilde{c}_t )来更新细胞状态梯度在反向传播时可以沿着细胞状态直接传递中间只经过遗忘门的逐元素乘法而不是矩阵乘法大大缓解了梯度消失问题。实际上当遗忘门接近1时梯度可以几乎无损地流过很长的时间步。门控循环单元Gated Recurrent Unit, GRU是LSTM的一种简化变体由Cho等人于2014年提出。GRU将遗忘门和输入门合并为更新门( z_t )并将细胞状态与隐藏状态合并参数量更少计算效率更高在许多任务上性能与LSTM相当。数学表达式[z_t \sigma(W_z \cdot [h_{t-1}, x_t])][r_t \sigma(W_r \cdot [h_{t-1}, x_t])][\tilde{h}t \tanh(W_h \cdot [r_t \odot h{t-1}, x_t])][h_t (1 - z_t) \odot h_{t-1} z_t \odot \tilde{h}_t]LSTM和GRU的提出使RNN语言模型真正具备了捕捉长距离依赖的能力。例如在“我小时候住在北京在那里生活了十年后来搬到了上海……”这样跨越数百词的文本中模型能够记住“北京”与后文“那里”的指代关系。4.4 双向RNN与多层RNN在某些语言建模任务中未来信息同样重要。例如在完形填空中“我___苹果因为很甜。”要预测空缺处的动词如“喜欢吃”不仅需要前面的“我”还需要后面的“因为很甜”。双向RNNBidirectional RNN通过前向和后向两个RNN分别编码过去和未来的上下文然后将两个方向的隐藏状态拼接起来作为输出。对于语言模型的标准定义从左到右预测下一个词不能使用未来信息。但在序列标注如命名实体识别或文本分类等任务中双向RNN效果显著更好。多层RNNStacked RNN将多个RNN层堆叠起来底层接收原始词嵌入高层在低层输出基础上进一步提取抽象特征。通常2-4层的多层LSTM在机器翻译、语言建模等任务上优于单层模型。五、编码器-解码器架构与序列到序列学习5.1 Seq2Seq的基本框架语言模型不仅可以用于计算概率还可以用于生成文本。序列到序列Sequence-to-Sequence, Seq2Seq学习是RNN语言模型最重要的应用之一由Sutskever等人于2014年提出用于机器翻译任务。Seq2Seq架构包含两个RNN通常是LSTM编码器读取源语言句子如英文“I love you”逐步更新隐藏状态最终将整个句子的信息压缩到一个上下文向量( c ) 中。解码器以上下文向量 ( c ) 作为初始隐藏状态逐步生成目标语言句子如中文“我爱你”每个时间步输出一个词并将该词作为下一时间步的输入。训练时解码器使用教师强制Teacher Forcing无论解码器实际生成了什么词都输入正确的目标词作为下一步的输入。损失函数是目标序列的负对数似然之和。推理时测试阶段解码器需要自回归地生成整个序列每步输出概率最高的词或通过束搜索Beam Search采样然后作为下一步的输入。5.2 注意力机制对齐问题的突破基础Seq2Seq有一个严重缺陷编码器必须将整个源句子压缩成一个固定长度的向量 ( c )。当源句子较长时如超过30个词( c ) 无法保留所有信息导致解码器在生成后半部分时丢失早期输入内容。2015年Bahdanau等人提出了注意力机制Attention Mechanism从根本上解决了这个问题。核心思想是在解码器生成每个目标词时不依赖于单一的上下文向量而是动态地关注源句子中与当前生成词最相关的部分。具体而言对于解码器时间步 ( t )计算注意力权重如下计算解码器当前隐藏状态 ( h_t^{dec} ) 与编码器每个时间步的隐藏状态 ( h_s^{enc} ) 的对齐分数( e_{ts} )通常使用双线性函数或MLP。通过softmax将分数归一化为概率分布 ( \alpha_{ts} \frac{\exp(e_{ts})}{\sum_{s’}\exp(e_{ts’})} )。计算上下文向量 ( c_t \sum_s \alpha_{ts} h_s^{enc} )加权和。用 ( c_t ) 和 ( h_t^{dec} ) 共同预测下一个词。注意力机制带来了两个重大好处缓解长序列遗忘解码器可以直接“看到”源序列中的任何位置梯度也可以通过注意力权重直接回传不再需要经过漫长的RNN链。可解释性注意力权重矩阵可视化后可以直观地看到翻译时的词对齐关系如“love”对应“爱”这是传统统计机器翻译中需要单独训练对齐模型才能完成的任务。注意力机制的成功引发了后续一系列重要发展最终催生了完全摒弃RNN的Transformer架构。六、Transformer自注意力与并行化的革命6.1 为什么需要Transformer尽管LSTM和GRU通过门控机制缓解了梯度消失但它们仍然有两个本质缺陷序列计算是顺序的计算 ( h_t ) 必须等待 ( h_{t-1} ) 完成因此无法在GPU/TPU上实现大规模并行训练。当序列长度达到数百甚至数千时训练速度极慢。长期依赖仍有上限尽管LSTM能记住100步左右的依赖但当序列长度达到数千如整篇文档时信息仍然会衰减。2017年Google机器翻译团队发表了里程碑式论文《Attention Is All You Need》提出了Transformer架构。Transformer完全抛弃了循环结构仅基于自注意力机制Self-Attention和前馈网络实现了序列的全局并行计算同时让每个位置可以直接与序列中任意其他位置交互。6.2 自注意力机制与缩放点积注意力Transformer的核心组件是缩放点积注意力Scaled Dot-Product Attention。对于序列中的每个位置我们计算它与其他所有位置的相关性。给定输入序列 ( X [x_1, x_2, …, x_n] )每个 ( x_i ) 是一个 ( d_{model} ) 维的向量词嵌入加上位置编码。首先通过三个不同的线性变换矩阵 ( W^Q, W^K, W^V ) 将 ( X ) 映射为查询Query、键Key和值Value矩阵[Q X W^Q, \quad K X W^K, \quad V X W^V]然后注意力输出计算为[\text{Attention}(Q, K, V) \text{softmax}\left(\frac{Q K^T}{\sqrt{d_k}}\right) V]其中 ( d_k ) 是键向量的维度通常等于 ( d_{model} / \text{头数} )。除以 ( \sqrt{d_k} ) 是为了防止点积过大导致softmax进入梯度极小的饱和区。解释( QK^T ) 的每个元素 ( (i, j) ) 表示位置 ( i ) 的查询与位置 ( j ) 的键之间的相似度点积。softmax将每一行归一化为概率分布即位置 ( i ) 对所有位置的注意力权重。最后用权重矩阵加权求和 ( V )得到输出矩阵每个位置的新表示是所有位置的值向量的加权和。自注意力的关键特性全局感受野每个位置直接与所有位置交互路径长度为 ( O(1) )而RNN为 ( O(n) )。并行计算所有位置的注意力可以一次性通过矩阵乘法完成完全并行。动态权重注意力权重依赖于输入内容与n-gram的固定权重截然不同。6.3 多头注意力与前馈网络Transformer使用了多头注意力Multi-Head Attention将 ( Q, K, V ) 分别线性投影到 ( h ) 个不同的低维子空间在每个子空间中独立计算注意力然后将 ( h ) 个结果拼接起来再线性变换一次。[\text{MultiHead}(Q, K, V) \text{Concat}(\text{head}_1, …, \text{head}_h) W^O][\text{head}_i \text{Attention}(Q W_i^Q, K W_i^K, V W_i^V)]多头注意力的好处不同的头可以学习到不同模式的依赖关系例如一个头关注相邻词另一个头关注长距离指代第三个头关注语法结构。每个多头注意力子层之后接一个位置前馈网络Position-wise Feed-Forward Network, FFN它实际上是一个两层的全连接网络对所有位置独立且共享参数[\text{FFN}(x) \max(0, x W_1 b_1) W_2 b_2]6.4 位置编码与残差连接由于Transformer没有循环或卷积它本身无法感知序列中词的顺序信息。为了解决这个问题需要显式注入位置编码Positional Encoding。原始Transformer使用正弦和余弦函数[PE_{(pos, 2i)} \sin(pos / 10000^{2i / d_{model}})][PE_{(pos, 2i1)} \cos(pos / 10000^{2i / d_{model}})]其中 ( pos ) 是位置索引( i ) 是维度索引。这种编码的优势是对于任何固定的偏移 ( k )( PE_{posk} ) 可以表示为 ( PE_{pos} ) 的线性函数有利于模型学习相对位置关系。此外Transformer中每个子层多头注意力或FFN都使用了残差连接Residual Connection和层归一化Layer Normalization[\text{Output} \text{LayerNorm}(x \text{Sublayer}(x))]残差连接使得梯度可以跨层直接传播极大缓解了深层网络中的梯度消失问题因此Transformer可以堆叠很多层如BERT-base有12层GPT-3有96层。6.5 掩码自注意力自回归语言建模标准Transformer编码器使用双向自注意力每个位置可以看所有位置包括未来位置。但用于自回归语言模型如GPT系列时需要确保位置 ( i ) 只能依赖它之前的位置 ( i )而不能看到未来的词。这通过掩码自注意力Masked Self-Attention实现在计算 ( QK^T ) 后将未来位置对应的值设置为负无穷softmax后变为0。七、预训练语言模型从BERT到GPT的范式转变7.1 预训练-微调范式Transformer的出现使得训练超大规模语言模型成为可能。研究者发现在一个巨大的无标注文本语料如整个维基百科书籍上预训练一个语言模型然后在下游具体任务如情感分类、问答、命名实体识别的小规模标注数据上微调Fine-tuning可以获得远超之前任务专用模型的性能。这一范式被称为预训练-微调Pre-training and Fine-tuning其优势在于预训练阶段学习通用的语言知识语法、语义、常识。微调阶段只需少量标注数据即可快速适应特定任务。一个预训练模型可以服务于数十种下游任务。7.2 BERT双向编码器表示BERTBidirectional Encoder Representations from Transformers由Google于2018年提出是预训练语言模型发展史上的里程碑。BERT的核心创新在于掩码语言模型Masked Language Model, MLM预训练任务。与传统的自回归语言模型从左到右预测下一个词不同MLM随机遮盖输入序列中15%的词例如将“我爱吃苹果”遮盖为“我爱吃[MASK]”然后让模型根据左右两侧的上下文来预测被遮盖的词。这使得BERT能够学习到真正双向的上下文表示而不是单向的。此外BERT还设计了下一句预测Next Sentence Prediction, NSP任务输入两个句子A和B判断B是否是A的下一句。这个任务帮助BERT学习句子间的关系对问答和自然语言推断等任务有益。BERT的输入表示由三部分相加组成词嵌入Token Embeddings、位置嵌入Position Embeddings和段落嵌入Segment Embeddings区分两个句子。BERT-base模型有12层Transformer编码器、12个注意力头、768维隐藏状态参数量约1.1亿BERT-large有24层、16头、1024维参数量约3.4亿。BERT在11个NLP任务上刷新了SOTA包括GLUE基准、SQuAD问答、SWAG常识推理等。它的成功证明了双向预训练微调范式的强大。7.3 GPT系列生成式预训练GPTGenerative Pre-trained Transformer由OpenAI提出与BERT走了一条不同的技术路线。GPT坚持使用自回归语言模型从左到右预测下一个词因此它的Transformer解码器部分使用了掩码自注意力防止看到未来信息。GPT-12018参数量1.17亿在预训练后微调性能略逊于BERT。GPT-22019将参数量扩大到15亿展示了零样本学习Zero-shot Learning的能力在未针对下游任务微调的情况下仅通过提示Prompt就能完成翻译、摘要等任务。GPT-32020则是一个拥有1750亿参数的巨无霸展示了惊人的上下文学习In-context Learning能力用户只需在输入中提供几个示例Few-shotGPT-3就能理解任务并生成正确答案无需任何参数更新。GPT系列证明了规模本身就能带来能力的涌现。更大的模型、更多的数据、更长的训练时间使得模型逐渐展现出逻辑推理、代码生成甚至数学解题等“通用人工智能”的萌芽。7.4 其他重要预训练模型XLNet结合了BERT的双向上下文和自回归的生成能力通过排列语言模型Permutation Language Model实现了双向建模。RoBERTaFacebook对BERT的复现和改进去除了NSP任务使用更大批次和更多数据性能超过原始BERT。ALBERT通过参数共享和嵌入分解减少参数量同时保持性能。T5Text-to-Text Transfer TransformerGoogle提出将所有NLP任务统一为“文本到文本”的框架在一个统一的预训练-微调体系下处理翻译、分类、问答等。ELECTRA使用生成器-判别器架构效率更高。7.5 大语言模型时代ChatGPT与后续发展2022年底OpenAI发布的ChatGPT基于GPT-3.5和GPT-4将大语言模型推向了公众视野。ChatGPT通过指令微调Instruction Tuning和基于人类反馈的强化学习RLHF进一步对齐了模型与人类的交互意图使其能够遵循复杂的指令、进行多轮对话、承认错误、拒绝不当请求。此后大语言模型领域进入了快速迭代期Meta的LLaMA、Google的Gemini、Anthropic的Claude、国内的文心一言、通义千问等模型不断涌现。模型规模从百亿到万亿参数不等训练数据从文本扩展到多模态图像、音频、视频上下文长度从512扩展到百万级别如GPT-4 Turbo的128KClaude 3的200K。八、理论演进的总结与未来展望8.1 演进的核心逻辑回顾语言模型从n-gram到现代大模型的演进历程我们可以归纳出几条贯穿始终的发展逻辑从离散符号到连续空间n-gram将词视为独立的原子符号无法表达相似性神经语言模型将词映射到低维连续向量空间使得“猫”和“狗”在数学上相近为泛化提供了基础。从固定窗口到无限记忆n-gram只能看到前n-1个词RNN/LSTM理论上可以记住整个历史但受梯度消失限制Transformer的自注意力机制让每个位置直接与所有历史位置交互实现了真正的全局依赖。从单向到双向上下文传统语言模型是自回归的只能看过去BERT通过掩码建模实现了双向上下文编码而GPT又回归到自回归但通过极大规模弥补了单向的局限性——这揭示了一个深刻的洞察在数据与参数足够大的条件下单向模型也能学会利用“双向”信息因为未来词的信息可以通过上下文学习间接体现。从任务专用到预训练-微调早期NLP为每个任务设计独立模型预训练语言模型首先在大规模无标注语料上学习通用语言知识然后微调适配特定任务大幅降低了标注数据需求。从微调到提示学习GPT-3展示了无需微调、仅通过提示词就能完成新任务的能力。这进一步降低了任务适配的成本并使得模型能够处理微调难以覆盖的多样化、开放域任务。8.2 当前挑战与未来方向尽管语言模型取得了巨大成功但仍然面临诸多挑战计算资源与能耗训练GPT-3级别的模型需要数百万美元的电力和数千GPU/TPU计算碳排放问题引起关注。未来的方向包括模型压缩蒸馏、量化、稀疏专家模型Mixture of Experts, MoE、更高效的注意力变体如FlashAttention等。事实性与幻觉大语言模型经常生成与事实不符的内容幻觉因为它们学习的是文本统计规律而非真实世界知识。增强检索Retrieval-Augmented Generation, RAG、工具使用如调用计算器、搜索引擎、外部知识库整合是当前的研究热点。长上下文建模尽管Transformer将路径长度缩短为O(1)但其注意力计算复杂度是 ( O(n^2) )处理超长序列如整本书仍然困难。线性注意力、稀疏注意力、状态空间模型如Mamba等新架构正在探索中。可解释性与安全性大语言模型的决策过程难以解释可能产生偏见、有害内容或泄露隐私。可解释AI、价值观对齐、差分隐私等技术正在发展。持续学习与适应预训练模型的知识截止于训练数据收集时。如何让模型高效地更新知识而不发生灾难性遗忘是一个开放问题。8.3 结论从n-gram到Transformer再到GPT-4语言模型在短短二十年间经历了颠覆性的演进。n-gram模型用简单的计数和马尔可夫假设奠定了统计语言建模的基础神经语言模型引入分布式表示开启了泛化能力的大门RNN/LSTM试图捕捉长距离依赖但受限于序列计算Transformer通过自注意力机制实现了并行化和全局交互预训练大模型则通过“规模扩展”涌现出了接近通用人工智能的能力。这一演进历程不仅是模型架构的迭代更是对“语言是什么”“知识如何表示”这些根本问题的不断重新认识。未来随着模型规模的进一步扩大、训练数据的多模态融合、以及与推理和行动能力的结合如AI Agent语言模型将继续朝着更智能、更安全、更高效的方向发展深刻改变人机交互的方式。对于NLP学习者和从业者而言深入理解从n-gram到Transformer的理论脉络不仅是掌握具体技术的基础更是培养独立研究能力、在快速变化的领域中保持洞察力的关键。因为每一个“新”架构的思想渊源往往都能在之前的理论中找到影子。点击“AladdinEdu你的AI学习实践工作坊”注册即送-H卡级别算力沉浸式云原生集成开发环境80G大显存多卡并行按量弹性计费教育用户更享超低价。