分享好友 最新资讯首页 最新资讯分类 切换频道
基于word2vec训练词向量(二)
2024-12-29 08:48

一.基于Hierarchical Softmax的word2vec模型的缺点

基于word2vec训练词向量(二)

二.Negative SampliNg模型

三.Negative Sampling优化原理

四.Negative Sampling选取负例词原理

五.代码实现

六.总结

一.基于Hierarchical Softmax的word2vec模型的缺点

上篇说了Hierarchical Softmax ,使用霍夫曼树结构代替了传统的神经网络,可以提高模型训练的效率。但是如果基于Hierarchical Softmax的模型中所以词的位置是基于词频放置的霍夫曼树结构,词频越高的词在离根节点越近的叶子节点,词频越低的词在离根节点越远的叶子节点。也就是说当该模型在训练到生僻词时,需要走很深的路径经过更多的节点到达该生僻词的叶子节点位置,这样在训练的过程中,会有更多的θ_i向量要更新。举个例子,如图一所示:

图一

假设规定霍夫曼树编码,往左子树编码为0,右子树编码为1,假设现有一棵霍夫曼树,第一层右子树是一个叶子节点词w_1,该词霍夫曼编码是1,那么在训练过程只需要训练θ_1这个向量更新他只需要一个计算量。假如现在存在一个路径很深的叶子节点在第五层词w_2(根节点在第0层),其霍夫曼编码是010,那么训练到该叶子节点时需要计算并更新3个θ_i参数。这样对于生僻词的训练是很不友好的。

二.Negative SampliNg模型

Negative Sampling是word2vec模型的另一种方法,采用了Negative Sampling(负采样)的方法来求解。

Negative Sampling与Hierarchical Softmax最大的不同它放弃了投影层到输出层的霍夫曼树结构,以CBOW模型训练为例,Negative Sampling每次选取一个中心词是w_0,若neg别的词w_i,i=1,2,3…neg(一般neg值很小,不超过10),和他周围上下文共有2c个词,记为context(W)。其中中心词与context(w_0)相关,所以以context(w_0)作为输入,中心词w作为输出是一个正例。而context(w_0)作为输入,与每个w_i并不真实与输入相关的词作输出构成了neg个负例。一共有neg+1个训练样本来训练,这种训练方式就叫做Negative Sampling(负采样)训练。利用这一个正例和neg个负例进行二元逻辑回归,每次迭代都更新了θ_i(i=0,1,2…neg)和context(w)就可以得到每个词对应的θ_i向量和每个词的词向量。

Negative Sampling选取中心词,基于中心词的上下文词以及反例词示例:

一次迭代训练中,输入为Context(w_0),输出为w_0(正例),w_1,w_2。分别用梯度上升法依次更新θ_1,θ_2,θ_3和[Chaoshan],[beef],[is],[delicious]对应的词向量。注意,这里的θ_i跟Hierarchical Softmax中一样,只是投影层到输出层的权重,不代表词向量。

三.Negative Sampling优化原理

也就是说,通过sigmoid函数求每个样本的概率,我们希望最大化正例w的概率,最小化负例的概率。将g(w)变成对数似然函数,再使用梯度上升法,每次迭代更新context(w)中上下文词对应的词向量和θ_i。其更新原理和上一篇的Hierarchical Softmax原理相同,这里就不再重复推导。

先随机初始化所有词汇表的词向量,还有θ_i,在一次迭代中,输入几个上下文词context(w)词向量求和平均以后,开始从中心词w和负例词NEG(w)依次反向对与其对应的θ_i梯度上升法更新θ_i和context(w)上下文的词向量。

四.Negative Sampling选取负例词原理

这样只要每次生成随机数0M之间的整数,这样就能选到对应I_i的词了,每次去neg个词,如果选到的负例词刚好是中心词w本身,则跳过继续重新生成随机数0M去找新的负例词。

五.代码实现

在python中使用gensim包调用Word2vec方便快捷,在这简单演示下,gensim下word2vec详细的参数不在此详细阐述。本次的数据是之前比赛中公开的旅游数据集,具体的word2vec训练词向量步骤如下:

