本文需要了解概率论,随机过程和神经网络等相关知识
公式无法显示,可跳转word embedding(A neural probabilistic langulage model)
语言模型
语言模型就是根据一定的训练集合算法得到的模型,该模型一般可以 1).预测一个句子出现的概率;2).根据不完整的句子前几个词来预测下一个词。一般的语言模型也就是统计语言模型。
统计语言模型可以计算一个句子的概率,那什么叫做一个句子的概率,还有句子的概率怎么计算呢。假设一个句子由T个词构成,表示一个单词,用第i个词到第j个词的序列,则的联合概率为:
这就是句子的概率,根据 bayes公式得到:
其中的条件概率就是模型的参数,如果得到了这些参数,我们就能够知道该句子的概率。
常见的参数求解的方法有n-gram模型,决策树,最大熵模型以及本文要介绍的神经网络模型。为了对参数的求解有更好理解,先介绍n-gram 模型。
n-gram 模型
由bayes定理有:
表示词序列出现的概率,这个概率可以通过预料中的计算所有该序列的数目得到。
表示词序列在语料中出现的次数。同理:
所以有:
通过上式我们知道一个词的出现是和该词前面所有的词都相关,如果假设一个词的出现只和前面固定的词相关,比如在 Markov假设中,一个状态只和前一个状态相关。如果设定这样的一个固定值,可以降低不少的复杂度。另外一方面,从常识来看,一个词的出现只与它相邻的词相关,与较远距离的词几乎没有关系。这就是n-gram模型的基本思想,他做了一个n-1阶的Markov假设。
n的大小完全决定于参数的规模,一般来说,n越大模型的效果也更好。但是由于其复杂度,一般n也不会取太大。
神经网络模型(neural probabilistic langulage model)
神经网络模型不仅可以得到语言模型的参数还顺便得到了词向量,即word embedding(南大周志华翻译成词嵌入),亦即得到了词的向量表示。最早用神经网络的思路训练神经网络的模型是百度IDL的徐伟2000提出的。而这篇《A neural probabilistic langulage model》是Bingio在2003年发表在JMLR上的文章。
Bengio的神经网络模型仍然是基于n-gram模型。
图中的表示的前n-1个词,现在同样的通过前n-1个词来预测下一个词。以前n-1个词为输入层,中间一个隐藏层,输出层是softmax层,用来预测下一个词。或者简化成如下的四层:输入层-投影层-隐藏层-输出层。假设词可以用m维的向量来表示,输入层到投影层的过程就是将n-1个词的表示连接起来得到一个(n-1)m维的向量,投影层到隐藏层是一个全连接的过程,得到一个维度的向量,参数是W和p,然后隐藏层到输出层也是全连接的方式,输出层的维度等于字典的大小N,参数是U和q。
其中前向计算的过程如下:
记过计算得到一个长度为N的向量,用softmax归一化之后得到每个单词的概率。
i表示在字典中的第i个词。这里需要求的参数包括:1)词向量v(w),2)神经网络的参数(W,p,U,q),用随机梯度下降的方法就能求解了。
优点:
1.直接得到了词向量的表示和语言模型。
2.基于词向量的模型自带平滑的功能,得到的概率不可能为零。
参考
1.word2vec 中的数学原理详解
2.Deep Learning in NLP (一)词向量和语言模型
2.NNLM: Y. Bengio, R. Ducharme, P. Vincent. A neural probabilistic language model, JMLR 2003