预备知识
以下为word2vec的基础知识,如已经了解可跳过。
1、逻辑斯蒂回归
2、语言模型
词向量理解
词向量其实就是将自然语言数学化。
One-hot represention
One-hot represention 就是用一个很长的向量来表示一个词。向量的长度是词典 D \mathcal D D的大小N,向量的分量只有一个是1,其他均为0。1的位置对应该词在词典中的索引。
如下图所示:
这存在两个不足之处:
(1)当 N N N很大时,就会造成维度灾难。
(2)忽略了词与词之间的相似性。
Distributed Representation
分布式词向量表示法克服了One-hot represention的缺陷。其基本想法是:通过训练将某种语言中的每一个词映射成一个固定长度的短向量(当然这里的“短”是相对于one-hot representation的“长”而言的),所有这些向量构成一个词向量空间,而每一向量则可视为该空间中的一个点,在这个空间上引入“距离”,就可以根据词之间的距离来判断它们之间的(词法、语义上的)相似性了,word2vec中采用的就是这种Distributed Representation的词向量。如下图所示:
word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系。
word2vec 中有两个重要模型一CBOW 模型(Contimuous Bag- of-Words Model)和Skip-gram模型(Continuous Skip-gram Model)。对于CBOW和Skip-gram两个模型,word2vec给出了两套框架,它们分别基于Hierarchical Softmax 和 Negative Sampling。
具体细节见以下两篇文章:
基于Hierarchical Softmax的word2vec模型
基于Negative Sampling的word2vec模型
熟悉了Word2vec的基本原理后,我们来探究几个关于Word2vec的经典面试题。
(1) Hierarchical Softmax方法中哈夫曼树是如何初始化生成的?也就是哈夫曼树是如何构建的呢?
答:Hierarchical Softmax依据词频构建Huffman树,词频大的节点离根节点较近,词频低的节点离根节点较远,距离远参数数量就多。
(2)Hierarchical Softmax对词频低的和词频高的单词有什么影响?为什么?
答:词频高的节点离根节点较近,词频低的节点离根节点较远,距离远参数数量就多,在训练的过程中,低频词的路径上的参数能够得到更多的训练,所以Hierarchical Softmax对词频低的单词效果会更好。
(3)Hierarchical Softmax方法中其实是做了一个二分类任务,写出它的目标函数?
答: L ( θ ) = ∑ i = 1 m y i log h θ ( x i ) + ( 1 − y i ) log ( 1 − h θ ( x i ) ) L(\theta) = \sum_{i=1}^m y_i \log h_{\theta}(x_i)+(1-y_i)\log(1-h_{\theta}(x_i)) L(θ)=∑i=1myiloghθ(xi)+(1−yi)log(1−hθ(xi)),其中 y i y_i yi 是真实标签, h θ ( x i ) h_{\theta}(x_i) hθ(xi) 是模型预测的标签。
(4)Negative Sampling是一种什么采样方式?是均匀采样还是其它采样方法?
答:词典 D D D 中的词在语料 C C C 中出现的次数有高有低,对于那些高频词,被选为负样本的概率就应该比较大,反之,对于那些低频词,其被选中的概率就应该比较小。这就是我们对采样过程的一个大致要求,本质上就是一个带权采样问题。
(5)详细介绍一下Word2vec中负采样方法?
答:先将概率以累积概率分布的形式分布到一条线段上,以 a = 0.2 , b = 0.3 , c = 0.5 a=0.2,b=0.3,c=0.5 a=0.2,b=0.3,c=0.5为例, a a a所处线段为 [ 0 , , 0.2 ] [0,,0.2] [0,,0.2], b b b所处线段为 [ 0.2 , 0.5 ] [0.2,0.5] [0.2,0.5] , c c c所处线段为 [ 0.5 , 1 ] [0.5,1] [0.5,1] ,然后定义一个大小为 M M M的数组,并把数组等距离划分为 m m m 个单元,然后与上面的线段做一次映射,这样我们便知道了数组内的每个单元所对应的字符了,这种情况下算法的时间复杂度为 O ( 1 ) O(1) O(1) ,空间复杂度为 O ( m ) O(m) O(m) , m m m 越小精度越大。