Word2vec负采样

Word2vec负采样下文中的模型都是以Skip-gram模型为主。1、论文发展word2vec中的负采样(NEG)最初由Mikolov在论文《DistributedRepresentationsofWordsandPhrasesandtheirCompositionality》中首次提出来,是Noise-ContrastiveEstimation(简写NCE,噪声对比估计)的简化版本…

大家好,又见面了,我是你们的朋友全栈君。

下文中的模型都是以Skip-gram模型为主。
 
1、论文发展
word2vec中的负采样(NEG)最初由 Mikolov在论文《Distributed Representations of Words and Phrases and their Compositionality》中首次提出来,是Noise-Contrastive Estimation(简写NCE,噪声对比估计)的简化版本。在论文中针对Skip-gram模型直接提出负采样的优化目标函数为:
Word2vec负采样
Word2vec负采样

Word2vec负采样

其中Pn(w)是目标词不是w的上下文的概率分布。
论文中没有给出证明,到了2014年,Yoav Goldberg在论文《word2vec Explained: Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method》里对上述目标函数给出了推导。
 
2、原始的skip-gram模型的目标函数
如果没有采用负采样的话,那么skip-gram模型的目标函数为:
Word2vec负采样
Word2vec负采样其中p(c|w)表示的是当前词预测到的目标上下文的概率最大,C(w)是目标词w的所有上下文集合。
相应地可以简化为
Word2vec负采样
Word2vec负采样
式中D是语料中所有单词和上下文的集合。
如果我们采用softmax函数的话,那么我们可以得到对应每个上下文的概率大小为:
Word2vec负采样
Word2vec负采样
其中Vc和Vw可以看成是对应词c和词w的词向量。关于如何得到这个式子可以参考后面,那么将该式子代入上式并取log可以得到:
Word2vec负采样
Word2vec负采样
对上述目标函数求最大化,可以让相似的词具有相似的向量值。
 
3、采用负采样的目标函数
但是对上述目标函数进行优化,第二项需要对词典里的所有词进行优化,所以计算量比较大。如果换个角度考虑,如果我们将正常的上下问组合看成是1,不正常的上下文组合看成是0,那么问题转换为二分类问题,那么我们目标就是最大化下面的目标函数。
Word2vec负采样
Word2vec负采样
将输出层的softmax函数改为sigmoid函数,那么
Word2vec负采样
Word2vec负采样
同样代入上式可以得到
Word2vec负采样
但是这个目标函数存在问题,如果Vc=Vw,并且VcxVw足够大的话,就能取到最大值,这样所有词向量都是一样的,得到的词向量没有意义。所以考虑负采样,即引入负样本,那么
Word2vec负采样
Word2vec负采样
Word2vec负采样
那么得到
Word2vec负采样
Word2vec负采样
则与Mikolov提出的式子是一致的。
 
4、如何推导得到目标函数
Word2vec负采样

 

Word2vec负采样
5、举例
以“今天|天气|非常|不错|啊”举例,假设上下文只有一个词,选择目标词是“天气”,那么出现的情况有:
今天|天气,非常|天气,不错|天气,啊|天气
由于我们假设上下文只有一个词,那么在这些情况中只有【今天|天气,非常|天气】是正确的样本。
当我们采用【今天|天气】这个样本时,我们希望输入【天气】,会输出标签【今天】,其他概率都是0。
 
对于原始的skip-gram模型来说,这对应是一个4分类问题,当输入【今天|天气】时,那么我们可能出现的概率是P(今天|天气)、P(非常|天气)、P(不错|天气)和P(啊|天气),我们的目标就是让P(今天|天气)这个概率最大,但是我们得同时计算其他三类的概率,并在利用反向传播进行优化的时候需要对所有词向量都进行更新。这样计算量很大,比如我们这里就要更新5*100=500个参数(假设词向量维度是100维的)。
 
但是如果采用负采样,当输入【今天|天气】时,我们从【非常|不错|啊】中选出1个进行优化,比如【不错|天气】,即我们只需计算P(D=1|天气,今天)和P(D=0|天气,不错),并且在更新的时候只更新【不错】、【天气】和【今天】的词向量,这样只需更新300个参数,计算量大大减少了。
 
6、参考资料
[1]word2vec Parameter Learning Explained
[2]word2vec Explained: Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method
[3]Note on Word Representation
[4]Distributed Representations of Words and Phrases and their Compositionality
 

 

转载于:https://www.cnblogs.com/linhao-0204/p/9126037.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151251.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • CSS3选择器详解

    CSS3选择器详解一、CSS3选择器分类1.基本选择器2.层次选择器3.伪类选择器1)动态伪类选择器2)目标伪类选择器3)语言伪类选择器4)UI元素状态伪类选择器5)结构伪类选择器6)否定伪类选择器4.伪元素5.属性选择器二、基本选择器语法这里着重说一下群组选择器(selector1,selector2,…,selec

  • JVM参数解析 Xmx、Xms、Xmn、NewRatio、SurvivorRatio、PermSize、PrintGC「建议收藏」

    -verbose:gc-XX:+printGC可以打印GC的简要信息[GC4790K->374K(15872K),0.0001606secs][GC4790K->374K(15872K),0.0001474secs][GC4790K->374K(15872K),0.0001563secs][GC4790K->374K(15872K),0.0…

  • 深度信念网络DBN的一个matlab实例「建议收藏」

    关于深度学习的一些个人浅见:   深度学习通常是训练深度(多层)神经网络,用于模式识别(如语音、图像识别);深度网络指是具有深层(多层)网络结构的神经网络。   深层网络由于神经元多,参数多,拟合表现能力强,有表现欲解决复杂问题的能力。   但是深度网络存在很多局部最优解,深度网络的训练容易停留在局部最优上,初始参数的选择对网络最终收敛在那个位置有很大的影响。

  • Unity零基础到入门 ☀️| 万字教程 对 Unity 中的 Navigation导航系统基础 全面解析+实战演练【收藏不迷路】[通俗易懂]

    Unity零基础到入门 ☀️| 万字教程 对 Unity 中的 Navigation导航系统基础 全面解析+实战演练【收藏不迷路】[通俗易懂]导航系统。导航系统,顾名思义,就是游戏中的一个寻路功能。本文对Unity中的导航Navigation系统做了一个详细的说明,包括案例和效果展示!请品尝!

  • 普罗米修斯Prometheus监控神器

    普罗米修斯Prometheus监控神器文章目录一、普罗米修斯Prometheus安装配置1.1实验环境一、普罗米修斯Prometheus安装配置1.1实验环境在这里插入代码片

  • 鸡汤+实践:月薪3000到月薪30000升级之路

    鸡汤+实践:月薪3000到月薪30000升级之路最近在朋友圈疯转的一个鸡汤段子(虽然我觉得99%的可能不是屠老师说的)  屠呦呦获奖感言:不要去追一匹马,用追马的时间种草,待到春暖花开时,就会有一批骏马任你挑选;不要去刻意巴结一个人,用暂时没有朋友的时间,去提升自己的能力,待到时机成熟时,就会有一批的朋友与你行。用人情做出来的朋友只是暂时的,用人格吸引来的朋友才是长久的。所以,丰富自己比取悦他人更有力量。  其实,追马理论能在

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号