趋近智
深度学习模型擅长从原始特征中学习,但它们主要处理声学信息。为了帮助它们做出符合语言学原理的判断,我们引入了统计语言模型。最基本的一种是N-gram模型,它通过对词语之间如何相互关联做出简化假设,来计算词语序列W的概率。
N-gram模型不尝试计算给定词语在所有前序词语完整历史背景下的概率(这会是计算密集且数据需求大的任务),而是假设给定词语的概率仅取决于前n−1个词。这是马尔可夫假设的一种运用。
词语序列W=(w1,w2,…,wk)的完整概率可以使用概率链式法则表示为:
P(W)=P(w1)P(w2∣w1)P(w3∣w1,w2)…P(wk∣w1,…,wk−1)N-gram模型通过限制上下文窗口来近似此计算。对于给定的n,词语wi的概率近似为:
P(wi∣w1,…,wi−1)≈P(wi∣wi−n+1,…,wi−1)下面我们考察一下这对于常见的n值是如何运作的。
最简单的模型,即一元模型,假设每个词都独立于其他所有词。一个词的概率就是它在训练文本中出现的频率。
这是一种“词袋”方法。它完全忽略了词序和上下文,使其过于简单,无法生成连贯的句子。它无法区分“recognize speech”和“speech recognize”。
二元模型是一个重要的进步。它假设一个词的概率仅取决于前面一个词。
使用我们当前的例子,二元模型将评估:
在一个大型英语文本语料库中,“recognize speech”这个短语远比“wreck a nice”常见,因此模型会正确地为第一个转录结果分配更高的概率。
三元模型会考虑前两个词,从而获取更多上下文信息。
这使得模型能够学习更长距离的依赖关系,比如“a nice beach”这个短语比“a nice speech”更可能出现。随着n的增加,模型可以捕获更多的上下文,但这会带来代价。高阶N-gram模型需要更多的训练数据,并且更容易受到我们即将讨论的问题的影响。在实际应用中,3元和4元模型历来为ASR系统提供了良好的平衡。
N-gram概率直接从称为语料库的大量文本中估计得出。计算是最大似然估计(MLE)的直接运用,它涉及计数出现次数。对于二元模型,条件概率P(wi∣wi−1)估计如下:
P(wi∣wi−1)=count(wi−1)count(wi−1,wi)例如,要计算P(speech∣recognize),您需要统计语料库中“recognize speech”这对词出现的次数,并将其除以“recognize”出现的总次数。
基于文本语料库,“recognize”后面可能出现的不同词语的条件概率。训练良好的N-gram模型会为语言上合理的二元词“recognize speech”分配明显高于不合理的“recognize beach”的分数。
N-gram模型面临的一个主要难题是数据稀疏性。如果像“transcribe audio”这样完全有效的二元词从未在您的训练语料库中出现,会发生什么?根据公式,它的计数为零,因此其概率为零。
P(audio∣transcribe)=count("transcribe")count("transcribe audio")=count("transcribe")0=0这是个问题。一个未曾出现的N-gram会导致整个句子的概率变为零,迫使解码器将其丢弃,即使句子其余部分的概率很高。
解决方案是平滑处理。平滑技术从已见过的N-gram中取少量概率质量,并将其重新分配给未见过的N-gram。这确保了没有N-gram的概率会恰好为零。
一种简单的方法是拉普拉斯(或加一)平滑,即我们对所有N-gram计数加一。然而,实践中使用了更复杂的技术。现代工具包,例如我们将在下一节使用的KenLM,采用Kneser-Ney平滑等高级平滑算法,这些算法为低频和未出现的N-gram的概率提供了更好的估计。
通过理解这些统计基础,您就能明白N-gram语言模型如何提供所需的语言学约束来引导解码器。在下一节中,我们将从理论转向实践,使用标准工具包构建我们自己的N-gram模型。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造