【NLP经典论文阅读】Efficient Estimation of Word Representations in Vector Space(附代码)
创始人
2024-05-29 11:31:22
0

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

NLP经典论文阅读

*(封面图由ERNIE-ViLG AI 作画大模型生成)*

【NLP经典论文阅读】Efficient Estimation of Word Representations in Vector Space(附代码)

1. 论文简介

Efficient Estimation of Word Representations in Vector Space(以下简称Word2vec)是一篇由Google的Tomas Mikolov等人于2013年发表的论文,该论文提出了一种基于神经网络的词向量训练方法,能够高效地学习到单词在向量空间中的分布式表示。

出处:https://arxiv.org/abs/1301.3781

作者:Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean

单位:Google

发表年份:2013年

论文大意:

论文提出了两种新的模型架构,用于从非常大的数据集中计算单词的连续向量表示。这些表示的质量通过单词相似性任务进行衡量,并将结果与基于不同类型的神经网络的先前表现最佳的技术进行比较。我们观察到准确率有大幅提升,而计算成本则更低,即从一个16亿个单词的数据集中学习高质量单词向量只需不到一天的时间。此外,我们展示了这些向量在测量句法和语义单词相似性的测试集上提供了最先进的性能。

2. 论文详解

Word2vec的主要思想是通过预测上下文或目标单词的方法学习单词的向量表示。具体来说,Word2vec通过一个简单的神经网络来学习单词的向量表示,该神经网络包括一个输入层、一个隐藏层和一个输出层。输入层接收到一个单词,将其转换为一个向量表示,然后将该向量传递到隐藏层中。隐藏层对输入向量进行一些变换,然后将结果传递到输出层。输出层则根据上下文或目标单词的不同,采用不同的损失函数来计算损失,然后通过反向传播算法来更新模型参数。

Word2vec有两种模型,分别是CBOW模型和Skip-gram模型。CBOW模型根据上下文单词来预测中心单词,而Skip-gram模型则根据中心单词来预测上下文单词。在训练时,Word2vec通过梯度下降算法来最小化损失函数,并将单词的向量表示作为最终的输出。
W2V

相比传统的词向量方法,Word2vec的优点在于它能够高效地处理大量的语料库,从而学习到更加准确的单词向量表示。此外,Word2vec的向量表示能够自动捕捉到单词之间的语义和语法关系,因此在自然语言处理任务中表现出了良好的性能。

除了论文之外,Word2vec的相关代码也已经在GitHub上开源,可以在https://github.com/tmikolov/word2vec上找到。在该项目中,提供了C++和Python两种版本的实现代码,包括CBOW和Skip-gram两种模型以及负采样和层次softmax两种训练方法。

2.1 Skip-gram

在Skip-gram模型中,我们的目标是通过中心单词来预测上下文单词。对于给定的一对(中心单词,上下文单词),我们希望最大化它们的共现概率。

假设我们有一个长度为TTT的文本序列w1,w2,...,wTw_1,w_2,...,w_Tw1​,w2​,...,wT​,我们的目标是最大化以下条件概率的对数似然函数:
L(θ)=1T∑t=1T∑−c≤j≤c,j≠0log⁡p(wt+j∣wt;θ)L(\theta)=\frac{1}{T}\sum_{t=1}^T\sum_{-c\le j\le c,j\ne 0}\log p(w_{t+j}|w_t;\theta)L(θ)=T1​t=1∑T​−c≤j≤c,j=0∑​logp(wt+j​∣wt​;θ)
其中,ccc是上下文单词的窗口大小,θ\thetaθ是模型的参数。

我们使用Softmax函数来估计每个上下文单词的概率:

p(wt+j∣wt;θ)=exp⁡(vwt+j′⋅vwt)∑i=1Wexp⁡(vi′⋅vwt)p(w_{t+j}|w_t;\theta)=\frac{\exp(v_{w_{t+j}}'\cdot v_{w_t})}{\sum_{i=1}^W\exp(v_i'\cdot v_{w_t})}p(wt+j​∣wt​;θ)=∑i=1W​exp(vi′​⋅vwt​​)exp(vwt+j​′​⋅vwt​​)​

其中,vwv_wvw​和vw′v'_wvw′​分别表示单词www在输入和输出层中的向量表示,WWW是词汇表大小。

2.2 CBOW模型

CBOW模型与Skip-gram模型类似,但是反过来。在CBOW模型中,我们的目标是通过上下文单词来预测中心单词。具体来说,我们希望最大化中心单词和其上下下文单词的共现概率,公式如下:
L(θ)=1T∑t=1Tlog⁡p(wt∣wt−c,…,wt−1,wt+1,…,wt+c;θ)L(\theta)=\frac{1}{T}\sum_{t=1}^T\log p(w_t|w_{t-c},\ldots,w_{t-1},w_{t+1},\ldots,w_{t+c};\theta)L(θ)=T1​t=1∑T​logp(wt​∣wt−c​,…,wt−1​,wt+1​,…,wt+c​;θ)
其中,ccc是上下文单词的窗口大小,θ\thetaθ是模型的参数。

