N-gram的致命缺陷
1.数据稀疏性-最直接的技术缺陷
问题描述:
N-gram模型的核心是统计不同词语序列出现的频率。随着N的增大(例如从2-gram到3-gram再到4-gram),可能的组合数量呈指数级增长(词汇表的V^N)。然而,任何训练语料库都是有限的,这导致语料库中绝大多数可能的N-gram组合从未出现过,其统计概率为0。
后果:
零概率问题:如果一个句子包含一个从未在训练数据中出现过的N-gram,那么根据模型,这个句子的概率就是0。但这显然是不合理的,因为语言是创造性的,我们每天都在说和写从未被精确记录过的句子。
不可靠的统计:即使某些N-gram在语料库中出现过一两次,其统计概率也极不可靠(例如,“出现的次数是1次”和“出现的次数是2次”真的有本质区别吗?)。
缓解措施:为了解决这个问题,人们发明了各种平滑技术,如拉普拉斯平滑、古德-图灵估计、Katz回退、Kneser-Ney平滑等。这些方法的核心思想是“劫富济贫”,从出现次数多的N-gram中匀出一点概率质量,分配给那些出现次数少或为零的N-gram。然而,平滑技术本身很复杂,且只是一种补救措施,无法从根本上解决问题。
2.上下文长度有限-最根本的模型局限
问题描述:一个N-gram模型只能看到前 N-1 个词 来预测下一个词。对于2-gram,只能看前1个词;对于3-gram,只能看前2个词。
后果:
长距离依赖失效:语言中存在大量长距离依赖关系。例如,在句子“The books written by the renowned author, who had spent decades in solitude, are...”中,主语“books”和谓语“are”之间隔了非常长的距离。一个5-gram或6-gram模型根本无法捕捉到这种依赖关系,因为它看不到那么远的上下文。这会直接导致语法错误(主谓不一致)或语义混乱。
模型性能瓶颈:理论上,我们可以增大N来获取更长的上下文。但如上所述,N增大会急剧加剧数据稀疏性问题,并且会导致模型参数爆炸式增长,在计算和存储上都变得不可行。因此,在实践中,N很少超过5,这严重限制了模型的“视野”和理解能力。
3.无法捕捉语义和世界知识
这是N-gram模型作为一个“统计”模型而非“理解”模型的本质缺陷。
问题描述:N-gram模型只进行表面的、局部的词序列共现统计,它不理解词语背后的含义、语法结构、逻辑关系或现实世界的常识。
后果:
同义/反义词问题:对于模型来说,“买苹果”和“购买苹果”是两个完全不同的序列,它无法知道“买”和“购买”是近义词。同样,它也无法理解“好”和“坏”是反义词。
荒谬的泛化:由于只依赖统计共现,模型可能会生成统计上合理但语义上荒谬的句子。例如,如果语料中“牛奶”和“喝”经常一起出现,而“石头”和“踢”经常一起出现,模型可能会认为“喝石头”的概率极低,但它无法从“物理上不可能”这个层面去理解。
缺乏常识:模型不知道“人需要吃饭”、“猫会喵喵叫”这些基本常识。它的所有“知识”都狭隘地来自于训练文本中的词频统计。
正是这些缺陷,尤其是在处理长距离依赖和语义理解上的无能,推动了自然语言处理研究从基于计数的统计模型转向基于分布式表示 的神经网络模型。后者通过将词语映射到连续的向量空间,并利用更强大的架构(如Transformer)来建模全局依赖关系,从根本上克服了N-gram的这些致命弱点。
拓展
平滑技术
拉普拉斯平滑、古德-图灵估计、Katz回退、Kneser-Ney平滑这些都又是什么?