Negative Sampling相比于Hierarchical Softmax,摒弃了投影层到输出层的霍夫曼树结构,改成全连接。Negative Sampling虽然投影层到输出层是全连接,但是每次只会取输出层中的中心词和少数用作负例的词进行梯度上升法更新θ_i和context(w)上下文词对应的词向量,并没有像DNN中对所有位置进行计算。这样相比于Hierarchical Softmax,在对生僻词进行训练时,训练时要找的反例词个数不变,所以每次训练更新的θ_i参数的个数不变,花费的训练时间不变。这样就会让训练速度更稳定,不会因为生僻词而使训练耗费更多的时间,所以Negative Sampling训练生僻词的词向量会更稳定更快些。

Word2vec的训练方式有两种,分别是CBOW和Skip-gram。Word2vec训练词向量的加速训练方式有两种,一种是Hierarchical Softmax,一种是Negative Sampling。Word2vec训练出来的词向量效果挺好,其训练出来的词向量可以衡量不同词之间的相近成都。但是word2vec也存在缺点,因为在使用context(w)中并没有考虑w上下文的词序问题,这就造成了训练时输入层所有的词都是等价的,这样训练出来的词向量归根结底只包含大量语义,语法信息。所以一般想拥有比较好的词向量,还是应该在一个有目标导向的神经网络中训练,比如目标是情感分析,在这样的神经网络中去取得第一层embedding层作为词向量,其表达的的效果应该会比word2vec训练出来的效果好得多,当然一般我们可能不需要精准表达的词向量,所以用word2vec来训练出词向量,也是一种可选择的快速效率的方法。

最新文章
腾讯发布会(腾讯发布会2024年11月18)
1、月27日,腾讯游戏年度发布会于线上正式揭幕。来自腾讯游戏四大工作室之一的天美工作室群,也为外界带来了六款产品的相关内容
淄博企业网站SEO优化,关键要素解锁排名与流量增长
淄博SEO优化关键因素包括关键词研究、高质量内容创作、网站结构优化、外部链接建设等。通过这些策略,企业网站可提升在搜索引擎
没有广告的小说免费软件
想要畅读热门小说,不妨试试这款懂书帝阅读器。它不仅无乱码、能自动保存阅读记录,还提供多样化的背景选择,极大提升阅读体验。
列举未完成的分段上传
参数名类型说明bucketContextS3BucketContext *包含bucket及相关的请求参数prefixconst char *如果非NULL,则仅列出拥有以该参数
漠河县特殊教育事业单位最新发展规划SEO文章,漠河县特殊教育事业单位发展规划SEO文章概览
漠河县特殊教育事业单位发布最新发展规划SEO文章,着重强调单位未来的发展方向和目标。文章指出,该单位将致力于提高特殊教育质
淘宝搜索怎么屏蔽商家-淘宝搜索如何屏蔽店铺-淘宝问答
搜索时屏蔽一个或多个不需要的淘宝关键词方法如下:中输入需要屏蔽的关键字,即可排除部分不希望展示的宝贝1、屏蔽单个关键字如
希恩宝贝-单身高龄生育新趋势:试管婴儿成为2025年热门选择?
  近年来,随着生活节奏的加快、环境污染的加剧以及生育年龄的推迟,不孕不育问题日益凸显。据相关数据显示,我国不孕不育发病
探讨Anmpp(Advanced Network Messaging Protocol)搭建网站优化方案,掌握Anmpp搭建网站优化解决方案,提高用户体验与性能提升的关键因素分析,深入剖析Anmpp构
Anmpp(Advanced Network Messaging Protocol)是一种高性能、可扩展的 *** 通信协议,常用于构建网站通信架构。针对如何搭建网
网站流量推广策略,打造高效关键词,提升网站流量
随着互联网的快速发展,越来越多的企业和个人开始重视网站流量,如何提升网站流量,已经成为众多企业和个人关注的焦点,本文将从