基于互信息最大化的双语词典归纳(Bilingual Lexicon Induction via Mutual Information Maximization)算法详解
我将为你讲解一个利用互信息进行无监督双语词典构建的算法。这个算法不依赖平行语料,仅利用单语语料中学习到的词向量来对齐两种语言的词汇空间,进而构建双语词典。
1. 问题定义与背景
问题:给定两种语言(如英语和法语)各自的单语语料库,以及从这些语料库中分别学习到的词向量集合(如英语词向量矩阵 X ∈ ℝ^{n×d},法语词向量矩阵 Z ∈ ℝ^{m×d},其中 n 和 m 分别是两种语言的词汇表大小,d 是词向量维度),目标是学习一个映射函数(通常是一个正交变换矩阵 W),使得映射后的英语词向量 WX 与对应的法语词向量 Z 在公共空间中对齐,从而为每个英语词找到其对应的法语翻译(即构建双语词典)。
核心挑战:在没有任何翻译对监督信号的情况下,如何使两种语言的向量空间对齐?互信息最大化提供了一种解决方案。
2. 算法核心思想:互信息最大化
算法的核心思想是:一个好的对齐应该使得从一种语言空间映射到另一种语言空间后,两种语言词向量之间的互信息最大。
互信息衡量的是两个随机变量之间的相互依赖程度。在这里,我们可以将英语词向量(经过映射后)和法语词向量看作两个随机变量。最大化它们的互信息,意味着我们寻找的映射 W 能使两种语言的词向量表示在共同的语义空间中最“一致”或最“可预测”。
3. 算法步骤详解
假设我们有两个词向量矩阵:
- 英语词向量矩阵:X = [x₁, x₂, ..., x_n]ᵀ ∈ ℝ^{n×d}(已归一化,即每个向量x的L2范数为1)。
- 法语词向量矩阵:Z = [z₁, z₂, ..., z_m]ᵀ ∈ ℝ^{m×d}(已归一化)。
步骤1:定义联合分布与互信息
- 我们将每个英语词和每个法语词视为一个事件。
- 定义英语词向量 y = Wx(映射后)和法语词向量 z 之间的联合概率分布为基于它们余弦相似度的softmax分布:
- \(P(i, j) = \frac{\exp(\beta \cdot \text{cosine}(y_i, z_j))}{\sum_{i’}\sum_{j’} \exp(\beta \cdot \text{cosine}(y_{i’}, z_{j’}))}\)
- 其中,β 是一个温度超参数,控制分布的尖锐程度。余弦相似度 \(\text{cosine}(y_i, z_j) = y_i^T z_j\)(因为向量已归一化,点积即余弦相似度)。
- 相应的边缘分布为:
- \(P_X(i) = \sum_j P(i, j)\) (英语词的边缘概率)
- \(P_Z(j) = \sum_i P(i, j)\) (法语词的边缘概率)
- 我们想要最大化的互信息 I(Y; Z) 定义为:
- \(I(Y; Z) = \sum_{i} \sum_{j} P(i, j) \log \frac{P(i, j)}{P_X(i) P_Z(j)}\)
步骤2:互信息的变分下界(便于优化)
直接最大化互信息I(Y; Z)在计算上比较困难,因为需要计算整个联合分布和对数项。一个经典的技巧是使用其变分下界(Variational Lower Bound)。
我们引入一个变分分布 Q(j|i),来近似真实的条件分布 P(j|i) = P(i, j) / P_X(i)。根据信息论,互信息可以表示为:
\(I(Y; Z) = H(Z) - H(Z|Y)\),其中 H 是熵。
可以推导出:
\(I(Y; Z) ≥ E_{P(i,j)}[\log Q(j|i)] + H(Z)\)
由于 H(Z) 是一个常数(与映射 W 无关),所以我们只需要最大化变分下界:
\(L(W, Q) = E_{P(i,j)}[\log Q(j|i)]\)
步骤3:参数化变分分布 Q
一个自然的选择是将 Q(j|i) 参数化为一个基于相似度的softmax分布:
\(Q(j|i) = \frac{\exp(y_i^T z_j / \tau)}{\sum_{j’} \exp(y_i^T z_{j’} / \tau)}\)
其中 τ 是一个温度参数。
此时,最大化 L(W, Q) 等价于最小化 P(i, j) 和 Q(j|i) 之间的交叉熵。而 P(i, j) 本身又依赖于 W(通过 y_i = W x_i)。这就形成了一个“鸡生蛋蛋生鸡”的循环。
步骤4:迭代优化算法(EM算法思想)
算法采用期望最大化(EM)式的迭代过程来求解 W 和 Q:
-
E步(推断对齐):固定当前映射矩阵 W,计算当前联合分布 P(i, j) 和边缘分布。然后,利用CSLS(Cross-domain Similarity Local Scaling) 等更鲁棒的最近邻检索方法,为每个英语词 i 找到其最可能的法语词 j*,构建一个初步的“种子词典”或软对齐分布。CSLS方法可以缓解Hubness问题(即某些向量是很多向量的最近邻,而某些向量从来不是任何向量的最近邻)。
- CSLS(k) 相似度定义为:\(\text{CSLS}(y_i, z_j) = 2\cos(y_i, z_j) - r_T(y_i) - r_S(z_j)\)
- 其中,\(r_T(y_i)\) 是 y_i 到其目标语言(法语)中 k 个最近邻的平均相似度,\(r_S(z_j)\) 是 z_j 到其源语言(英语)中 k 个最近邻的平均相似度。使用CSLS相似度替代原始余弦相似度来计算 P(i, j) 或直接检索最近邻,效果更好。
-
M步(更新映射):固定当前基于CSLS得到的(软或硬)对齐关系,优化映射矩阵 W,使得对齐的词对之间的相似度最大。这通常转化为一个Procrustes问题。
- 假设我们有一组通过当前对齐得到的高置信度词对 { (x_k, z_k) },我们希望最小化:
\(\sum_k || W x_k - z_k ||^2\) - 当词向量是归一化的,且我们约束 W 为一个正交矩阵(保持向量间的相对关系不变)时,该问题有封闭解。解可以通过奇异值分解(SVD) 求得:
- 令 C = Σ_k (z_k x_k^T),计算 SVD:C = U Σ V^T
- 最优的正交映射矩阵为:W* = U V^T
- 假设我们有一组通过当前对齐得到的高置信度词对 { (x_k, z_k) },我们希望最小化:
-
迭代:重复进行E步(用更新后的W重新计算对齐)和M步(用新的对齐更新W),直到收敛(如W的变化很小,或词典准确率在验证集上不再提升)。
步骤5:词典归纳
在算法收敛后,我们得到最终的映射矩阵 W。对于任何一个英语词 i,其映射后的向量为 y_i = W x_i。我们通过计算 y_i 与所有法语词向量 {z_j} 的 CSLS相似度,选择相似度最高的法语词作为其翻译,从而构建出完整的双语词典。
4. 关键技术与改进点
- 正交约束:约束 W 为正交矩阵至关重要。这源于一个假设:在单语空间中有效的几何结构(如词类比关系)在跨语言空间中也应保持。正交变换是保持向量点积和距离的线性变换中最简单的一种。
- CSLS检索:在最近邻检索中使用CSLS而非原始余弦相似度,能有效解决向量空间的Hubness问题,显著提升对齐的准确率。
- 渐进式挖掘:在实际操作中,通常从一个非常小的、高置信度的“种子词典”(可能来自数字、姓名等相同字符串)开始迭代,或者在每次迭代中只选择相似度最高的前N个词对作为“种子”用于M步的Procrustes分析,然后逐步扩大这个种子集。这可以提高算法的稳定性和最终性能。
- 反向一致性验证:一种常用的提升准确率的技术是进行双向验证。即同时学习英语到法语(W_en2fr)和法语到英语(W_fr2en)的映射,然后只保留那些双向检索都一致的词对作为最终词典条目。
5. 总结与应用
基于互信息最大化的双语词典归纳算法,其核心是通过最大化两种语言词向量分布间的互信息来驱动无监督对齐。通过结合变分下界优化、EM迭代、Procrustes分析、CSLS检索等技术,该算法能够仅利用单语词向量,有效构建双语词典。
应用场景:
- 为低资源语言对构建机器翻译的初始词典。
- 跨语言信息检索(CLIR)。
- 跨语言词向量空间的初始化。
- 作为无监督神经机器翻译(UNMT)流水线中的关键预处理步骤。
这个算法体现了如何将信息论概念(互信息)与表示学习(词向量)及数值优化(SVD)相结合,来解决经典的跨语言NLP问题。