基于互信息最大化的无监督词对齐算法详解
好的,我注意到这个题目不在你已给出的历史列表中。我将为你详细讲解这个在机器翻译、跨语言信息检索等领域基础且重要的算法。
一、题目描述
词对齐是跨语言自然语言处理中的一个核心任务。给定一个由源语言句子和目标语言句子组成的双语平行句对,词对齐的目标是找出源语言句子中每个词(或短语)与目标语言句子中哪个(或哪些)词相对应。
例如,对于英文-中文句对:
- 源语言(英文):
The cat sat on the mat. - 目标语言(中文):
猫 坐 在 垫子 上 。
一个理想的词对齐结果是:The -> 猫?不,实际上 The cat 整体对应 猫,sat 对应 坐,on 对应 在...上,the mat 对应 垫子。但算法通常先从词到词的对应开始。
基于互信息最大化的无监督词对齐算法(典型代表是 IBM Model 1 和 IBM Model 2)是一类经典的、完全无监督的方法。它不需要任何人工标注的对齐数据,仅依靠大量平行语料,通过迭代优化一个统计模型,最终得到词与词之间的翻译概率和对齐关系。
核心思想:如果两个词经常在平行的句子对中同时出现(共现),那么它们互为翻译的可能性就很高。算法通过建模这种共现统计量,并利用期望最大化算法来迭代优化模型参数。
二、解题过程循序渐进讲解
我们将以最基础的 IBM Model 1 为例,因为它形式简单,但包含了此类算法的核心思想。理解Model 1后,更复杂的模型(如Model 2引入对齐位置概率,Model 3引入繁衍度等)就更容易掌握了。
步骤1:问题定义与建模假设
假设我们有一个平行语料库,包含 \(S\) 个句对。对于第 \(s\) 个句对:
- 源语言(外文
e)句子长度为 \(l_s\): \(e_s = e_{s1}, e_{s2}, ..., e_{s l_s}\) - 目标语言(中文
c)句子长度为 \(m_s\): \(c_s = c_{s1}, c_{s2}, ..., c_{s m_s}\)
我们需要学习什么?
学习一个参数集 \(\theta\),核心是词翻译概率表 \(t(c | e)\)。它表示给定一个源语言词 \(e\),翻译成目标语言词 \(c\) 的概率。例如,\(t(猫 | cat)\) 应该很高。
IBM Model 1的简化假设:
- 对齐独立性:目标句中的每个词 \(c_j\) 的对齐 \(a_j\)(指向源句中的某个位置 \(i\))是相互独立的。
- 对齐均匀分布:每个目标词对齐到源句任意位置的概率是相等的,即 \(p(a_j = i) = 1 / (l_s + 1)\)。这里多一个位置(索引0)代表对齐到“NULL”(空),用于处理目标句中无对应源词的词。
- 词生成概率:给定对齐位置 \(a_j = i\),生成目标词 \(c_j\) 的概率只依赖于对应的源词 \(e_i\),即 \(p(c_j | e_{a_j}) = t(c_j | e_{a_j})\)。
基于这些假设,一个目标句子 \(c\) 由源句子 \(e\) 通过某个对齐方式 \(a\) 生成的概率为:
\[p(c, a | e) = \frac{\epsilon}{(l+1)^m} \prod_{j=1}^{m} t(c_j | e_{a_j}) \]
其中 \(\epsilon\) 是一个常数,\(m\) 是目标句长度,\(l\) 是源句长度。
步骤2:引入隐变量与EM算法框架
这里的隐变量就是对齐关系 \(a\)。我们既看不到真实的 \(a\),也不知道 \(t(c|e)\)。EM算法正是为解决此类“已知结果(平行句对),未知过程(对齐)和参数(翻译概率)”的问题而设计的。
EM算法的两阶段迭代:
- E步(期望步):在当前参数 \(\theta^{(k)}\)(即当前的翻译概率表 \(t^{(k)}\))下,计算每个平行句对中所有可能对齐的后验概率 \(p(a | c, e)\)。
- M步(最大化步):利用E步计算出的对齐后验概率作为“软计数”,更新参数 \(\theta^{(k+1)}\)(即新的翻译概率表 \(t^{(k+1)}\)),使得所有句对的期望似然最大化。
步骤3:E步 - 计算对齐后验概率
对于单个句对 \((e, c)\),在Model 1的假设下,计算对齐 \(a_j = i\)(即目标词 \(c_j\) 对齐到源词 \(e_i\))的后验概率出奇地简单:
\[p(a_j = i | c_j, e) = \frac{t(c_j | e_i)}{\sum_{i’=0}^{l} t(c_j | e_{i’})} \]
其中 \(i=0\) 对应 NULL 词。
这意味着什么?
对于一个特定的目标词 \(c_j\),它对齐到源句第 \(i\) 个词的概率,正比于当前模型中 \(c_j\) 由 \(e_i\) 翻译而来的概率 \(t(c_j|e_i)\),并经过所有可能源词(包括NULL)的概率之和归一化。这就是一个“软对齐”,不再是0或1,而是一个0到1之间的概率值。
步骤4:M步 - 更新翻译概率参数
M步的目标是利用E步得到的“软计数”来更新 \(t(c|e)\)。我们收集所有句对中,词对 \((e, c)\) 的“期望共现次数”。
- 计算期望计数:遍历所有平行句对 \(s\),对于句对中的每一个目标词位置 \(j\),计算它对每一个源词 \(e_i\) 的“贡献”。这个贡献就是E步计算的 \(p(a_{sj} = i | c_{sj}, e_s)\)。我们将所有句对中,源词是 \(e\)、目标词是 \(c\) 的这些贡献值加起来,得到期望计数 \(count(e, c)\)。
\[ count(e, c) = \sum_{s} \sum_{j: c_{sj}=c} \sum_{i: e_{si}=e} p(a_{sj}=i | c_{sj}, e_s) \]
- 归一化得到新概率:对于每个源词 \(e\),要保证所有可能的目标词 \(c\) 的翻译概率之和为1。因此,我们用 \(e\) 的总期望计数去归一化。
\[ t^{(new)}(c | e) = \frac{count(e, c)}{\sum_{c’} count(e, c’)} \]
步骤5:迭代与收敛
将更新后的 \(t^{(new)}(c|e)\) 作为新的当前参数,重复步骤3(E步) 和 步骤4(M步)。
这个过程在做什么?
- 初始化:通常随机初始化 \(t(c|e)\),或使用均匀分布。
- 迭代:
- E步:基于当前的“猜测”(翻译概率),为每个词对分配一个“责任”(对齐概率)。相关性强的词对会获得更高的责任。
- M步:根据这些“责任”重新估算翻译概率。共现次数多的词对,其翻译概率会得到加强。
- 收敛:经过多次迭代,翻译概率 \(t(c|e)\) 的变化会越来越小,模型趋于稳定。此时,\(t(c|e)\) 就学习到了一个相对可靠的词级翻译词典。
步骤6:获取最终词对齐
模型收敛后,我们可以为每个平行句对确定一个硬对齐。最简单的方法是采用 Viterbi对齐(最大可能对齐):
对于目标句中的每个词 \(c_j\),选择使其对齐概率最大的源句位置 \(i\):
\[a_j = \arg\max_{i} p(a_j = i | c_j, e) = \arg\max_{i} t(c_j | e_i) \]
这样我们就得到了一个从目标词到源词的1对0,1对1,或1对多的对齐关系(反向对齐同理可得)。
三、算法总结与扩展
- 核心:通过无监督的EM算法,从大量平行语料中自动学习词翻译概率表 \(t(c|e)\),进而得到词对齐。
- 优点:完全无监督,只需平行文本;模型简单,是后续更复杂对齐和翻译模型(如IBM Model 2-5,乃至早期统计机器翻译)的基础。
- 局限性:
- Model 1假设过强:对齐均匀分布、不考虑词序,导致其对齐质量有限。
- 后续模型改进:
- IBM Model 2:引入对齐模型 \(p(i | j, l, m)\),考虑目标词位置 \(j\) 和句子长度对对齐位置 \(i\) 的影响,打破了均匀假设。
- IBM Model 3/4/5:进一步引入繁衍度(一个源词生成多个目标词的概率)、扭曲度(建模词序变化)等概念,更加复杂和强大。
- 现代应用:虽然如今神经机器翻译通常使用基于注意力的软对齐,但这类基于互信息最大化的统计对齐方法因其可靠性和可解释性,仍常用于为神经网络模型提供初始化对齐或生成训练数据,也是理解词对齐概念的经典范例。
通过以上六个步骤,我们循序渐进地从问题定义、模型假设、引入EM算法、推导E步和M步的详细计算,到最终获取对齐,完整地阐述了基于互信息最大化的无监督词对齐算法的核心原理。