美文网首页机器学习
word embedding(A neural probabil

word embedding(A neural probabil

作者: 董老师wenjunoy | 来源:发表于2016-07-25 20:38 被阅读174次

    本文需要了解概率论,随机过程和神经网络等相关知识

    公式无法显示,可跳转word embedding(A neural probabilistic langulage model)

    语言模型

    语言模型就是根据一定的训练集合算法得到的模型,该模型一般可以 1).预测一个句子出现的概率;2).根据不完整的句子前几个词来预测下一个词。一般的语言模型也就是统计语言模型

    统计语言模型可以计算一个句子的概率,那什么叫做一个句子的概率,还有句子的概率怎么计算呢。假设一个句子由T个词构成$W=(w_1,w_2,...,w_T)$,$w_i$表示一个单词,用$w_i^j$第i个词到第j个词的序列,则$w_1,w_2,...,w_T$的联合概率为:
    $$p(W)=p(w_1^T)=p(w_1,w_2,...,w_T)$$

    这就是句子的概率,根据 bayes公式得到:
    $$p(w_1^T) = p(w_1)p(w_2|w_1)p(w_3|w_12)...p(w_T|w_1{T-1})$$

    其中的条件概率$p(w_1)p(w_2|w_1)p(w_3|w_12)...p(w_T|w_1{T-1})$就是模型的参数,如果得到了这些参数,我们就能够知道该句子的概率。

    常见的参数求解的方法有n-gram模型,决策树,最大熵模型以及本文要介绍的神经网络模型。为了对参数的求解有更好理解,先介绍n-gram 模型。

    n-gram 模型

    由bayes定理有:
    $$p(w_k|w_1^{k-1})=\frac {p(w_1k)}{p(w_1{k-1})}$$

    $p(w_1k)$表示词序列$w_1k$出现的概率,这个概率可以通过预料中的计算所有该序列的数目得到。

    $$p(w_1^k)=\frac {count(w_1^k)}{#词序列综合}$$

    $count(w_1k)$表示词序列$w_1k$在语料中出现的次数。同理:

    $$p(w_1^{k-1})=\frac {count(w_1^{k-1})}{#词序列综合}$$

    所以有:
    $$p(w_k|w_1^{k-1})=\frac {count(w_1k)}{count(w_1{k-1})}$$

    通过上式我们知道一个词的出现是和该词前面所有的词都相关,如果假设一个词的出现只和前面固定的词相关,比如在 Markov假设中,一个状态只和前一个状态相关。如果设定这样的一个固定值,可以降低不少的复杂度。另外一方面,从常识来看,一个词的出现只与它相邻的词相关,与较远距离的词几乎没有关系。这就是n-gram模型的基本思想,他做了一个n-1阶的Markov假设。

    $$p(w_k|w_1^{k-1})=\frac {count(w_{k-n+1}k)}{count(w_{k-n+1}{k-1})}$$

    n的大小完全决定于参数的规模,一般来说,n越大模型的效果也更好。但是由于其复杂度,一般n也不会取太大。

    神经网络模型(neural probabilistic langulage model)

    神经网络模型不仅可以得到语言模型的参数还顺便得到了词向量,即word embedding(南大周志华翻译成词嵌入),亦即得到了词的向量表示。最早用神经网络的思路训练神经网络的模型是百度IDL的徐伟2000提出的。而这篇《A neural probabilistic langulage model》是Bingio在2003年发表在JMLR上的文章。

    Bengio的神经网络模型仍然是基于n-gram模型。


    图中的$w_{t-n+1},...w_{t-2},w_{t-1}$表示$w_t$的前n-1个词,现在同样的通过前n-1个词来预测下一个词$w_t$。以前n-1个词为输入层,中间一个隐藏层,输出层是softmax层,用来预测下一个词。或者简化成如下的四层:输入层-投影层-隐藏层-输出层。假设词可以用m维的向量来表示,输入层到投影层的过程就是将n-1个词的表示连接起来得到一个(n-1)m维的向量$X_w$,投影层到隐藏层是一个全连接的过程,得到一个$n_t$维度的向量$Z_w$,参数是W和p,然后隐藏层到输出层也是全连接的方式,输出层的维度等于字典的大小N,参数是U和q。

    其中前向计算的过程如下:
    $$z_w = tanh(Wx_w+p)$$

    $$y_w = Uz_w+q$$
    记过计算得到一个长度为N的向量$y_w$,用softmax归一化之后得到每个单词的概率。
    $$p(w_t|w_{t-n+1},...w_{t-2},w_{t-1}) = \frac {e{y_wi}}{\sum e{y_wi}}$$

    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

    相关文章

      网友评论

        本文标题:word embedding(A neural probabil

        本文链接:https://www.haomeiwen.com/subject/lpfnjttx.html