本文利用贝叶斯chain rule 对IBM model1模型进行了目标函数的推导与代码层面的一些实现,仅为学习时记录,理解不到位情况还请批评指正
本文作为自然语言处理训练营的学习材料,原文来自于课程助教陈老师的专栏:https://zhuanlan.zhihu.com/p/72160554 。
1.alignment:在平行文本中,我们将一种语言中的单词与另一种语言中的单词的对齐叫做alignment(eg:das->the,Haus->house,ist->is,klein->small),alignment只是对应关系,并不是概率值
a : {1 → 1, 2 → 2, 3 → 3, 4 → 4}3.IBM model1:该模型是以统计alinment下语言1翻译为语言2的概率。IBM Model 1 采用最简单的假设:假设每个alignment所发生的概率相同。
I^J
f=(f_1,f_2,...f_{l_f})
e=(e1,e2,…,e_{l_e})
P(a|e,f)d) 参数估计:EM算法,最大化期望算法,通过概率模型中寻找参数最大似然估计或者最大 后验估计的算法,其中概率模型依赖于无法观测的隐性变量。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行,使参数不断接近最大似然值。
在IBM model中,因为引入了alignment这个概念,因此,整个翻译过程都是通过在alignment关系下,最大化外语单词翻译为目标语言单词的概率。
p(a|e, f)
P(e|f)
\\begin{aligned} p(e|f) &= \\sum_{a}^{}{p(e, a|f)} \\\\ &=\\sum_{a(1)=0}^{l_f}{} ... \\sum_{a(l_e)=0}^{l_f}{p(e,a|f)} \\\\ &=\\sum_{a(1)=0}^{l_f}{} ... \\sum_{a(l_e)=0}^{l_f}{\\frac{\\epsilon}{(l_f + 1)^{l_e}}\\prod_{j=1}^{l_e}{t(e_j|f_{a(j)})}} \\\\ &=\\frac{\\epsilon}{(l_f + 1)^{l_e}}\\sum_{a(1)=0}^{l_f}{} ... \\sum_{a(l_e)=0}^{l_f}{} \\prod_{j=1}^{l_e}{t(e_j|f_{a(j)})} \\\\ &=\\frac{\\epsilon}{(l_f + 1)^{l_e}}\\prod_{j=1}^{l_e}\\sum_{i=0}^{l_f}{t(e_j|f_{i})} \\end{aligned}
P(a|e_j,f_i)=\\frac{\\epsilon}{l_f+1}(b)计算目标函数,如下:
\\begin{aligned} p(a|e, f) &= \\frac{p(e, a|f)}{p(e|f)} \\\\ &=\\frac{\\frac{\\epsilon}{(l_f + 1)^{l_e}}\\prod_{j=1}^{l_e}{t(e_j|f_{a(j)})}} {\\frac{\\epsilon}{(l_f + 1)^{l_e}}\\prod_{j=1}^{l_e}\\sum_{i=0}^{l_f}{t(e_j|f_{i})}} \\\\ &=\\prod_{j=1}^{l_e}{\\frac{t(e_j|f_{a(j)})}{\\sum_{i=0}^{l_f}{t(e_j|f_{i})}}} \\end{aligned}
t(e_j|f_i)
c(e, f)
c(e|f; e, f) = \\sum_{a}^{}{p(e, a|f)}\\sum_{j=1}^{l_e}\\delta(e,e_j)\\delta(f,f_{a(i)})
c(e|f; e, f) = \\frac{t(e|f{})}{\\sum_{i=0}^{l_f}{t(e|f_i)}}\\sum_{j=1}^{l_e}\\delta(e,e_j)\\delta(f,f_{a(i)})
\\delta(e,e_j)最终可按照如下式子估计整个模型的参数:
t(e|f ; e, f) =\\frac{\\sum_{(e,f)}{c(e|f ; e, f)}}{\\sum_{(e)}\\sum_{(e,f)}c(e|f ; e, f)}
t(e|f)
t(f|e)
\\sum_{(e,f)}{c(e|f ; e, f)}
\\frac{\\sum_{(e,f)}{c(e|f ; e, f)}}{\\sum_{(e)}\\sum_{(e,f)}c(e|f ; e, f)}