在自然语言处理NLP的技术版图中语言模型Language Model, LM是当之无愧的“基石技术”——它不仅是机器理解人类语言的起点更是实现文本生成、机器翻译、语音识别等复杂任务的核心支撑。简单来说语言模型的核心目标是学习人类语言的内在规律并基于这些规律预测文本序列中“下一个词出现的概率”。从早期基于统计的简单模型到如今主导NLP领域的深度神经网络模型语言模型的演进史本质上就是人类让机器“读懂语言、学会说话”的技术突破史。语言模型的核心定义什么是“对语言建模”要理解语言模型首先需要明确其核心任务——“对语言建模”究竟在做什么。从数学角度看语言模型的本质是一个概率分布函数。假设我们有一个文本序列 w₁, w₂, …, wₜ其中 wₜ 表示序列中第 t 个词语言模型要计算的就是这个序列出现的联合概率 P(w₁, w₂, …, wₜ)。而根据概率的链式法则这个联合概率可以拆解为一系列条件概率的乘积P(w₁, w₂, …, wₜ) P(w₁) × P(w₂|w₁) × P(w₃|w₁, w₂) × … × P(wₜ|w₁, w₂, …, wₜ₋₁)这意味着要计算整个序列的概率关键是计算“给定前面所有词的情况下下一个词出现的概率”即 P(wₜ|w₁, w₂, …, wₜ₋₁)。而这正是语言模型的核心任务通过学习海量文本数据掌握“前文语境”与“下一个词”之间的关联从而精准预测下一个词的概率分布。这个过程可以用一个非常直观的例子理解当我们看到 “今天天气很” 这个前文时语言模型会对 “下一个可能出现的词” 给出一套概率排序 —— 比如 “好” 的概率可能是 0.6“冷” 的概率是 0.25“热” 的概率是 0.12而 “苹果”“跑步” 这类与 “天气” 语境完全无关的词概率可能仅为 0.0001 甚至更低。这种对 “语境匹配词” 的高概率偏好正是模型对人类语言规律“天气” 常与 “好 / 冷 / 热” 搭配与 “苹果 / 跑步” 无关联的精准捕捉。更重要的是这个 “逐词预测” 的逻辑直接决定了当前所有大语言模型LLM的文本生成方式 ——为什么 ChatGPT、文心一言等大模型都是 “一个字 / 一个词” 地输出内容本质上就是因为它们的核心能力源于语言模型的 “下一个词预测” 任务。无论是生成一篇文章、一段对话还是一份代码大模型都是先根据你输入的 “prompt提示词” 预测第一个响应词再将 “prompt 第一个响应词” 作为新的前文预测第二个响应词以此类推像搭积木一样逐词构建出完整的文本序列。传统语言模型基于统计的N-Gram模型在深度学习普及之前基于统计的N-Gram模型是语言建模的主流方案。它的核心思想非常朴素用“局部上下文”的统计频率来近似全局语境的依赖关系从而简化“预测下一个词”的计算难度。1. N-Gram的核心假设马尔可夫假设要计算 P(wₜ|w₁, w₂, …, wₜ₋₁)理论上需要考虑前面所有词的影响但这会导致计算量呈指数级增长尤其是当序列较长时。为解决这一问题N-Gram模型引入了马尔可夫假设一个词的出现只依赖于它前面最近的 N-1 个词与更早期的词无关。基于这个假设条件概率可以被简化为P(wₜ|w₁, w₂, …, wₜ₋₁) ≈ P(wₜ|wₜ₋ₙ₊₁, …, wₜ₋₁)其中N 是模型的“阶数”不同阶数的N-Gram模型对应不同的上下文窗口大小Unigram一元模型N1假设每个词的出现完全独立与任何前文无关。此时 P(wₜ|w₁,…,wₜ₋₁) ≈ P(wₜ)即仅用单个词在语料库中的出现频率词频作为概率。例如“猫”的概率就是语料中“猫”出现的次数除以总词数。Bigram二元模型N2假设一个词的出现仅依赖于前一个词。此时 P(wₜ|w₁,…,wₜ₋₁) ≈ P(wₜ|wₜ₋₁)即“当前词-前一个词”的二元组Bigram在语料中的出现频率除以“前一个词”的出现频率。例如计算“天气”后面接“好”的概率就是“天气好”这个二元组的频次除以“天气”这个词的总频次。Trigram三元模型N3假设一个词的出现依赖于前两个词。此时 P(wₜ|w₁,…,wₜ₋₁) ≈ P(wₜ|wₜ₋₂, wₜ₋₁)计算逻辑与Bigram类似只是上下文窗口扩大到两个词如“今天天气”后面接“好”的概率依赖“今天天气好”这个三元组的频次。2. N-Gram模型的实现从语料统计到概率计算N-Gram模型的训练过程本质是“语料统计”核心步骤分为两步语料预处理对原始文本进行分词如英文按空格分词中文需专用分词工具、去除特殊符号、统一大小写等操作得到干净的词序列。频次统计与概率计算统计所有N-Gram如Bigram、Trigram在语料中的出现频次记为 count(wₜ₋ₙ₊₁, …, wₜ)。统计所有“前N-1个词”的序列记为 count(wₜ₋ₙ₊₁, …, wₜ₋₁)的出现频次。按照以下公式计算条件概率P(wₜ|wₜ₋ₙ₊₁, …, wₜ₋₁) count(wₜ₋ₙ₊₁, …, wₜ) / count(wₜ₋ₙ₊₁, …, wₜ₋₁)3. N-Gram模型的局限为何会被深度学习取代N-Gram模型的优点是简单易懂、计算高效但它存在两个致命缺陷使其无法应对复杂的语言场景数据稀疏问题当N增大如N≥4时很多N-Gram组合在语料中可能从未出现过即 count(wₜ₋ₙ₊₁, …, wₜ) 0导致概率计算为0模型无法处理未见过的上下文。尽管可以通过“平滑技术”如Add-1平滑、Kneser-Ney平滑缓解但无法从根本上解决。长距离依赖缺失N-Gram的上下文窗口固定为N-1个词无法捕捉超过这个窗口的长距离关联。例如在句子“小明昨天去了超市他买了很多____”中“买了很多”后面的词如“水果”“零食”依赖于前文的“超市”但Trigram模型只能看到“很多”前面的“买了”无法关联到“超市”这个关键信息导致预测准确率下降。神经网络语言模型从统计到“端到端”学习随着深度学习技术的发展基于神经网络的语言模型Neural Language Model, NLM逐渐取代N-Gram成为主流。其核心优势在于无需人工设计特征如N-Gram的频次统计而是通过神经网络“端到端”学习词与上下文的关联同时能更好地捕捉长距离依赖关系。1. 词向量神经网络理解语言的“第一步”在介绍具体模型前需要先明确神经网络处理语言的基础——词向量Word Embedding。N-Gram模型中词通常用“One-Hot编码”表示如词汇表有10000个词“猫”就表示为一个10000维向量其中只有对应“猫”的位置为1其余为0。但One-Hot编码存在两个问题一是维度灾难词汇表越大向量维度越高二是无法体现词的语义关联如“猫”和“狗”的One-Hot向量完全正交模型无法识别它们都是“动物”。而词向量则将每个词映射到一个低维稠密的实数向量如100维、300维且语义相近的词其词向量的距离如余弦距离更近。例如“猫”的词向量可能是[0.2, 0.5, -0.1, …]“狗”的词向量可能是[0.3, 0.4, -0.2, …]两者的距离远小于“猫”与“电脑”的距离。在神经网络语言模型中词向量通常是模型的“第一层”嵌入层会随着模型训练一起更新——模型在学习“预测下一个词”的同时也在学习“如何用向量表示词的语义”。2. RNN语言模型首次用序列模型捕捉上下文循环神经网络Recurrent Neural Network, RNN是最早用于语言建模的神经网络结构之一。它的核心特点是拥有“记忆能力”模型在处理序列的每个词时会将当前词的信息与“之前的上下文记忆”结合从而捕捉序列的时序依赖关系。1RNN的结构与工作原理RNN的基本单元是“循环神经元”其结构可简化为三个部分输入层接收当前词的词向量 eₜ由嵌入层输出。隐藏层维护一个“隐藏状态” hₜ作为模型的“上下文记忆”。隐藏状态的计算依赖于“当前输入”和“上一时刻的隐藏状态”公式为hₜ σ(Wₕ hₜ₋₁ Wₑ eₜ bₕ)其中Wₕ 是“上一隐藏状态到当前隐藏状态”的权重矩阵Wₑ 是“输入词向量到隐藏状态”的权重矩阵bₕ 是隐藏层的偏置项σ 是激活函数如tanh、ReLU。输出层将隐藏状态 hₜ 映射到“词汇表中所有词的概率分布”通常使用softmax函数ŷₜ softmax(Wₒ hₜ bₒ)其中Wₒ 是“隐藏状态到输出层”的权重矩阵bₒ 是输出层的偏置项ŷₜ 是一个长度为“词汇表大小”的向量每个元素对应“下一个词是该词的概率”。2RNN语言模型的优势与缺陷相比N-GramRNN的优势在于理论上可以捕捉任意长度的上下文依赖因为隐藏状态 hₜ 会累积前面所有词的信息。无需人工设计特征通过词向量和隐藏状态自动学习语义关联。但RNN存在一个致命问题——梯度消失/梯度爆炸当序列过长时如超过20个词模型在反向传播更新参数时梯度会随着时间步的增加而急剧减小或增大导致模型无法学习到长距离的上下文关联例如无法关联“小明去了超市”和“他买了水果”中的“超市”与“水果”。这一缺陷促使了LSTM等改进模型的诞生。3. LSTM语言模型用“门控机制”解决长距离依赖长短期记忆网络Long Short-Term Memory, LSTM是RNN的变体由Hochreiter和Schmidhuber于1997年提出。它通过引入门控机制Gating Mechanism和“记忆单元Memory Cell”有效解决了RNN的梯度消失问题成为后续多年语言建模的主流结构。1LSTM的核心创新记忆单元与三门控LSTM的核心是“记忆单元”记为 cₜ它像一个“信息容器”可以长期存储上下文信息而“门控机制”则像容器的“开关”控制信息的“流入、遗忘、流出”具体分为三个门遗忘门Forget Gate决定“哪些旧信息需要从记忆单元中删除”。它接收上一时刻的隐藏状态 hₜ₋₁ 和当前输入 eₜ通过sigmoid激活函数输出一个0~1之间的向量 fₜ1表示完全保留0表示完全遗忘fₜ σ(Wբ [hₜ₋₁, eₜ] bբ)输入门Input Gate决定“哪些新信息需要存入记忆单元”。它分为两步首先通过sigmoid函数生成“筛选向量” iₜ决定哪些信息被保留再通过tanh函数生成“候选信息向量” ĉₜ包含当前输入的新信息最后将两者相乘得到“待存入的新信息”iₜ σ(Wᵢ [hₜ₋₁, eₜ] bᵢ)ĉₜ tanh(W_c [hₜ₋₁, eₜ] b_c)记忆单元更新结合遗忘门和输入门的结果更新记忆单元的信息——旧信息被遗忘门筛选后加上输入门筛选后的新信息cₜ fₜ ⊙ cₜ₋₁ iₜ ⊙ ĉₜ其中 ⊙ 表示元素-wise乘法即两个向量对应位置的元素相乘输出门Output Gate决定“记忆单元中的哪些信息需要输出到当前隐藏状态”。它通过sigmoid函数生成“输出筛选向量” oₜ再将记忆单元 cₜ 经过tanh激活将值压缩到-1~1后与 oₜ 相乘得到当前时刻的隐藏状态 hₜoₜ σ(Wₒ [hₜ₋₁, eₜ] bₒ)hₜ oₜ ⊙ tanh(cₜ)2LSTM语言模型的工作流程在语言建模任务中LSTM的工作流程与RNN类似但隐藏状态的更新由“三门控记忆单元”共同控制将文本序列按顺序转换为词向量序列 e₁, e₂, …, eₜ。对每个时间步 t通过遗忘门、输入门更新记忆单元 cₜ再通过输出门生成隐藏状态 hₜ。将隐藏状态 hₜ 输入softmax层输出下一个词的概率分布 ŷₜ。3LSTM的优势真正捕捉长距离依赖由于记忆单元可以长期存储信息只要遗忘门允许LSTM能够有效捕捉长距离的上下文关联。例如在句子“小明上周去北京旅游他在____参观了故宫”中LSTM的记忆单元可以保留“北京”这个信息当处理到“在____参观”时模型能根据“北京”预测下一个词更可能是“那里”“北京”而不是“上海”“广州”——这是RNN和N-Gram模型难以做到的。小结语言模型的演进逻辑从N-Gram到RNN再到LSTM语言模型的演进始终围绕两个核心目标更精准地捕捉语言的依赖关系以及更高效地处理长序列文本。N-Gram用“统计频次”开启了语言建模的大门但受限于固定上下文窗口和数据稀疏无法应对复杂语言场景RNN首次用“序列神经网络”实现了上下文的动态记忆但梯度消失问题使其难以捕捉长距离依赖LSTM通过“门控机制记忆单元”解决了梯度消失成为深度学习时代早期语言建模的“标配”也为后续Transformer模型的诞生奠定了基础。下一章我们将聚焦于当前NLP领域的“王者”——Transformer模型看看它如何通过“自注意力机制”进一步突破LSTM的局限开启大语言模型LLM的新时代。