[关闭]
@ShawnNg 2017-01-23T21:52:33.000000Z 字数 1505 阅读 1604

A Neural Probabilistic Language Model

深度学习 NLP


作者

Y Bengio, R Ducharme, P Vincent, C Jauvin

单位

Université de Montréal(蒙特利尔大学)

关键词

Statistical language modeling, artificial neural networks, distributed representation, curse of dimensionality

文章来源

Journal of Machine Learning Research 2003

问题

提出基于神经网络的语言模型,同时学习word embedding和语言模型参数

模型

1 建模

模型主要是用context来预测下一个词。
模型
这是一个简单的三层的前向神经网络,输入层是context的word embedding的联合,需要预先选择context的窗口大小。一层隐藏层。输出层是词表中每个词的概率,长度为词表大小。图中虚线表示输入层与输出层的直连。公式如下:

其中是输入,是输出,需要更新的参数包括时表示输入输出无直连。

2 训练

损失函数方程是:

其中是正则化项,在本文的实验中不对biases做正则。训练使用SGD:

3 优化(并行实现)

该模型的计算瓶颈在于softmax输出层。文中提及两种方法,一种是使用共享内存的多处理器进行数据并行,另一种是使用集群进行参数并行。前者是每个处理器处理各自分配到的样本,分别对共享内存中的参数进行SGD。后者是每个CPU各自计算分配到的输出层的未归一化概率

4 结果

评价标准为perlexity,是指的几何平均。但是该训练时间较长,仅仅5个epoch就花费40个CPU三个星期。结果显示:
1. 更多的context会表现得更好
2. 隐藏层是有用的
3. 使用ensemble也有用
4. 小语料时不用直连层会更好

5 建议
  1. 将模型分解成多个小模型来训练会更快更容易
  2. 可以考虑将输出层用一个树结构来表示,计算速度会比原来快
  3. 可以考虑每次后向传播只传播给一部分的词,加快训练速度。
  4. 可以引入一些先验知识,模型可以选择循环神经网络来获得更长的context信息。
  5. 可以尝试去解释word embedding的含义
  6. 可以尝试解决多义词的情况

简评

这篇文章内容很丰富,并且讲解的很清晰,十分值得一读。并且该文章开创了将NN运用在语言模型上的历史。我相信其中文中给出的建议对后人的研究有深刻的影响,比如使用RNN,相信Tomas那篇RNNLM的灵感也是来自于此。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注