查看全课大纲(第 8 / 69 节)
- 1.NLP 的研究领域、应用与学习路径
- 2.自然语言的基本术语
- 3.信息论基础:信息熵与交叉熵
- 4.语言的进化与语义变迁
- 5.主观概率、客观概率与条件概率
- 6.贝叶斯原理与推理
- 7.随机变量:二项式、期望方差与联合概率
- 8.常见概率分布
- 9.辛普森悖论与贝叶斯解题实例
- 10.语言模型:语言概率与词袋模型
- 11.n-gram 语言模型(二元 / 三元 / N-Gram)
- 12.语言模型评价:交叉熵、困惑度与插值
- 13.朴素贝叶斯文本分类:垃圾邮件
- 14.拼写检查
- 15.中文分词:构词法、最大匹配、最优路径与 Jieba
- 16.词表示问题与语义相似度
- 17.TF-IDF 权重处理
- 18.One-Hot 表达与词表示的局限
- 19.Word2Vec 核心思想
- 20.Word2Vec 训练过程
- 21.Skip-gram 模型详解
- 22.词性标注任务与标注方法(规则 + N-Gram)
- 23.EM 算法与混合模型
- 24.高斯混合模型 GMM
- 25.从混合模型到隐马尔可夫模型
- 26.隐马尔可夫模型(HMM)推导与维特比解码
- 27.线性链条件随机场 CRF
- 28.贝叶斯网络与图模型
- 29.隐马尔可夫链与 HMM 推导
- 30.PLSA 主题模型
- 31.LSI 与 SVD 向量表达
- 32.LDA 与狄利克雷分布
- 33.主题模型实验复现(困惑度 / 分类 / 相似度 / 延展)
- 34.上下文无关文法(CFG)与句法分析
- 35.概率上下文无关文法 PCFG
- 36.统计机器翻译:词对齐与翻译模型
- 37.统计机器翻译中的对齐模型与参数估计
- 38.从统计机器翻译到神经机器翻译
- 39.神经元与反向传播速览(指向深度学习课)
- 40.CNN 原理及其在 NLP 中的应用
- 41.循环神经网络的基本原理与 Elman / Jordan 网络
- 42.LSTM:长短期记忆网络的核心思想与分步实现
- 43.Encoder-Decoder 框架
- 44.Seq2Seq 与早期注意力机制
- 45.注意力机制的背景与动机
- 46.注意力模型实现原理与匹配函数
- 47.记忆网络:组成与计算
- 48.注意力机制的应用与历史延展
- 49.Transformer 结构:Encoder-Decoder 栈与 Self-Attention
- 50.Multi-Head Attention、FFNN 与位置编码
- 51.层归一化、损失函数与 Universal Transformer 延展
- 52.预训练范式:从 ELMo 到 BERT
- 53.BERT 与掩码语言模型
- 54.BERT 下游任务微调与 GLUE 口径
- 55.GPT 与自回归语言建模
- 56.GPT-1 到 GPT-4 的演进
- 57.指令微调与 RLHF
- 58.分词器:BPE、WordPiece 与中文词表
- 59.上下文窗口与长文本处理
- 60.能力边界、成本与适用场景
- 61.文本分类实战:从朴素贝叶斯到逻辑回归
- 62.命名实体识别实战
- 63.文本生成与摘要实战
- 64.语义检索与向量库实战
- 65.RAG 知识库问答
- 66.NLP 评估指标:BLEU / ROUGE / BERTScore 与人工评估
- 67.幻觉与事实性问题
- 68.文本与知识结合(知识图谱压缩)
- 69.跨媒体信息检索与未来展望
常见概率分布
小象实战讲义 · 自然语言处理
在掌握了概率论的基本概念,如联合概率、条件概率和独立性之后,我们需要了解一系列刻画不同随机现象的数学模型——概率分布。本节将系统介绍自然语言处理中常用的离散与连续概率分布,包括伯努利分布、二项式分布、多项式分布、泊松分布、高斯(正态)分布等。理解这些分布的定义、性质和应用场景,是后续学习语言模型、主题模型(如 LDA)等核心 NLP 技术的重要数学基础。
💡 核心导读
- 离散分布:伯努利分布描述单次二元试验(如抛硬币);二项式分布描述多次独立伯努利试验的成功次数;多项式分布则推广到多类别试验(如掷骰子)。
- 连续分布:高斯(正态)分布是自然界和统计学中最常见的对称钟形分布;伽马分布和贝塔分布具有更灵活的形态,常作为贝叶斯推断中的先验分布。
- 分布家族:许多重要分布(如泊松、高斯、伽马)都属于指数分布族,具有统一的数学形式和优良的统计性质。
- 从离散到连续:概率质量函数(PMF)用于离散随机变量,概率密度函数(PDF)用于连续随机变量,通过积分求概率。
联合概率、边缘概率与条件独立
在上一节的基础上,我们首先回顾并深化对联合概率的理解。给定两个随机变量 和 ,其联合概率 描述了它们同时取特定值的概率。如果 和 相互独立,则联合概率等于各自概率的乘积:。否则,需要引入条件概率:。
对于一个二维的联合概率分布,我们可以通过“投影”来求取边缘概率。例如,对 的所有可能取值求和,得到 的边缘分布:。这相当于将二维概率分布“压扁”到 轴上。同理可得 的边缘分布 。
世界上纯粹的独立性是罕见的,更多时候我们面对的是条件独立。例如,“今天上课的内容”和“你午餐吃什么”看似独立,但如果考虑到“我们都生活在同一文化背景下”,它们之间就可能存在微弱的潜在联系。在严格的数学和模型构建中,我们通常假设在给定某些条件下,变量是独立的,这极大地简化了模型的复杂度。
从离散概率到连续概率密度
对于离散型随机变量,我们使用概率质量函数来描述其分布,所有可能取值的概率之和为1:。
对于连续型随机变量,我们使用概率密度函数来描述。PDF 在某个区间 上的积分,等于随机变量落在该区间的概率: 其中 即为概率密度函数,它必须满足非负性,且在整个定义域上的积分为1:。
可以这样直观理解:PDF 在某一点的值 并不直接代表概率(点概率为0),而是代表了概率的“密度”或“浓度”。整个概率“质量”为1,分布在 轴上, 高的地方,单位长度内聚集的概率质量就大。
常见离散概率分布
伯努利分布
伯努利分布是最简单的离散分布,描述一次只有两种可能结果的试验,例如抛一次硬币(正面/反面)、一次点击(点击/未点击)。
- 概率质量函数:
- 其中 是试验结果为“成功”(通常编码为1)的概率。
- 时,; 时,。
- 期望(均值):
- 方差:
# 伯努利分布示例:模拟一次抛硬币
import numpy as np
# 定义伯努利分布的参数:正面朝上的概率 p
p = 0.6
# 模拟一次伯努利试验
np.random.seed(42) # 固定随机种子以保证结果可复现
result = np.random.binomial(n=1, p=p) # n=1 即为伯努利试验
print(f"一次抛硬币试验结果(1为正面,0为反面): {result}")
print(f"理论概率:P(正面)={p}, P(反面)={1-p}")一次抛硬币试验结果(1为正面,0为反面): 1
理论概率:P(正面)=0.6, P(反面)=0.4二项式分布
二项式分布描述了 次独立的伯努利试验中,“成功”次数 的分布。例如,抛10次硬币,得到正面朝上的次数。
- 概率质量函数:
- 其中 是二项式系数,即组合数。
- 期望:
- 方差:
二项式系数与帕斯卡三角(杨辉三角)密切相关。三角的第 层(从0开始计数)的系数正是 展开式的系数。将这些系数归一化(除以总和 ),就得到了 时的二项式分布概率。
# 二项式分布示例:抛10次硬币,正面朝上的次数分布
import math
n = 10
p = 0.5
k_values = list(range(n+1))
# 计算二项式分布的概率质量
pmf_values = []
for k in k_values:
comb = math.comb(n, k) # 计算组合数 C(n, k)
prob = comb * (p ** k) * ((1-p) ** (n-k))
pmf_values.append(prob)
print("抛10次公平硬币,正面朝上次数的概率分布:")
for k, prob in zip(k_values, pmf_values):
print(f" P(K={k}) = {prob:.5f}")
print(f"所有概率之和: {sum(pmf_values):.10f}")抛10次公平硬币,正面朝上次数的概率分布:
P(K=0) = 0.00098
P(K=1) = 0.00977
P(K=2) = 0.04395
P(K=3) = 0.11719
P(K=4) = 0.20508
P(K=5) = 0.24609
P(K=6) = 0.20508
P(K=7) = 0.11719
P(K=8) = 0.04395
P(K=9) = 0.00977
P(K=10) = 0.00098
所有概率之和: 1.0000000000多项式分布
多项式分布是二项式分布的推广,用于描述具有 个可能结果的试验(如掷骰子,有6个面)重复 次后,每种结果出现次数的联合分布。
- 概率质量函数:
- 其中 是第 种结果出现的次数,满足 。
- 是单次试验中出现第 种结果的概率,满足 。
- 应用:在 NLP 中,多项式分布常用于建模文档的词袋表示,其中 可以看作是词 在文档中出现的概率。
泊松分布
泊松分布描述了在固定时间或空间间隔内,某个稀有事件发生次数的概率分布。它通常用于建模低概率事件的发生频率,例如:
- 一个客服中心每小时接到的电话数。
- 一条河百年一遇的洪水在100年期间发生的次数。
- 概率质量函数:
- 其中 是单位间隔内事件发生的平均次数(速率参数)。
- 期望和方差:
以“百年一遇洪水”为例,(平均每百年发生一次)。计算在100年期间发生 次洪水的概率:
- 发生两次以上的概率迅速减小。 与 并列最大,均约为 0.368;因此“百年一遇”只是平均频率,并不意味着每百年必然恰好发生一次。
指数分布
指数分布(exponential distribution)描述泊松过程中相邻两次事件之间的等待时间(到达间隔),注意它与下面的“指数分布族”不是同一概念。
- 概率密度函数:
- 期望和方差:,
- 无记忆性:,即已经等待了 时间,剩余等待时间的分布与全新开始相同。
- 指数分布是伽马分布在形状参数 时的特例。
常见连续概率分布
高斯(正态)分布
高斯分布是最重要、最常见的连续概率分布,其概率密度函数呈对称的钟形曲线。
- 概率密度函数:
- 其中 是均值(决定分布中心), 是方差(决定分布的宽度)。
- 性质:
- 关于均值 对称。
- 68-95-99.7 规则:大约68%的数据落在 内;95%落在 内;99.7%落在 内。这意味着数据高度集中在均值附近。
# 高斯分布的性质:用标准正态分布累积分布验证 3σ 规则
import math
def phi(x):
# 标准正态分布 CDF,由误差函数计算(仅依赖标准库 math)
return 0.5 * (1 + math.erf(x / math.sqrt(2)))
print("对于标准正态分布 N(0,1):")
for a, label in [(1, "μ±σ"), (2, "μ±2σ"), (3, "μ±3σ")]:
prob = 2 * phi(a) - 1
print(f" 落在 {label} 内的概率约为 {prob*100:.2f}%")对于标准正态分布 N(0,1):
落在 μ±σ 内的概率约为 68.27%
落在 μ±2σ 内的概率约为 95.45%
落在 μ±3σ 内的概率约为 99.73%伽马分布与伽马函数
伽马函数 是阶乘函数在实数域上的推广。对于正整数 ,有 。
- 定义:
- 它允许我们计算非整数的“阶乘”,例如 。
伽马分布是一个由形状参数 和速率参数 定义的连续概率分布,其定义域为 。
- 概率密度函数:
- 伽马分布形态多样,可以呈现右偏、近似指数或近似正态的形状,比正态分布更灵活。它常作为贝叶斯统计中其他分布(如正态分布的精度)的共轭先验。
贝塔分布
贝塔分布是定义在区间 上的连续概率分布,由两个正参数 和 控制。
- 概率密度函数:
- 其中 是贝塔函数,作为归一化常数。
- 性质:贝塔分布形态极其灵活。
- 当 时,退化为 上的均匀分布。
- 当 时,呈单峰钟形。
- 当 时,呈 U 形(两端概率大,中间概率小)。
- 当 时,呈左偏 J 形;反之呈右偏 J 形。
- 应用:贝塔分布非常适合描述一个概率值 (例如伯努利试验的成功概率)本身的不确定性,因此它是二项式分布的共轭先验,在贝叶斯推断中极为重要。
对数正态分布
如果一个随机变量 的对数 服从正态分布,那么 就服从对数正态分布。
- 概率密度函数:若 ,则 的 PDF 为:
- 性质:分布右偏,具有长尾。许多现实世界的现象,如个人收入、城市规模、股票价格等,都近似服从对数正态分布,因为它们不能为负,且可能存在少数极大的值。
指数分布族
我们注意到,许多上述分布(泊松、高斯、伽马、贝塔等)的概率(密度)函数都可以写成以下统一形式: 其中 是参数, 是充分统计量, 是对数配分函数。能写成这种形式的分布统称为指数分布族。
属于指数分布族的分布具有许多优良的统计性质,例如:
- 存在充分统计量。
- 共轭先验易于找到。
- 可以用于广义线性模型。
在 NLP 中,后续将要学习的主题模型(如 LDA)所使用的狄利克雷分布,也属于指数分布族。
📝 动手练一练
- 概念辨析:伯努利分布、二项式分布和多项式分布之间有何联系与区别?请各举一个自然语言处理中的潜在应用场景。
👉 点击查看参考答案
- 联系:
- 伯努利分布是二项式分布的基础( 的二项式分布即为伯努利分布)。
- 二项式分布是多项式分布的特例(当类别数 时,多项式分布退化为二项式分布)。
- 区别:
- 伯努利分布:描述单次二元试验(成功/失败)。
- 二项式分布:描述 次独立伯努利试验中成功的总次数。
- 多项式分布:描述 次独立多类别试验中,各类别出现次数的联合分布。
- NLP 应用场景举例:
- 伯努利分布:建模一个词是否在文档中出现(忽略出现次数)的二元事件。
- 二项式分布:在朴素贝叶斯文本分类中,可以用于建模在给定类别下,某个词在文档中出现的次数(简化版)。
- 多项式分布:在词袋模型和多项朴素贝叶斯中,直接用于建模文档中所有词的计数分布,是更符合文本特性的模型。
- 手算练习:假设某搜索引擎中,用户查询与某广告相关的概率为 0.02(即点击率)。在一天内独立展示了该广告 1000 次。请利用二项式分布近似计算,这一天内该广告被点击次数不超过 30 次的概率是多少?(提示:可利用二项式分布的期望和方差,并思考其与正态分布的关系进行估算)。
👉 点击查看参考答案
这是一个 的二项式分布问题,随机变量 表示点击次数。
- 期望
- 方差
- 标准差
当 与 都足够大、二项式分布偏度较小时,二项式分布 可以用正态分布 近似。本例 、,二者均较大,可作正态近似。
我们要求 。使用正态近似,并进行连续性校正(因为二项式是离散的,正态是连续的):
查标准正态分布表可知,。
因此,一天内点击次数不超过30次的概率大约为 99.1%(正态近似;按精确二项式分布计算约为 98.74%,二者相差约 0.4 个百分点)。这说明在平均点击20次的情况下,点击30次已经是一个相对较少发生的事件(位于分布右尾)。
📝 动手练一练
概念辨析:假设我们有一个描述“抛掷一枚均匀硬币3次,正面朝上次数”的随机变量。请问描述单次抛掷结果的分布和描述三次抛掷后正面总次数的分布,分别对应本节介绍的哪种离散概率分布?并写出它们概率质量函数(PMF)中的关键参数。
手算练习:已知某二项式分布
B(n=5, p=0.6)。 a) 请计算恰好有3次成功的概率P(K=3)。 b) 请计算成功次数不超过1次的概率P(K ≤ 1)。 (提示:组合数C(5,3)=10,C(5,1)=5,C(5,0)=1)
👉 点击查看参考答案
概念辨析:
- 单次抛掷:结果是“正面”或“反面”,对应伯努利分布。其PMF为
P(X=k) = p^k (1-p)^{1-k},其中关键参数p = 0.5(硬币均匀)。 - 三次抛掷的正面总次数:结果可能是0,1,2,3,对应二项式分布。其PMF为
P(K=k) = C(3, k) * p^k * (1-p)^{3-k},其中关键参数n = 3,p = 0.5。
- 单次抛掷:结果是“正面”或“反面”,对应伯努利分布。其PMF为
手算练习: a) 计算
P(K=3): 根据二项分布PMF:P(K=3) = C(5,3) * (0.6)^3 * (0.4)^(5-3) = 10 * 0.216 * 0.16 = 0.3456b) 计算P(K ≤ 1) = P(K=0) + P(K=1):P(K=0) = C(5,0) * (0.6)^0 * (0.4)^5 = 1 * 1 * 0.01024 = 0.01024P(K=1) = C(5,1) * (0.6)^1 * (0.4)^4 = 5 * 0.6 * 0.0256 = 0.0768P(K ≤ 1) = 0.01024 + 0.0768 = 0.08704验证代码:
import numpy as np # 参数 n, p = 5, 0.6 k_vals = np.array([0, 1, 3]) # 手动计算组合数函数 def comb(n, k): from math import factorial return factorial(n) // (factorial(k) * factorial(n - k)) # 计算二项分布概率 probs = [comb(n, k) * (p ** k) * ((1 - p) ** (n - k)) for k in k_vals] print(f"P(K=3) = {probs[2]:.4f}") # 索引2对应k=3 print(f"P(K≤1) = P(K=0)+P(K=1) = {probs[0]:.5f} + {probs[1]:.5f} = {probs[0]+probs[1]:.5f}")
P(K=3) = 0.3456
P(K≤1) = P(K=0)+P(K=1) = 0.01024 + 0.07680 = 0.08704本章小结
本节系统梳理了自然语言处理中至关重要的概率分布知识体系。我们从联合概率与条件独立的概念出发,明确了离散与连续随机变量的描述工具(PMF 与 PDF)。随后,我们深入探讨了:
- 核心离散分布:伯努利(单次二元)、二项式(多次二元计数)、多项式(多类别计数)和泊松(稀有事件计数)分布的定义、公式与应用。
- 核心连续分布:高斯(正态)分布的对称性与 法则;伽马分布与贝塔分布的形态灵活性及其在贝叶斯推断中的先验作用;对数正态分布的长尾特性。
- 统一视角:认识到许多重要分布都属于指数分布族,这为后续学习更复杂的概率模型(如主题模型)奠定了理论基础。
理解这些分布不仅是掌握概率统计的关键,更是后续学习语言模型、文本分类、主题发现等 NLP 核心技术的必备前提。它们为我们提供了量化语言现象不确定性的数学语言。
📋 行动清单
- 默写出伯努利、二项式、高斯分布的 PDF/PMF 公式及其期望、方差。
- 用 Python(仅用
numpy和math)编写函数,计算给定参数下二项式分布和正态分布在指定区间的概率(或概率密度),并验证二项式分布的正态近似。 - 思考并举例说明,在您熟悉的某个 NLP 任务(如情感分析、垃圾邮件过滤)中,哪个概率分布可能被用来建模其中的某个关键随机变量。
—— 小象教研组