Word2Vector之详解Skip-gram

​ 谷歌2013年提出的word2vector是目前最常用的词嵌入模型之一。Word2Vector实际上是一种浅层的神经网络模型,它有两种网络结构,分别为CBOW(Continues Bag of Words)和Skip-gram,这篇文章主要是介绍Skip-gram。

​ Skip-gram的主要目标是根据当前词来预测上下文中各个词的生成概率。比如说对于训练后的网络,给定一个输入“soviet”,输出概率高的单词应该是像"Union"或者“Russia”而不是像“watermelon”或“kangaroo”之类的单词。

网络结构

Skip-gram可以表示为由输入层(Input)、映射层(Projection)和输出层(Output)组成的神经网络。
Word2Vector之详解Skip-gram_第1张图片

  • 输入的表示:输入层中每个词由独热编码方式表示,即所有词均表示成一个N维向量,其中N为词汇表中单词的总数。在向量中,每个词都将与之对应的维度置为1,其余维度的值均为0。

  • 网络中传播的前向过程:输出层向量的值可以通过隐含层向量(K维),以及连接隐藏层和输出层之间的KxN维权重矩阵计算得到。输出层也是一个N维向量,每维与词汇表中的一个单词相对应。最后对输出层向量应用Softmax激活函数,可以计算每一个单词的生成概率。Softmax函数定义为:

    P ( y = w n ∣ x ) = e x n ∑ k = 1 N e x k P(y=w_n|x) = \frac {e^{x_n}}{\sum _{k=1} ^{N}{e^{x_k}}} P(y=wnx)=k=1Nexkexn

    其中x代表N维的原始输出向量, x n x_n xn代表原始输出向量中,与单词 w n w_n wn所对应的取值

训练过程
  • 获取训练样本:按照上下文窗口的大小从训练文本中提取出词汇对,下面以句子 T h e   q u i c k   b r o w n   f o x   j u m p s   o v e r   t h e   l a z y   d o g The \ quick \ brown \ fox \ jumps \ over \ the \ lazy \ dog The quick brown fox jumps over the lazy dog为例提取用于训练的词汇对,然后将词汇对的两个单词使用one-hot编码就得到了训练用的train_data和target_data。
    Word2Vector之详解Skip-gram_第2张图片

  • 训练任务:训练神经网络的权重,使得语料库中所有单词的整体生成概率最大化,也就是使得网络尽可能地预测所有单词的上下文信息。

词向量在哪儿?

隐藏层的权重矩阵形状为(N*hidden_size),我们可以认为隐藏层的每个神经元都能在训练过程中学习到一个特征。每一个单词的ont-hot向量与隐藏层的权重向量做矩阵乘法可以看作是从隐藏层的权重矩阵做一次行筛选。
Word2Vector之详解Skip-gram_第3张图片
下图是对这个过程的简单可视化过程。左边矩阵为词汇表中第四个单词的one-hot表示,右边矩阵表示包含3个神经元的隐藏层的权重矩阵,做矩阵乘法的结果就是从权重矩阵中选取了第四行的权重。因此,这个隐藏层的权重矩阵就是我们最终想要获得的词向量字典。
Word2Vector之详解Skip-gram_第4张图片

词向量的物理意义

如果两个单词有着相似的上下文环境(常常和其一起出现的单词相似),比如说“smart”和“intelligent”是同义词,在日常的使用中常常可以替代使用,于是它们的上下文环境十分相似。我们期望以这两个单词为输入的网络能够输出相似的结果,网络在训练的过程中会使得这两个单词的得到相似词向量。

你可能感兴趣的:(学习笔记,机器学习,NLP,人工智能之核——NLP)