美文网首页
CS224n笔记复习与摘录2——词的向量表示:word2vec

CS224n笔记复习与摘录2——词的向量表示:word2vec

作者: 夕宝爸爸 | 来源:发表于2019-02-15 10:08 被阅读0次

如何表示一个词语的意思

计算机如何处理词语的意思

过去几个世纪里一直用的是分类词典。计算语言学中常见的方式是WordNet那样的词库。比如NLTK中可以通过WordNet查询熊猫的hypernyms (上位词),得到“食肉动物”“动物”之类的上位词。(上义词是对事物的概括性、抽象性说明;下义词是事物的具体表现形式或更为具体的说明。可以理解为,上义词针对共性,而下义词针对个性。)也可以查询“good”的同义词。

image.png

discrete representation的问题

  • 这种discrete representation虽然是种语言学资源,但丢失了韵味。比如这些同义词的意思实际上还是有微妙的差别:adept, expert, good, practiced, proficient, skillful
  • 缺少新词
  • 主观化
  • 需要耗费大量人力去整理
  • 无法计算准确的词语相似度
    无论是规则学派,还是统计学派,绝大多数NLP学家都将词语作为最小单位。事实上,词语只是词表长度的one-hot向量,这是一种localist representation(大概是借用localist“局部”的意项)。
    在不同的语料中,词表大小不同。Google的1TB语料词汇量是1300万,这个向量的确太长了。

从symbolic representations到distributed representations

词语在符号表示上体现不出意义的相似性,比如Dell notebook battery size和Dell laptop battery capacity。而one-hot向量是正交的,无法通过任何运算得到相似度。比如下图的motel(汽车旅馆),hotel(酒店)


image.png

所以需要找到一种用向量直接编码含义的方法。

Distributional similarity based representations

语言学家J. R. Firth提出,通过一个单词的上下文可以得到它的意思。J. R. Firth甚至建议,如果你能把单词放到正确的上下文中去,才说明你掌握了它的意义。
这是现代统计自然语言处理最成功的思想之一:


image.png

通过向量定义词语的含义

通过调整一个单词及其上下文单词的向量,使得根据两个向量可以推测两个词语的相似度;或根据向量可以预测词语的上下文。这种手法也是递归的,根据向量来调整向量,与词典中意项的定义相似。


image.png

学习神经网络word embeddings的基本思路

定义一个以预测某个单词的上下文的模型:


image.png
损失函数定义如下: image.png
这里的w−t表示wt的上下文(负号通常表示除了某某之外),如果完美预测,损失函数为零。
然后在一个大型语料库中的不同位置得到训练实例,调整词向量,最小化损失函数。

直接学习低维词向量

  • Learning representations by back-propagating errors (Rumelhart et al., 1986)
  • A neural probabilistic language model (Bengio et al., 2003)
  • NLP (almost) from Scratch (Collobert & Weston, 2008)
  • A recent, even simpler and faster model: word2vec (Mikolov et al. 2013)

word2vec的主要思路

通过单词和上下文彼此预测。
两个算法:
Skip-grams (SG):预测上下文
Continuous Bag of Words (CBOW):预测目标单词
两种稍微高效一些的训练方法:
Hierarchical softmax
Negative sampling
以上四种方法可见word2vec原理推导与代码分析

Skip-gram预测

image.png

给定一个中心词汇,某个单词在它上下文中出现的概率,我们会选取词向量以让概率分布值最大化。注意这里虽然有四条线,但模型中只有一个条件分布。

word2vec细节

目标函数定义为所有位置的预测结果的乘积:


image.png

要最大化目标函数。对其取个负对数,得到损失函数——对数似然的相反数:


image.png

目标函数细节

这些术语都是一样的:Loss function = cost function = objective function,不用担心用错了。对于softmax来讲,常用的损失函数为交叉熵。
这些术语都是一样的:Loss function = cost function = objective function,不用担心用错了。对于softmax来讲,常用的损失函数为交叉熵。
预测到的某个上下文条件概率p(wt+j|wt)可由softmax得到:


image.png

o是输出的上下文词语中的确切某一个,c是中间的词语。u是对应的上下文词向量,v是词向量。

点积

image.png

点积也有点像衡量两个向量相似度的方法,两个向量越相似,其点积越大。

Softmax function

从实数空间到概率分布的标准映射方法


image.png

指数函数可以把实数映射成正数,然后归一化得到概率。
softmax之所叫softmax,是因为指数函数会导致较大的数变得更大,小数变得微不足道;这种选择作用类似于max函数。

Skipgram

image.png

从左到右是one-hot向量,乘以center word的W于是找到词向量,乘以另一个context word的矩阵W'得到对每个词语的“相似度”,对相似度取softmax得到概率,与答案对比计算损失。


image.png

这两个矩阵都含有V个词向量,也就是说同一个词有两个词向量,哪个作为最终的、提供给其他应用使用的embeddings呢?有两种策略,要么加起来,要么拼接起来。在CS224n的编程练习中,采取的是拼接起来的策略:

# concatenate the input and output word vectors
wordVectors = np.concatenate(
    (wordVectors[:nWords,:], wordVectors[nWords:,:]),
    axis=0)
# wordVectors = wordVectors[:nWords,:] + wordVectors[nWords:,:]

W中的向量叫input vector,W'中的向量叫output vector。

训练模型:计算参数向量的梯度

把所有参数写进向量θ,对d维的词向量和大小V的词表来讲,有:


image.png

由于上述两个矩阵的原因,所以θ的维度中有个2。
模型的学习是梯度法


image.png
image.png
image.png
image.png

梯度下降、SGD

image.png
image.png

摘录于# CS224n笔记2 词的向量表示:word2vec

相关文章

网友评论

      本文标题:CS224n笔记复习与摘录2——词的向量表示:word2vec

      本文链接:https://www.haomeiwen.com/subject/badeeqtx.html