当前位置: 首页 > news >正文

第2章 语言模型:自然语言处理的基石

在自然语言处理(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(一元模型,N=1):假设每个词的出现完全独立,与任何前文无关。此时 P(wₜ|w₁,…,wₜ₋₁) ≈ P(wₜ),即仅用单个词在语料库中的出现频率(词频)作为概率。例如,“猫”的概率就是语料中“猫”出现的次数除以总词数。
  • Bigram(二元模型,N=2):假设一个词的出现仅依赖于前一个词。此时 P(wₜ|w₁,…,wₜ₋₁) ≈ P(wₜ|wₜ₋₁),即“当前词-前一个词”的二元组(Bigram)在语料中的出现频率,除以“前一个词”的出现频率。例如,计算“天气”后面接“好”的概率,就是“天气好”这个二元组的频次,除以“天气”这个词的总频次。
  • Trigram(三元模型,N=3):假设一个词的出现依赖于前两个词。此时 P(wₜ|w₁,…,wₜ₋₁) ≈ P(wₜ|wₜ₋₂, wₜ₋₁),计算逻辑与Bigram类似,只是上下文窗口扩大到两个词(如“今天天气”后面接“好”的概率,依赖“今天天气好”这个三元组的频次)。
2. N-Gram模型的实现:从语料统计到概率计算

N-Gram模型的训练过程本质是“语料统计”,核心步骤分为两步:

  1. 语料预处理:对原始文本进行分词(如英文按空格分词,中文需专用分词工具)、去除特殊符号、统一大小写等操作,得到干净的词序列。
  2. 频次统计与概率计算
  • 统计所有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)是最早用于语言建模的神经网络结构之一。它的核心特点是拥有“记忆能力”:模型在处理序列的每个词时,会将当前词的信息与“之前的上下文记忆”结合,从而捕捉序列的时序依赖关系。

(1)RNN的结构与工作原理

RNN的基本单元是“循环神经元”,其结构可简化为三个部分:

  • 输入层:接收当前词的词向量 eₜ(由嵌入层输出)。
  • 隐藏层:维护一个“隐藏状态” hₜ,作为模型的“上下文记忆”。隐藏状态的计算依赖于“当前输入”和“上一时刻的隐藏状态”,公式为:
    hₜ = σ(Wₕ hₜ₋₁ + Wₑ eₜ + bₕ)
    其中,Wₕ 是“上一隐藏状态到当前隐藏状态”的权重矩阵,Wₑ 是“输入词向量到隐藏状态”的权重矩阵,bₕ 是隐藏层的偏置项,σ 是激活函数(如tanh、ReLU)。
  • 输出层:将隐藏状态 hₜ 映射到“词汇表中所有词的概率分布”,通常使用softmax函数:
    ŷₜ = softmax(Wₒ hₜ + bₒ)
    其中,Wₒ 是“隐藏状态到输出层”的权重矩阵,bₒ 是输出层的偏置项,ŷₜ 是一个长度为“词汇表大小”的向量,每个元素对应“下一个词是该词的概率”。
(2)RNN语言模型的优势与缺陷

相比N-Gram,RNN的优势在于:

  • 理论上可以捕捉任意长度的上下文依赖(因为隐藏状态 hₜ 会累积前面所有词的信息)。
  • 无需人工设计特征,通过词向量和隐藏状态自动学习语义关联。

但RNN存在一个致命问题——梯度消失/梯度爆炸:当序列过长时(如超过20个词),模型在反向传播更新参数时,梯度会随着时间步的增加而急剧减小(或增大),导致模型无法学习到长距离的上下文关联(例如,无法关联“小明去了超市”和“他买了水果”中的“超市”与“水果”)。这一缺陷,促使了LSTM等改进模型的诞生。

3. LSTM语言模型:用“门控机制”解决长距离依赖

长短期记忆网络(Long Short-Term Memory, LSTM)是RNN的变体,由Hochreiter和Schmidhuber于1997年提出。它通过引入门控机制(Gating Mechanism) 和“记忆单元(Memory Cell)”,有效解决了RNN的梯度消失问题,成为后续多年语言建模的主流结构。

(1)LSTM的核心创新:记忆单元与三门控

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ₜ)
(2)LSTM语言模型的工作流程

在语言建模任务中,LSTM的工作流程与RNN类似,但隐藏状态的更新由“三门控+记忆单元”共同控制:

  1. 将文本序列按顺序转换为词向量序列 e₁, e₂, …, eₜ。
  2. 对每个时间步 t,通过遗忘门、输入门更新记忆单元 cₜ,再通过输出门生成隐藏状态 hₜ。
  3. 将隐藏状态 hₜ 输入softmax层,输出下一个词的概率分布 ŷₜ。
