其中 是n-gram的截止频率(count cutoff)。此时的最大似然概率为:
据此,带词频截止的Witten-Bell插值平滑条件概率为:(11)
其中,以保证概率和为1.转化成ARPA格式的语言模型时,相应地,
1) 条件概率:(11-1)
2) 回退权重: (11-2)
3) 一阶条件概率:(11-3)
类似于3.1节所述,其回退权重也可以在一次分布式训练中获得。其条件概率也可以相应地修改为:
(12)
利用与3.1节类似的调整策略来获得最终的语言模型。
3.3 基于Spark的分布式实现
根据3.1和3.2节所述,结合Spark分布式框架,将Witten-Bell的插值平滑算法转换成分布式训练,以及词频截止版本。所依赖的公式为(8)、(10)和(11)、(12)。具体实现步骤主要包括:1gram词频统计、ngram词频统计、ngram根据第一个词进行分块、子块WB插值平滑估计、条件概率精确计算等。
1、1gram词频统计
计算(8-3)与(11-3)所需要的参数。通过分布式flatMap接口实现,以传递到后续子块WB插值平滑估计中。
2、ngram词频统计
从原始语料中统计ngram及其词频(n可任意指定)。
3、ngram根据第一个词进行分块
通过groupByKey()接口将具有相同Key的ngram聚集在一起。
4、子块WB插值平滑估计
对于相同Key聚集在一起的ngram,计算获得公式(12)中的三个概率值,获得初步的语言模型概率参数。
5、条件概率精确计算
根据公式(12),按照从低阶到高阶的顺序,依次计算获得ngram的条件概率。
3.4 实验
根据插值与回退模型的分布式实现(3台服务器构成的Spark训练框架,采用20核、400个并发),在200M训练语料和940句构成的测试语料上进行了实验对比。其结果如下表所示:
表2 插值与回退模型的分布式训练试验对比
由表2可见,在200M小规模语料下,插值模型与GT回退模型的分布式实现,在PPL差异较低(WB比GT回退性能弱约2.4%)的情况下,WB训练耗时约为GT回退的25%。根据文献[4]中的实验结果,在大规模语料的情况下,平滑算法之间的性能差异将微乎其微,是否可训练才是瓶颈所在。因此,基于WB插值模型的分布式训练,可有效解决大规模语料的训练问题。
目前,我们已成功利用该技术实现10T语料的大规模语言模型训练技术,显著改善上述测试集的PPL性能(由200M规模下的372降低到10T规模下的195),并成功应用到网易语音识别项目中,效果显著。
参考文献
1. Christian Mandery, Distributed N-Gram Language Models: Application of Large Models to Automatic Speech Recognition, 2011.
2. 骆卫华等, 面向大规模语料的语言模型研究新进展, 2009.
3. 张润延等, 对 IRSTLM 的分析和改进, 2008.
4. Google, Large Language Models in Machine Translation, 2007.
5. SRILM — AN EXTENSIBLE LANGUAGE MODELING TOOLKIT, 2002.
6. Joshua Goodman, An Empirical Study of Smoothing Techniques for Language Modeling, 1998.
附录1 IRSTLM语言模型训练流程
本流程为IRSTLM中所实现的训练流程,供参考对比。
Step1 词典切分
根据词频均衡来进行词典划分。
Step2 对每个子词典,统计相应的ngram词频
这些ngram的第一个词都属于该子词典。
Step3 对每个子块分别估计相应的语言模型参数(条件概率和回退权重)
IRSTLM中所使用的近似的Witten-Bell插值平滑和KN平滑。详见其计算原理。单个子块的计算所占内存较小,或者根据内存大小来调整每次需要的子块数。
Step 4 语言模型合并
将多个子语言模型简单合并,或者按照ARPA格式进行重新排列。
相关阅读:
网易云新用户大礼包:https://www.163yun.com/gift
本文来自网易实践者社区,经作者胡光龙授权发布。