一、 Word2Vec Tutorial
1.discrete representation(one-hot)的缺点
one-hot vector 不能够表示词之间的相似性,例子如下,motel和hotel是意思相近的两个词,可是两个词的one-hot vector却是正交的。
所以我们考虑使用一种维度较低并且有递推关系的向量来表示词,相似的词具有相似的向量。比如语料库有1W个词,如果用one-hot来表示,那么我们就用1w维的向量来表示它们,但是如果用了word2vec下面这种方法,我们只需要几百维就可以表示所有的词。
2.word2vec的简介
两种算法
1.Skip-grams (SG)
给定某个位置的单词,预测左右两边的词
2.Continuous Bag of Words (CBOW)
从该单词左右两边的词预测中间的词
两种训练的算法(为了加快训练速度)
1.Hierarchical softmax
2.Negative sampling
3. Skip-grams与Continuous Bag of Words (CBOW)
下面是Skip-grams 的演示图,CBOW应该也很容易想出来
$
Figure 1. Skip-grams 的演示图
4.以CBOW为例介绍Hierarchical softmax算法
接下来介绍一下Hierarchical softmax算法
Hierarchical softmax就是以词表中的所有单词,例如维基百科中所有出现的词,以词频为权重来构建哈夫曼树,不懂哈夫曼树的可以百度或者看这篇文章。叶子节点就代表每一个词,而非叶子节点代表了一类词(有点抽象,后面会看到每个词在经过非叶子节点时都做了类似逻辑归回的分类,把词归类于左右子节点可以看做是归于不同类, 如下图中的9结点可以代表关于足球的一类词,14结点代表一种人的状态)。
从根节点出发,到达指定叶子节点的路径是唯一的。Hierarchical Softmax正是利用这条路径来计算指定词的概率,而非用softmax来计算。
Figure 2. 哈弗曼树图 图片来源[1]
图中的叶子节点假如有V个,那么非叶子节点肯定是|V|-1个。以足球为例,从根节点到该叶子节点要经过的路径长度为 L(巴西)=4 , 各个节点标记为 n(w2,1),n(w2,2),n(w2,3),n(w2,L(巴西)) 其中的每个 n(w,j) 非叶子结点都要表示成一个向量。
每经过一次非叶子结点,就相当于对词进行一次分类,所以从根节点出发,要到达巴西叶子节点,需要经过 L(巴西)−1 词分类。我们在这里做一个定义,当词被归于左孩子节点就说词属于负类,被归于右孩子节点就说词属于正类。当然你也可以翻过来,不过好像google的文档是按照前者分类的。
整个模型分三层,首先输入层是所有其他附近的词向量,记为 v̂ t</