我们使用Softmax函数来估计中心单词的概率:
p(wt∣wt−c,…,wt−1,wt+1,…,wt+c;θ)=exp⁡(∑j=−c,j≠0cvwt+j)∑i=1Wexp⁡(∑j=−c,j≠0cvwt+j)p(w_t|w_{t-c},\ldots,w_{t-1},w_{t+1},\ldots,w_{t+c};\theta)=\frac{\exp(\sum_{j=-c,j\ne 0}^cv_{w_{t+j}})}{\sum_{i=1}^W\exp(\sum_{j=-c,j\ne 0}^cv_{w_{t+j}})}p(wt​∣wt−c​,…,wt−1​,wt+1​,…,wt+c​;θ)=∑i=1W​exp(∑j=−c,j=0c​vwt+j​​)exp(∑j=−c,j=0c​vwt+j​​)​

其中,vwv_wvw​和vw′v'_wvw′​分别表示单词www在输入和输出层中的向量表示,CCC是上下文单词的数量,WWW是词汇表大小。

2.3 模型优化
在训练Word2Vec模型时,我们需要最大化对数似然函数。由于词汇表很大,如果使用标准的梯度下降法来优化模型,计算量将非常大。为了解决这个问题,作者提出了两种方法:Hierarchical Softmax和Negative Sampling。

2.3 Hierarchical Softmax

在Hierarchical Softmax中,我们将输出层的单词表示为一个二叉树,其中每个叶子节点都表示一个单词。每个非叶子节点都表示两个子节点的内积,每个叶子节点都表示该单词的条件概率。由于二叉树的形状,我们可以使用log⁡2W\log_2 Wlog2​W个节点来表示词汇表大小为WWW的模型,这将大大降低计算量。

在使用Hierarchical Softmax进行训练时,我们需要通过二叉树来计算每个上下文单词的概率,如下所示:
p(wt+j∣wt)=exp⁡(vwt+jT⋅vwt)∑i=1Wexp⁡(viT⋅vwt)=exp⁡(score(wt+j,wt))∑i=1Wexp⁡(score(wi,wt))p(w_{t+j}|w_t)=\frac{\exp(v_{w_{t+j}}^T\cdot v_{w_t})}{\sum_{i=1}^W\exp(v_i^T\cdot v_{w_t})}=\frac{\exp(\text{score}(w_{t+j},w_t))}{\sum_{i=1}^W\exp(\text{score}(w_i,w_t))}p(wt+j​∣wt​)=∑i=1W​exp(viT​⋅vwt​​)exp(vwt+j​T​⋅vwt​​)​=∑i=1W​exp(score(wi​,wt​))exp(score(wt+j​,wt​))​

其中,l(wO)l(w_O)l(wO​)是单词wOw_OwO​在二叉树中的深度,n(wO,j)n(w_O,j)n(wO​,j)表示在单词wOw_OwO​的路径上第jjj个节点,σ(x)=11+exp⁡(−x)\sigma(x)=\frac{1}{1+\exp(-x)}σ(x)=1+exp(−x)1​是Sigmoid函数。

2.4 Negative Sampling

在Negative Sampling中,我们将每个训练样本拆分成多个二元组(wI,wO)(w_I,w_O)(wI​,wO​),其中wIw_IwI​是中心单词,wOw_OwO​是上下文单词。
对于每个二元组,我们随机采样KKK个噪声单词,用它们来计算负样本。具体地,我们将每个单词的概率提高到3/43/43/4次方,并进行归一化,得到单词www的采样概率:

Psample(w)=f(w)3/4∑i=1Wf(wi)3/4P_{\text{sample}}(w)=\frac{f(w)^{3/4}}{\sum_{i=1}^{W}f(w_i)^{3/4}}Psample​(w)=∑i=1W​f(wi​)3/4f(w)3/4​

其中,f(w)f(w)f(w)是单词www在训练语料中出现的频次。

在使用Negative Sampling进行训练时,我们的目标是最小化负样本的概率和中心单词的概率的负对数似然:

−log⁡σ(vwO′⋅vwI)−∑k=1Klog⁡σ(−vwk′⋅vwI)-\log\sigma(v'_{w_O}\cdot v_{w_I})-\sum_{k=1}^{K}\log\sigma(-v'_{w_k}\cdot v_{w_I})−logσ(vwO​′​⋅vwI​​)−k=1∑K​logσ(−vwk​′​⋅vwI​​)

其中,wkw_kwk​是噪声单词,σ(x)=11+exp⁡(−x)\sigma(x)=\frac{1}{1+\exp(-x)}σ(x)=1+exp(−x)1​是Sigmoid函数。

使用Negative Sampling的优点在于计算速度较快,但是它有可能丢失一些信息,因为它只考虑了一部分的负样本。

3. 代码实现

