A Neural Probabilistic Language Model阅读笔记

在这里插入图片描述
  上图有点错误,最左边的是输入层,第二层是投影层,第三层是隐藏层,第四层是输出层。

  Bengio 用了一个三层的神经网络来构建语言模型,同样也是 n-gram 模型。如下图所示:
在这里插入图片描述
  通过前 n − 1 n-1 n1个词即 w t − n + 1 , … , w t − 2 , w t − 1 w_{t-n+1},\dots,w_{t-2},w_{t-1} wtn+1,,wt2,wt1来预测第 n n n个词即 w t w_t wt。其中 C ( w ) C(w) C(w)表示词 w w w对应的词向量(其中词向量的维度为m),而 C C C表示的是所有词的词向量矩阵,则它的维度是 ∣ V ∣ × m |V| \times m V×m

  网络的第一层(输入层)是将 C ( w t − n + 1 ) , … , C ( w t − 2 ) , C ( w t − 1 ) C(w_{t-n+1}),\dots,C(w_{t-2}),C(w_{t-1}) C(wtn+1),,C(wt2),C(wt1)拼接到一起,则形成的向量为x,维度为 ( n − 1 ) m (n-1) m (n1)m

  网络的第二层(隐藏层)就如同普通的神经网络,直接使用 d + H x d+Hx d+Hx计算得到。 d d d是一个偏置项。在此之后,使用tanh作为激活函数。

  网络的第三层(输出层)一共有 ∣ V ∣ |V| V个节点,每个节点 y i y_i yi表示下一个词为 i的未归一化 log 概率。最后使用 softmax 激活函数将输出值 y y y归一化成概率。最终,y的计算公式为:
y = b + W x + U t a n h ( d + H x ) y=b+Wx+U tanh(d+Hx) y=b+Wx+Utanh(d+Hx)

  式子中的 U( ∣ V ∣ × h |V| \times h V×h的矩阵)是隐藏层到输出层的参数,整个模型的多数计算集中在U和隐藏层的矩阵乘法中。后文的提到的 3 个工作,都有对这一环节的简化,提升计算的速度。 H H H h × ( n − 1 ) m h \times (n-1)m h×(n1)m的矩阵。

  式子中还有一个矩阵W(维度为 ∣ V ∣ × ( n − 1 ) m |V| \times (n-1)m V×(n1)m),这个矩阵包含了从输入层到输出层的直连边。直连边就是从输入层直接到输出层的一个线性变换,好像也是神经网络中的一种常用技巧(没有仔细考察过)。如果不需要直连边的话,将W置为 0 就可以了。在最后的实验中,Bengio 发现直连边虽然不能提升模型效果,但是可以少一半的迭代次数。同时他也猜想如果没有直连边,可能可以生成更好的词向量。

https://blog.csdn.net/weixin_43178406/article/details/101671342
http://techblog.youdao.com/?p=915
http://licstar.net/archives/328
https://www.bilibili.com/video/BV1Lb411p7FD?p=2
https://arxiv.org/pdf/1301.3781.pdf
https://blog.csdn.net/maqunfi/article/details/84455434

猜你喜欢

转载自blog.csdn.net/herosunly/article/details/88969491
今日推荐