目录
语言模型的构建目的是为了对语言中的各要素的分布进行估计,具有较长的研究历史和广泛的应用。传统的离散计数类语言模型,比如bi-gram,n-gram模型等在很多应用领域的结果得到了广泛认可。
其基本假设通常是单词的分布服从n阶马尔可夫链。通过对连续n个单词出现频率进行计数并平滑来估计单词出现的概率。
但是由于是离散模型,因此有稀疏性和泛化能力低的缺点。
随着深度学习被广泛接纳,近年来神经网络语言模型(NLM)收到了广泛关注。相比传统的语言模型,神经网络语言模型属于连续模型,主要着力解决离散模型的两个主要痛点:
- 通过将离散的n-gram单词组投影到致密的空间词嵌入技术,
- 采用循环神经网络来解决传统语言模型稀疏性和泛化能力低的问题。
一、传统语言模型
传统的离散模型主要是统计语言模型,比如bigram或者n-gram语言模型,是对n个连续的单词出现概率进行建模。
传统的语言模型基于马尔可夫假设,假设我们对于一个单词在某个位置出现概率的估计可以通过计算该单词与前面m个单词同时出现频率相对于前面的m个单词同时出现的频率的比获得。这是朴素贝叶斯的思路。
- 如果m为0,我们的估计只基于该单词在全部文本中相对于其他所有单词的频率,这个模型就是unigram模型;
- 如果m为1,那么这个模型就是常见的bigram模型,
- 如果m为2,那么这个模型就是trigram模型,其计算公式如下:
如果把文本视为一个状态机,每一个出现的单词即是状态,上述公式也可以视为是一个m阶的马尔可夫链模型。
传统n-gram模型简单实用,但是却有两大致命缺点:稀疏性和泛化能力差。
1.1 稀疏性
因为n-gram模型只能对文本中出现的单词或者单词组进行建模,当新的文本中出现意义相近但是没有在训练文本中出现的单词或者单词组的时候,传统离散模型无法正确计算这些训练样本中未出现的单词的应有概率,他们都会被赋予0概率预测值。这是非常不符合语言规律的事情。
举个例来讲,在一组汽车新闻中,“SUV”和“吉普”是同义词,可以交替出现,但是假设整个训练集中没有出现过“吉普”这个单词,那么在传统模型中对于“吉普”这个词的出现概率会输出接近于0的结果。
但是上述相似例子在实际生活中却是非常比比皆是,由于计算资源与数据的限制,我们经常会发现模型在使用中遇见在整个训练集中从未出现的单词组的情况。
为了解决这种矛盾,传统方法是引入一些平滑【 J .G