浅析Word2Vec
1 预备内容
1.1 NLP任务
NLP的目标是设计算法让计算机去理解自然语言并去解决某些问题。
所有NLP任务德第一步,就是如何将单词表示为模型的输入。为了使得大多数NLP任务表现良好,我们首先需要能够用向量表示单词的相似性和差异性。有了这些词向量,我们可以简单的用向量自身的能力来计算相似性(如Jaccard, cos等)
1.2 Distributional Semantics
A word’s meaning is given by the words that frequently appear close-by.
J. R. Firth 在1957年指出:“You shall know a word by the company it keeps”
1.3 one-hot向量
将每个单词表示成大小为 ∣ V ∣ × 1 |V| \times 1 ∣V∣×1的向量,该向量只有一个位置为1,其余都为0。其中为1的位置表示该向量在排序后的字典中的索引值。下图是一个例子:
这种使用one-hot向量来表示词向量的优点是简单,但是最大的缺点,就是无法表示单词之间的相似性。如上所示的例子, ( w a ) T ⋅ w z e b r a = 0 (w^{a})^T \cdot w^{zebra} = 0 (wa)T⋅wzebra=0。
1.4 softmax函数
s o f t m a x ( x i ) = e x p ( x i ) ∑ j = 1 n e x p ( x j ) = p i softmax(x_i)=\frac {exp(x_i)} {\sum_{j=1}^n exp(x_j)} = p_i softmax(xi)=∑j=1nexp(xj)exp(xi)=pi
softmax函数将任意值 x i x_i xi映射为概率 p i p_i pi,并保证归一化保证和为1。
- max: 放大了最大值 x i x_i xi的概率
- soft: 仍为最小值 x i x_i xi分配概率
2 浅析Word2Vec
2.1 概述
我们训练一个只有一层隐层的简单神经网络来完成该任务,但是我们对模型的最终输出并不感兴趣,而是专注于隐层的权重矩阵——这些权重就是我们所要学习的词向量。
有了词向量,我们可以用代数来计算相似度问题。问题如下:我们已知国王和男性是一组词,女王和女性是一组词。现在我们想让计算机完成这样的推理过程。
我们可以计算向量 X = v e c t o r ( ′ k i n g ′ ) − v e c t o r ( ′ m a n ′ ) + v e c t o r ( ′ w o m a n ′ ) X = vector('king') - vector('man') + vector('woman') X=vector(′king′)−vector(′man