@songying
2018-10-26T19:53:49.000000Z
字数 2320
阅读 1560
word-embedding
http://shomy.top/2017/07/28/word2vec-all/
Efficient estimation of word representations in vector space
Distributed representations of words and phrases and their compositionality.
本文对word2vec参数的训练进行深入探讨,包括CBOW模型与Skip-gram模型,以及各种优化绩效如hierarchical softmax 和 negative sampling。并且提供了对梯度下降过程的直观解释与详细推导。
我们先假定我们给定的上下文是一个词,target word也是一个词。有点二元模型。
我们观察, 输入的长度为N,为词表的长度, 而输出也是N, 也是词表的长度,这是由softmax的特性决定的。
- vocabulary size : V
- hidden layer size : N
- 单元之间是全连接的。
- 输入是 one-hot encoded vector , 即 其中只有 为1,其余均为0.
- 输入层到隐层之间的权重矩阵: ,且每一行是一个N维的向量, 。
- 隐层到输出层之间的权重矩阵:
给定上下文假定 , 其余为0, 那么则有:
- h: 表示 W的第k行的向量
- : 表示输入词
- : 表示输入词 的向量表示
注意: 在隐层中并没有激活函数,证明隐层输出仅仅是一个输入的线性结合。
从隐层到输出层,权重矩阵 , 是一个 的矩阵。那么则有:
然后输出层上是一个softmax层,那么则有:
: 表示输出层softmax 的第j个单元的输出, 是一个介于0-1之间的概率值。
由以上三个式子,最终我们可以推出:
注意一点的是: 与 是单词w的两种不同表示。 来自于W, 来自于,但在实际使用中, 一般使用前者作为词向量。
: input vector
: output vector
本节介绍context 有多个词的情境, 模型结构如下图所示:
- 输入有C个单词: ,每个x都是用one-hot来表示。
- : 表示输入层到隐层的共享矩阵
在输入层到隐层的计算中, 此时h的计算发生了变化,在onw-word contex模型中, 直接取出W的第k行作为h的值,此时我们是从W中取出输入的C个单词对应的词向量,然后直接取平均。
而从隐层到输出层的过程与上面的onw-word contex 一样,那么则有:
这个模型是根据单词来预测上下文,模型如下图所示:
从模型结构上看,Skip-Gram 与 CBOW相反,与 One-Word Model 很相似。
我们使用 表示输入的word,在输入层到输出层中,与 One-Word Model相同, 此时的隐层状态表示为:
从隐层到输出层, 我们要输出C个单词, 因此输出有C个分布:, 其中每一个分布都需要单独计算:
对照上图即可了解
- :the j-th word on the c-th panel of the output layer;
- : is the actual c-th word in the output context words;
- : the only input word
- : is the output of the j-th unit on the c-th panel of the output layer;
- :the net input of the j-th unit on the c-th panel of the output layer.
由于输出层的各个softmax之间共享矩阵 ,那么则有:
: the output vector of the j-th word in the vocabulary, 表示矩阵 W' 的j列
主要是对隐层到输出层矩阵 W' 的优化。 采用方法为 Hierarchical Softmax 和 Negative Sampling。