期望最大化算法与KL散度及狄利克雷先验平滑的深入解析
1. 期望最大化(EM)算法概述
期望最大化(EM)算法是一种用于最大似然估计的通用算法,适用于数据“不完整”或似然函数包含潜在变量的情况。“不完整数据”和“潜在变量”的概念密切相关:当存在潜在变量时,由于无法观测到其值,可将数据视为不完整;反之,当数据不完整时,通常也能为缺失数据关联一些潜在变量。在语言建模中,EM算法常用于估计混合模型的参数,其中数据点的具体生成组件模型是未知的。
1.1 EM算法的基本步骤
EM算法首先随机为所有待估计参数赋值,然后迭代地交替进行两个步骤:
-
期望步骤(E-step)
:根据当前参数设置和观测到的(不完整)数据,计算潜在变量(即“隐藏变量”)的条件分布,进而计算完整数据的期望似然(即Q函数)。
-
最大化步骤(M-step)
:通过最大化Q函数来重新估计所有参数。
重复这两个步骤,直到似然收敛到局部最大值。直观地说,EM算法通过“猜测”隐藏变量的值来迭代地扩充数据,并假设这些猜测值为真实值来重新估计参数。
1.2 EM算法的局限性与解决策略
EM算法是一种爬山法,只能保证收敛到局部最大值。当存在多个最大值时,是否能达到全局最大值取决于初始点的选择。若从“正确的山峰”开始,就有可能找到全局最大值,但当存在多个局部最大值时,很难确定“正确的山峰”。常用的解决策略有两种:
-
尝试多个初始值
:尝试许多不同的初始值,选择收敛似然值最高的解。
-
使用简单模型确定初始值
:使用一个更简单的模型(理想情况下具有唯一的全局最大值)来为更复杂的模型确定初始值,以帮助定位全局最优解所在的大致区域。
2. 简单混合一元语言模型
2.1 模型假设
在混合模型反馈方法中,假设反馈文档 $F = {d_1, \ldots, d_k}$ 由一个包含两个多项分布组件模型的混合模型“生成”。一个组件模型是背景模型 $p(w | C)$,另一个是待估计的未知主题语言模型 $p(w | \theta_F)$。其目的是用 $p(w | C)$ 对 $F$ 中的常见(无区分性)单词进行建模,使主题模型 $\theta_F$ 能吸引更多具有区分性的内容承载词。
2.2 对数似然函数
该混合模型的反馈文档数据的对数似然函数为:
[
\log L(\theta_F) = \log p(F | \theta_F) = \sum_{i=1}^{k} \sum_{j=1}^{|d_i|} \log((1 - \lambda)p(d_{ij} | \theta_F) + \lambda p(d_{ij} | C))
]
其中,$d_{ij}$ 是文档 $d_i$ 中的第 $j$ 个单词,$|d_i|$ 是 $d_i$ 的长度,$\lambda$ 是一个表示反馈文档中“背景噪声”量的参数,需通过经验设置。假设 $\lambda$ 已知,目标是估计 $p(w | \theta_F)$。
2.3 最大似然估计
一种常见的估计 $\theta_F$ 的方法是最大似然(ML)估计器,即选择使 $F$ 的似然最大化的 $\theta_F$。估计的主题模型 $\hat{\theta}
F$ 为:
[
\hat{\theta}_F = \arg \max
{\theta_F} L(\theta_F) = \arg \max_{\theta_F} \sum_{i=1}^{k} \sum_{j=1}^{|d_i|} \log((1 - \lambda)p(d_{ij} | \theta_F) + \lambda p(d_{ij} | C))
]
由于该函数涉及两个项之和的对数,通过拉格朗日乘数法很难得到简单的解析解,因此通常需要依赖数值算法。EM算法是其中一种自然且能保证收敛到局部最大值的方法,在这种情况下,也是全局最大值,因为似然函数可以证明具有唯一的最大值。
2.4 不完整数据与完整数据
EM算法的主要思想是用一些潜在变量“扩充”数据,使“完整”数据的似然函数更简单,便于找到最大值。原始数据被视为“不完整”数据。通过最大化完整数据似然的期望来最大化不完整数据的似然,因为完整数据似然包含隐藏变量,而原始不完整数据似然不包含。
在示例中,为每个单词 $w$ 的出现引入一个二元隐藏变量 $z$,用于指示该单词是由背景模型 $p(w | C)$ 还是主题模型 $p(w | \theta_F)$ “生成”。对于文档 $d_i$ 中的第 $j$ 个单词 $d_{ij}$,定义相应的变量 $z_{ij}$ 如下:
[
z_{ij} =
\begin{cases}
1, & \text{如果单词 } d_{ij} \text{ 来自背景模型} \
0, & \text{否则}
\end{cases}
]
假设完整数据不仅包含 $F$ 中的所有单词,还包含它们对应的 $z$ 值。完整数据的对数似然为:
[
L_c(\theta_F) = \log p(F, z | \theta_F) = \sum_{i=1}^{k} \sum_{j=1}^{|d_i|} [(1 - z_{ij}) \log((1 - \lambda)p(d_{ij} | \theta_F)) + z_{ij} \log(\lambda p(d_{ij} | C))]
]
注意 $L_c(\theta_F)$ 和 $L(\theta_F)$ 的区别:$L_c(\theta_F)$ 中的求和在对数之外,这是因为假设知道每个单词 $d_{ij}$ 是由哪个组件模型生成的。
一般来说,如果参数为 $\theta$,原始数据为 $X$,用隐藏变量 $H$ 扩充数据,则有 $p(X, H | \theta) = p(H | X, \theta)p(X | \theta)$,因此:
[
L_c(\theta) = \log p(X, H | \theta) = \log p(X | \theta) + \log p(H | X, \theta) = L(\theta) + \log p(H | X, \theta)
]
2.5 似然的下界
算法上,EM的基本思想是从参数值 $\theta^{(0)}$ 的初始猜测开始,然后迭代地寻找更好的参数值。假设当前参数估计为 $\theta^{(n)}$,目标是找到另一个 $\theta^{(n+1)}$ 来提高似然 $L(\theta)$。
考虑潜在更好的参数值 $\theta$ 处的似然与当前估计 $\theta^{(n)}$ 处的似然之差,并将其与完整似然的相应差值相关联:
[
L(\theta) - L(\theta^{(n)}) = L_c(\theta) - L_c(\theta^{(n)}) + \log \frac{p(H | X, \theta^{(n)})}{p(H | X, \theta)}
]
目标是最大化 $L(\theta) - L(\theta^{(n)})$,这等价于最大化 $L(\theta)$。对该方程关于隐藏变量在数据 $X$ 和当前参数估计 $\theta^{(n)}$ 下的条件分布 $p(H | X, \theta^{(n)})$ 取期望,得到:
[
L(\theta) - L(\theta^{(n)}) = \sum_{H} L_c(\theta)p(H | X, \theta^{(n)}) - \sum_{H} L_c(\theta^{(n)})p(H | X, \theta^{(n)}) + \sum_{H} p(H | X, \theta^{(n)}) \log \frac{p(H | X, \theta^{(n)})}{p(H | X, \theta)}
]
方程左边保持不变,因为变量 $H$ 不在其中出现。最后一项是 $p(H | X, \theta^{(n)})$ 和 $p(H | X, \theta)$ 的KL散度,始终非负。因此有:
[
L(\theta) - L(\theta^{(n)}) \geq \sum_{H} L_c(\theta)p(H | X, \theta^{(n)}) - \sum_{H} L_c(\theta^{(n)})p(H | X, \theta^{(n)})
]
或
[
L(\theta) \geq \sum_{H} L_c(\theta)p(H | X, \theta^{(n)}) + L(\theta^{(n)}) - \sum_{H} L_c(\theta^{(n)})p(H | X, \theta^{(n)})
]
从而得到原始似然函数的下界。EM算法的主要思想是最大化这个下界,以最大化原始(不完整)似然。注意,下界中的最后两项可以视为常数,因为它们不包含变量 $\theta$,所以下界本质上是第一项,即完整似然的期望,称为Q函数,记为 $Q(\theta; \theta^{(n)})$:
[
Q(\theta; \theta^{(n)}) = E_{p(H|X,\theta^{(n)})}[L_c(\theta)] = \sum_{H} L_c(\theta)p(H | X, \theta^{(n)})
]
对于我们的混合模型,Q函数为:
[
Q(\theta_F; \theta_F^{(n)}) = \sum_{z} L_c(\theta_F)p(z | F, \theta_F^{(n)}) = \sum_{i=1}^{k} \sum_{j=1}^{|d_i|} [p(z_{ij} = 0 | F, \theta_F^{(n)}) \log((1 - \lambda)p(d_{ij} | \theta_F)) + p(z_{ij} = 1 | F, \theta_F^{(n)}) \log(\lambda p(d_{ij} | C))]
]
2.6 EM算法的一般步骤
- 初始化 :根据关于最优参数值可能位置的任何先验知识,随机或启发式地初始化 $\theta^{(0)}$。
- 迭代更新 :通过交替进行以下两个步骤来迭代改进 $\theta$ 的估计:
- E-step :计算 $Q(\theta; \theta^{(n)})$。
- M-step :通过最大化Q函数重新估计 $\theta$:$\theta^{(n+1)} = \arg\max_{\theta} Q(\theta; \theta^{(n)})$。
- 停止条件 :当似然 $L(\theta)$ 收敛时停止。
E-step的主要计算是计算 $p(H | X, \theta^{(n)})$,在我们的例子中,$p(z_{ij} = 1 | F, \theta_F^{(n)}) = \frac{\lambda p(d_{ij} | C)}{\lambda p(d_{ij} | C) + (1 - \lambda)p(d_{ij} | \theta_F^{(n)})}$,且 $p(z_{ij} = 0 | F, \theta_F^{(n)}) = 1 - p(z_{ij} = 1 | F, \theta_F^{(n)})$。M-step涉及最大化Q函数,在我们的例子中,可以使用拉格朗日乘数法找到解析解。
我们得到以下简单混合模型的EM更新公式:
[
p(z_w = 1 | F, \theta_F^{(n)}) = \frac{\lambda p(w | C)}{\lambda p(w | C) + (1 - \lambda)p(w | \theta_F^{(n)})} \quad \text{(E-step)}
]
[
p(w | \theta_F^{(n+1)}) = \frac{\sum_{i=1}^{k} (1 - p(z_w = 1 | F, \theta_F^{(n)}))c(w, d_i)}{\sum_{i=1}^{k} \sum_{w’} (1 - p(z_{w’} = 1 | F, \theta_F^{(n)}))c(w’, d_i)} \quad \text{(M-step)}
]
1.7 EM算法流程
graph TD;
A[初始化参数θ<sup>(0)</sup>] --> B[迭代开始];
B --> C[E-step: 计算Q(θ; θ<sup>(n)</sup>)];
C --> D[M-step: 最大化Q函数得到θ<sup>(n+1)</sup>];
D --> E{似然L(θ)是否收敛};
E -- 否 --> C;
E -- 是 --> F[结束迭代];
3. KL散度与狄利克雷先验平滑
3.1 KL散度的定义
给定两个概率质量函数 $p(x)$ 和 $q(x)$,$p$ 和 $q$ 之间的Kullback-Leibler散度(或相对熵)定义为:
[
D(p \parallel q) = \sum_{x} p(x) \log \frac{p(x)}{q(x)}
]
容易证明 $D(p \parallel q)$ 始终非负,且当且仅当 $p = q$ 时为零。尽管它不是分布之间的真正距离(因为它不对称且不满足三角不等式),但通常仍可将其视为分布之间的“距离”。
3.2 使用KL散度进行检索
假设查询 $q$ 由生成模型 $p(q | \theta_Q)$ 生成,文档 $d$ 由生成模型 $p(d | \theta_D)$ 生成。如果 $\hat{\theta}
Q$ 和 $\hat{\theta}_D$ 分别是估计的查询和文档语言模型,则文档 $d$ 相对于查询 $q$ 的相关性值可以通过以下负KL散度函数来衡量:
[
-D(\hat{\theta}_Q \parallel \hat{\theta}_D) = \sum
{w} p(w | \hat{\theta}
Q) \log p(w | \hat{\theta}_D) + (-\sum
{w} p(w | \hat{\theta}_Q) \log p(w | \hat{\theta}_Q))
]
公式右边的第二项是与查询相关的常数,即查询模型 $\hat{\theta}_Q$ 的熵,在文档排名时可以忽略。一般来说,上述公式的计算涉及对所有根据 $p(w | \hat{\theta}_Q)$ 具有非零概率的单词求和。但当 $\hat{\theta}_D$ 基于某些通用平滑方法时,计算只涉及对那些根据 $p(w | \hat{\theta}_Q)$ 具有非零概率且在文档 $d$ 中出现的单词求和,这种求和可以使用倒排索引更高效地计算。
3.3 通用平滑方案
假设通用平滑方案如下:
[
p(w | \hat{\theta}
D) =
\begin{cases}
p_s(w | d), & \text{如果单词 } w \text{ 被观察到} \
\alpha_d p(w | C), & \text{否则}
\end{cases}
]
其中,$p_s(w | d)$ 是文档中观察到的单词的平滑概率,$p(w | C)$ 是集合语言模型,$\alpha_d$ 是控制分配给未观察到单词的概率质量的系数,使得所有概率之和为1。一般来说,$\alpha_d$ 可能依赖于文档 $d$。如果 $p_s(w | d)$ 已知,则有:
[
\alpha = \frac{1 - \sum
{w:c(w;d)>0} p_s(w | d)}{1 - \sum_{w:c(w;d)>0} p(w | C)}
]
因此,不同的平滑方法本质上在于 $p_s(w | d)$ 的选择。集合语言模型 $p(w | C)$ 通常通过 $\frac{c(w,C)}{\sum_{w’} c(w’,C)}$ 或平滑版本 $\frac{c(w,C)+1}{V + \sum_{w’} c(w’,C)}$ 来估计,其中 $V$ 是估计的词汇表大小。平滑版本的一个优点是不会给任何项赋予零概率,但在检索性能方面,这两个版本没有显著差异。
在这种平滑方案下,KL散度评分公式本质上为:
[
\sum_{w} p(w | \hat{\theta}
Q) \log p(w | \hat{\theta}_D) = \left[ \sum
{w:c(w;d)>0,p(w|\hat{\theta}_Q)>0} p(w | \hat{\theta}_Q) \log \frac{p_s(w | d)}{\alpha_d p(w | C)} \right] + \log \alpha_d
]
评分现在基于对所有根据 $p(w | \hat{\theta}_Q)$ 具有非零概率且在文档中出现的项的求和,即所有“匹配”项。
3.4 使用狄利克雷先验平滑
狄利克雷先验平滑是一种遵循上述通用平滑方案的特定平滑方法。具体来说:
[
p_s(w | d) = \frac{c(w, d) + \mu p(w | C)}{|d| + \mu}
]
[
\alpha_d = \frac{\mu}{\mu + |d|}
]
将这些代入KL散度评分公式,得到使用狄利克雷先验平滑的KL散度评分公式为:
[
\left[ \sum_{w:c(w;d)>0,p(w|\hat{\theta}_Q)>0} p(w | \hat{\theta}_Q) \log(1 + \frac{c(w, d)}{\mu p(w | C)}) \right] + \log \frac{\mu}{\mu + |d|}
]
3.5 计算查询模型 $p(w | \hat{\theta}_Q)$
计算 $p(w | \hat{\theta}
Q)$ 有以下两种方法:
-
最大似然估计
:使用查询文本作为证据,通过最大似然估计器估计该概率,得到 $p
{ml}(w | \hat{\theta}
Q) = \frac{c(w, q)}{|q|}$。使用这个估计值,KL散度评分公式本质上与查询似然检索公式相同。
-
利用反馈文档
:将简单的 $p
{ml}(w | \hat{\theta}
Q)$ 与基于反馈文档估计的反馈模型 $p(w | \theta_F)$ 进行插值,即 $p(w | \hat{\theta}_Q) = (1 - \alpha)p
{ml}(w | \hat{\theta}_Q) + \alpha p(w | \theta_F)$,其中 $\alpha$ 是一个需要通过经验设置的参数。
要估计 $p(w | \theta_F)$,可以假设反馈文档的以下双组件混合模型:
[
\log p(F | \theta_F) = \sum_{i=1}^{k} \sum_{w} c(w; d_i) \log((1 - \lambda)p(w | \theta_F) + \lambda p(w | C))
]
其中,$F = {d_1, \ldots, d_k}$ 是反馈文档集,$\lambda$ 是另一个需要通过经验设置的参数,表示反馈文档中的“背景噪声”量。给定 $\lambda$、反馈文档 $F$ 和集合语言模型 $p(w | C)$,可以使用EM算法计算 $\theta_F$ 的最大似然估计。
3.6 KL散度检索流程
graph TD;
A[计算查询模型p(w | θQ)] --> B[选择平滑方法计算p(w | θD)];
B --> C[计算KL散度评分];
C --> D[对文档进行排名];
综上所述,EM算法和KL散度及狄利克雷先验平滑在语言建模和信息检索中都具有重要的应用价值。EM算法通过迭代的方式处理不完整数据,能够有效地估计混合模型的参数;而KL散度和狄利克雷先验平滑则为文档与查询的相关性评估提供了一种有效的方法,通过合理的平滑处理,可以提高检索性能。在实际应用中,可以根据具体的问题和数据特点选择合适的算法和方法。
4. 方法对比与应用场景分析
4.1 EM算法与其他参数估计方法对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| EM算法 | 能处理不完整数据和潜在变量,保证收敛到局部最大值 | 可能陷入局部最优,计算复杂度较高 | 数据存在缺失值、需要估计混合模型参数的场景 |
| 最大似然估计(无EM) | 原理简单,直观易懂 | 难以处理复杂的似然函数,可能无法得到解析解 | 似然函数形式简单,数据完整的场景 |
| 拉格朗日乘数法 | 可得到解析解 | 对函数形式要求高,不适用于复杂的对数和形式的似然函数 | 目标函数和约束条件简单的优化问题 |
4.2 KL散度与其他相关性度量方法对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| KL散度 | 考虑了分布差异,可用于衡量文档与查询的相关性 | 不对称,不满足三角不等式 | 基于概率分布模型的信息检索场景 |
| 余弦相似度 | 计算简单,适用于高维向量空间 | 未考虑向量的概率分布信息 | 文本向量表示的相似度计算场景 |
| 欧氏距离 | 直观反映向量间的距离 | 对向量的尺度敏感 | 数据具有明确的几何意义,需要计算距离的场景 |
4.3 不同平滑方法的应用场景
| 平滑方法 | 特点 | 适用场景 |
|---|---|---|
| 狄利克雷先验平滑 | 考虑了集合语言模型,对未观察到的单词进行合理处理 | 数据稀疏,需要对未出现单词进行平滑处理的场景 |
| 通用平滑方案(自定义 $p_s(w | d)$) | 灵活性高,可根据具体需求调整 |
5. 实践案例:基于EM算法和KL散度的信息检索系统
5.1 系统架构
graph LR;
A[数据收集] --> B[数据预处理];
B --> C[模型训练];
C --> D[查询处理];
D --> E[文档排名];
E --> F[结果展示];
G[反馈文档] --> C;
5.2 详细步骤
- 数据收集 :收集文档集合和查询数据。
- 数据预处理 :对文档和查询进行分词、去除停用词等操作,构建词汇表。
-
模型训练
:
-
使用EM算法估计主题模型 $p(w | \theta_F)$,具体步骤如下:
- 初始化参数 $\theta^{(0)}$。
-
迭代进行E-step和M-step:
- E-step:计算 $p(z_{ij} = 1 | F, \theta_F^{(n)}) = \frac{\lambda p(d_{ij} | C)}{\lambda p(d_{ij} | C) + (1 - \lambda)p(d_{ij} | \theta_F^{(n)})}$ 。
- M-step:更新 $p(w | \theta_F^{(n+1)}) = \frac{\sum_{i=1}^{k} (1 - p(z_w = 1 | F, \theta_F^{(n)}))c(w, d_i)}{\sum_{i=1}^{k} \sum_{w’} (1 - p(z_{w’} = 1 | F, \theta_F^{(n)}))c(w’, d_i)}$ 。
- 直到似然 $L(\theta)$ 收敛。
- 估计集合语言模型 $p(w | C)$,可以使用 $\frac{c(w,C)}{\sum_{w’} c(w’,C)}$ 或平滑版本 $\frac{c(w,C)+1}{V + \sum_{w’} c(w’,C)}$ 。
-
使用EM算法估计主题模型 $p(w | \theta_F)$,具体步骤如下:
-
查询处理
:
- 计算查询模型 $p(w | \hat{\theta} Q)$,可以选择最大似然估计 $p {ml}(w | \hat{\theta} Q) = \frac{c(w, q)}{|q|}$ 或利用反馈文档进行插值 $p(w | \hat{\theta}_Q) = (1 - \alpha)p {ml}(w | \hat{\theta}_Q) + \alpha p(w | \theta_F)$ 。
- 选择平滑方法计算文档模型 $p(w | \hat{\theta}_D)$,如狄利克雷先验平滑 $p_s(w | d) = \frac{c(w, d) + \mu p(w | C)}{|d| + \mu}$ ,$\alpha_d = \frac{\mu}{\mu + |d|}$ 。
-
文档排名
:
- 计算KL散度评分 $-D(\hat{\theta} Q \parallel \hat{\theta}_D) = \sum {w} p(w | \hat{\theta} Q) \log p(w | \hat{\theta}_D) + (-\sum {w} p(w | \hat{\theta}_Q) \log p(w | \hat{\theta}_Q))$ ,忽略查询模型的熵项。
- 根据评分对文档进行排名。
- 结果展示 :将排名后的文档展示给用户。
5.3 优化建议
- 参数调优 :通过交叉验证等方法,调整 $\lambda$、$\mu$、$\alpha$ 等参数,以提高系统的性能。
- 并行计算 :在EM算法的迭代过程中,可以使用并行计算来加速计算速度。
- 增量更新 :当有新的文档或查询加入时,采用增量更新的方式更新模型,避免重新训练整个模型。
6. 总结与展望
6.1 总结
本文详细介绍了EM算法、KL散度和狄利克雷先验平滑的原理、应用和实践案例。EM算法通过迭代的方式处理不完整数据,能够有效地估计混合模型的参数;KL散度为衡量文档与查询的相关性提供了一种有效的方法;狄利克雷先验平滑则对数据稀疏问题进行了合理处理。在实际应用中,这些方法可以结合使用,构建高效的信息检索系统。
6.2 展望
- 深度学习融合 :将EM算法、KL散度和狄利克雷先验平滑与深度学习模型相结合,如神经网络、Transformer等,以提高信息检索的性能和效果。
- 多模态信息处理 :随着多模态数据的不断增加,研究如何将这些方法应用于图像、音频、视频等多模态信息的检索和处理。
- 自适应平滑方法 :开发自适应的平滑方法,根据数据的特点和查询的需求自动调整平滑参数,提高系统的适应性和灵活性。
通过不断的研究和实践,这些方法将在信息检索、自然语言处理等领域发挥更加重要的作用。
超级会员免费看
31

被折叠的 条评论
为什么被折叠?