(3)LSTM的优势:真正捕捉长距离依赖

由于记忆单元可以长期存储信息(只要遗忘门允许),LSTM能够有效捕捉长距离的上下文关联。例如,在句子“小明上周去北京旅游,他在____参观了故宫”中,LSTM的记忆单元可以保留“北京”这个信息,当处理到“在____参观”时,模型能根据“北京”预测下一个词更可能是“那里”“北京”,而不是“上海”“广州”——这是RNN和N-Gram模型难以做到的。

小结:语言模型的演进逻辑

从N-Gram到RNN,再到LSTM,语言模型的演进始终围绕两个核心目标:更精准地捕捉语言的依赖关系,以及更高效地处理长序列文本

  • N-Gram用“统计频次”开启了语言建模的大门,但受限于固定上下文窗口和数据稀疏,无法应对复杂语言场景;
  • RNN首次用“序列神经网络”实现了上下文的动态记忆,但梯度消失问题使其难以捕捉长距离依赖;
  • LSTM通过“门控机制+记忆单元”解决了梯度消失,成为深度学习时代早期语言建模的“标配”,也为后续Transformer模型的诞生奠定了基础。

下一章,我们将聚焦于当前NLP领域的“王者”——Transformer模型,看看它如何通过“自注意力机制”进一步突破LSTM的局限,开启大语言模型(LLM)的新时代。


文章转载自:

http://yj1eXlqq.sbdqy.cn
http://gmnZTD2E.sbdqy.cn
http://LRAwB3EU.sbdqy.cn
http://nQ0skvzQ.sbdqy.cn
http://6XiwsT2Y.sbdqy.cn
http://qjrn2jpe.sbdqy.cn
http://l83t6vqT.sbdqy.cn
http://hlBxo9w6.sbdqy.cn
http://4XMfY14E.sbdqy.cn
http://PRgZMdNP.sbdqy.cn
http://2GPGVf2k.sbdqy.cn
http://sbY8I7bn.sbdqy.cn
http://T4G2DCxI.sbdqy.cn
http://f1EdGFcf.sbdqy.cn
http://9NmxhQMd.sbdqy.cn
http://KmNupAJ3.sbdqy.cn
http://XGajkMhV.sbdqy.cn
http://IXfoenRO.sbdqy.cn
http://g6E36S50.sbdqy.cn
http://IotK2Weo.sbdqy.cn
http://HSghstmG.sbdqy.cn
http://NhCmE6Ow.sbdqy.cn
http://iKKlrhaZ.sbdqy.cn
http://xWQrXxjP.sbdqy.cn
http://io1utQt7.sbdqy.cn
http://9NAyvNva.sbdqy.cn
http://Me9qFFfE.sbdqy.cn
http://U6uHHWnf.sbdqy.cn
http://aR5VszX5.sbdqy.cn
http://qKsIJs10.sbdqy.cn
http://www.dtcms.com/a/384896.html

相关文章:

  • 汽车电子电气架构 --- 新趋势下的挑战与技术
  • 地铁站电子钟:NTP实时校准时间
  • 【数据集】2025年国家自然科学基金立项名单(经管类)
  • Elastic APM 2025 新特性:Tail-based Sampling 和 GenAI 优化
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘sklearn’ 问题
  • 《二战系统分析师》第五章总结
  • 机器学习中的距离总结
  • MongoDB集群开发完全指南:从原理到实践
  • apache phoenix sql 命令大全详解
  • python 读取大文件优化示例
  • 布草洗涤厂设备租赁押金原路退回系统—东方仙盟
  • JAVASCRIPT 前端数据库-V9--仙盟数据库架构-—仙盟创梦IDE
  • 开源AI大模型、AI智能名片与S2B2C商城小程序:从“不出现=不存在”到“精准存在”的数字化转型路径
  • LNMP环境搭建:高效Web服务器指南
  • ACP(三):让大模型能够回答私域知识问题
  • Angle-Based SLAM on 5G mmWave Systems: Design, Implementation, and Measurement
  • 京瓷1025打印机打印有底灰简单处理
  • UE5 播放关卡时,将渲染画面的相机转变为关卡序列中的相机
  • JavaSE 异常
  • Unity Excel数据导入工具
  • 镭神C16在Ubuntu下的连接和驱动安装教程
  • 如何在qt中配置libssh
  • 使用 Spring Boot 3.x 集成 Kafka 并在 Kubernetes 上部署的全流程指南
  • 记录本地安装anaconda pytorch python
  • 关于机器学习中的各种“学习”
  • Parlant框架深度技术解析:革命性AI代理行为建模引擎
  • 疯狂星期四文案网第68天运营日记
  • RabbitMQ 消息路由与交换机机制
  • 月视图,周视图,日视图
  • RabbitMQ 数据结构源码剖析