下面,我们通过一个简单的案例来演示如何使用Word2vec训练词向量。首先,我们需要下载并解压缩一个语料库,例如维基百科的语料库。然后,我们可以使用Python中的gensim库来训练词向量。具体代码如下:

import gensim
from gensim.models import Word2Vec# 加载语料库
sentences = gensim.models.word2vec.Text8Corpus('path/to/corpus')# 训练模型
model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)# 保存模型
model.save('path/to/model')# 加载模型
model = Word2Vec.load('path/to/model')# 获取单词向量
vector = model['word']

在上面的代码中,我们首先使用Text8Corpus类加载语料库,然后使用Word2Vec类来训练模型。其中,size参数指定了向量的维度,window参数指定了上下文单词的窗口大小,min_count参数指定了单词出现的最小次数,workers参数指定了使用的线程数。训练完成后,我们可以使用save和load方法来保存和加载模型,使用model[‘word’]来获取单词的向量表示。

通过Word2vec训练出的词向量可以用于许多自然语言处理任务,例如词义相似度计算、命名实体识别和情感分析等。例如,在情感分析任务中,我们可以通过将一句话中的单词向量取平均来获取该句话的向量表示,然后使用分类器来对其进行情感分类。该方法在许多情感分析任务中表现出了良好的性能。

相关内容

热门资讯

李光洁32天走7500公里吃8... 李光洁32天走7500公里吃8城,《拿一座城市下酒》这部纪录片怎么样?我觉得这部纪录片非常好,观看的...
每我世如你果只没界喜就欢的生一... 每我世如你果只没界喜就欢的生一爱有你过在想会。把这22个字组成一句话。我想过,如果在每一生只喜欢你,...
调查校园里的植物和动物说说有哪... 调查校园里的植物和动物说说有哪些动植物?可以分成几类?兰花,梅花可人丌··植物:乔木(杨树、柳树、银...
血脂高的原因? 血脂高的原因?血脂高的原因高血脂的诱因包括原发性和继发性两种:原发性高血脂症的病因:1、遗传因素。2...
为什么孩子总是重复看同一集动画... 为什么孩子总是重复看同一集动画片?是在传递这3个信号 小孩子爱看动画片是非常普遍的,动画片带给他们动...
终极三国里 49集刘备为什么这... 终极三国里 49集刘备为什么这么做?有没有官方回答?下集自己看吧 现在不会有官方回答的哟第一:可能真...
西式糕点制作大全的内容简介 西式糕点制作大全的内容简介《西式糕点制作大全》主要介绍了制作甜点的基本知识,例如各种制作工具,制作点...
逻辑思维又是什么?就是推理吗,... 逻辑思维又是什么?就是推理吗,怎么培养!?逻辑思维是一种严格分析思维。不一定是推理。推理是逻辑思维的...
囊萤夜读有一句俗语就是出自这个... 囊萤夜读有一句俗语就是出自这个故事你知道是什么吗?囊萤映雪 ( náng yíng yìng xuě...
什么是不伦恋情? 什么是不伦恋情?什么是不伦恋情.,?男跟女年龄相差很大?还是?男的比女的小?还是老夫少妻?是近亲谈恋...
有书名带晨星的嘛? 有书名带晨星的嘛?有书名带晨星的嘛?晨星传这本书。漫画书晨星物语
如果有些事情说不出口怎么办? 如果有些事情说不出口怎么办?烦恼皆是因为自己过分的执着 即使你在这样子下去 更不就不会有好的结果 为...
有哪些类似于《非自然死亡》题材... 有哪些类似于《非自然死亡》题材的日剧推荐?非自然死亡的题材电影确实不多,电视剧的话也不好找啊。不喜欢...
素书全集的内容简介 素书全集的内容简介 本书采用了《素书》的权威原著,参照《四库全书》并加上了宋代宰相张商英的注和清代王...
【世纪花园】小区对口的学校有重... 【世纪花园】小区对口的学校有重点小学和初中吗?世纪花园东区里有未来强者幼儿园,小区南边有个华兴小区,...
东南大学现有的专业中有哪些是属... 东南大学现有的专业中有哪些是属于老东南的1928年学校改名为国立中央大学,设理、工、医、农、文、法、...
一个男人一有钱就请朋友吃饭,没... 一个男人一有钱就请朋友吃饭,没钱就又说,买东西还赊账,商店里的老板都找上门来了?像陵念前这种男人的话...
坟上栽什么草好? 坟上栽什么草好?坟地种什么草好耐旱坟上栽野蕨草、扎根不深、浅根植物、可以固土、南方雨水多、不会造成坟...
关于国富潜力基金 关于国富潜力基金我9月24日上午买的国富基金,申购价格是9月24日开盘的价格吗?还是9月28日开盘的...
我是一个高中生。想学武术。在学... 我是一个高中生。想学武术。在学校没什么时间。是练散打还是跆拳道好。我是一个高中生。想学武术。在学校没...