基于Spark的大规模语言模型训练(下篇)

阿凡达2018-08-21 12:41

其中 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.13.2节所述,结合Spark分布式框架,将Witten-Bell的插值平滑算法转换成分布式训练,以及词频截止版本。所依赖的公式为(8)、(10)和(11)、(12)。具体实现步骤主要包括:1gram词频统计、ngram词频统计、ngram根据第一个词进行分块、子块WB插值平滑估计、条件概率精确计算等。

11gram词频统计

       计算(8-3)与(11-3)所需要的参数。通过分布式flatMap接口实现,以传递到后续子块WB插值平滑估计中。


2ngram词频统计

从原始语料中统计ngram及其词频(n可任意指定)。

 

3ngram根据第一个词进行分块

通过groupByKey()接口将具有相同Keyngram聚集在一起。

4、子块WB插值平滑估计

对于相同Key聚集在一起的ngram,计算获得公式(12)中的三个概率值,获得初步的语言模型概率参数。

5、条件概率精确计算

根据公式(12),按照从低阶到高阶的顺序,依次计算获得ngram的条件概率。

 

3.4  实验

根据插值与回退模型的分布式实现(3台服务器构成的Spark训练框架,采用20核、400个并发),在200M训练语料和940句构成的测试语料上进行了实验对比。其结果如下表所示:

2 插值与回退模型的分布式训练试验对比


由表2可见,在200M小规模语料下,插值模型与GT回退模型的分布式实现,在PPL差异较低(WBGT回退性能弱约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格式进行重新排列。



相关阅读:

基于Spark的大规模语言模型训练(上篇)

基于Spark的大规模语言模型训练(中篇)

基于Spark的大规模语言模型训练(下篇)

网易云新用户大礼包:https://www.163yun.com/gift

本文来自网易实践者社区,经作者胡光龙授权发布。