word2vec详解

预备知识

以下为word2vec的基础知识,如已经了解可跳过。

1、逻辑斯蒂回归

2、语言模型

3、Huffman编码

词向量理解

词向量其实就是将自然语言数学化。

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)+(1yi)log(1hθ(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 越小精度越大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值