@songying
2018-10-04T14:17:49.000000Z
字数 1584
阅读 1435
language-models
A Neural Probabilistic Language Model是Bengio在2003年发布的关于语言模型的文章,是Word Embedding的开山之作。
观察上图,假设有一组词序列:,其中 ,V 是所有单词的集合。我们的输入是一个词序列,而我们的输出是一个概率值,表示根据context预测出下一个词是 的概率。用数学来表示,我们最终是要训练一个模型:
- 表示这个词序列中的第 个单词, 表示输入长度为n的词序列中的第一个单词
- 表示从第1个单词到第 个单词组成的子序列
该模型需要满足两个约束条件:
- 表示词表的大小
该模型结构分为三层,分别是输入层,一层隐层,输出层。在整个结构中涉及到的参数包括以下几个:
参数 | 维度 | 说明 |
---|---|---|
b | |V| 维向量 |
输出层偏置 |
d | h维向量 |
隐藏层偏置 |
U | |V| *h |
隐藏层到输出层权重 |
W | |V| * (n-1)m |
词特征层到输出层的权重 |
H | h * (n-1)m |
隐藏层权重 |
对于输入层,我们先将输入词序列 映射到词表中,如词 是词表中是第i个元素,编码为one-hot embedding;然后我们再将这个元素映射到词向量 中,其中 ,它表示的是词表中第i个词的distributed representation。 C实际上就是一个 的自由参数矩阵,表示词表的大小, 表示每个词的维度。
隐层是对所有输入的融合:
在输出层中,同时受到隐层输出 a 和 输入层输出 x 的影响,公式如下:
最后,一目了然, 是输入, 是输出,需要更新的参数包括:。
首先,损失函数为:
其中, 为学习速度。
其实,如果单从word embedding 的角度来看,词向量无非是在训练神经语言模型最后得到的副产物(如上面的C),这也意味着如果要想获得更棒的词向量,我们训练所用的语料库必须足够的大。