NLP第一课:寻找合适的途径/方式表示词的意义

问题一:如何去代表一个词的“意义”?
表示方法一:one-hot,词向量的长度是不同词的总数,每个向量只有一个地方是1,其余为零,感觉这种表示方法很笨拙,不太能代表词的意义,单个向量意义不大,也没法表示词之间的关系,总之就是太笨了。
表示方法二:word2vec,这个思想来源于“词的意思应该被它周围的文本所表示”,用词周围的的词来表示这个词,有点完形填空的味了。

Note: word vectors are sometimes called word embeddings or word> representations. They are a distributed representation.

word2vec算法步骤:

Idea:
• We have a large corpus of text
• Every word in a fixed vocabulary is represented by a vector
• Go through each position t in the text, which has a center word
c and context (“outside”) words o
• Use the similarity of the word vectors for c and o to calculate
the probability of o given c (or vice versa)
• Keep adjusting the word vectors to maximize this probability

CS224n学习笔记-1
基本上就是知道一个中心词v,计算v周围的词o出现在v周围的概率,不断改变这个词向量的数值,让这个概率不断变大。
这里有几个问题需要依次解决:

  1. 算法里提到用词向量之间的相似程度来计算概率,这个相似程度怎么算?
  2. 这个概率又该怎么算?

这两个细节问题稍后介绍,先说一般的:优化概率,让概率变得更大,优化的目标函数是什么?
CS224n学习笔记-1
这个函数就是是算法的目标函数。
首先解决第二个问题:怎么计算概率P?
这里要用两个向量来表示一个词:

  1. Vw:当w是一个中心词
  2. Uw:当w是一个周围词

CS224n学习笔记-1
第一个问题也解决了,就是用中心词与周围词的点积作为相似度的度量。
然后是梯度下降的方法来优化目标函数,还要重新观看视频手推一下。
到现在为止,已经学习了word2vec两个模型之一:Skip-grams (SG)模型,SG模型从中心词预测周围词;另外一个模型则是Continuous Bag of Words (CBOW),CBOW从周围词预测中心词。说的是得到词向量的方法不同,计算P的方式不同。
训练时所用到的提高效率的办法还有:Negative sampling,负采样,这与naïve softmax属于同一个范畴,并且是前者的优化策略,可以提高训练的速度。
有关Negative sampling和word2vec的原paper阅读笔记在之后更新。
需要弄清楚的地方:模型的优化过程(需要手推)、为什么需要采用负采样。

相关文章: