背景区域为负样本什么意思_词向量-skipgram与负采样

大纲:

  • 1. onehot vs 分布式表示
  • 2. 分布式表示的全局泛化能力
  • 3. how to learn word2vec - intuition
  • 4. SkipGram
  • 5. SkipGram Negative Sampling
  • 6. 评估词向量
  • 7. CBOW与SkipGram对比

1. onehot vs 分布式表示

Onehot表示:

V = (apple, going, I, home, machine ,learing)

  • apple = (1,0,0,0,0,0)
  • machine = (0,0,0,0,1,0)
  • learning = (0,0,0,0,0,1)
  • I go home = (0,1,1,1,0,0)

onehot缺点:

  1. 高维稀疏
  2. 无法计算单词之间的相似度,因每一个词映射到高维空间中都是互相正交的,词与词之间没有任何关联关系,这显然与实际情况不符合,因为实际中词与词之间有近义、反义等多种关系

分布式表示

V = (apple, going, I, home, machine ,learing)

  • apple = (0.1, 0.3, 0.5, 0.1)
  • machine = (0.2, 0.3, 0.1, 0.6)
  • learning= (0.1, 0.2, 0.6, 0.1)
  • I going home = (0.5, 1.1, 0.5, 0.2)

分布式表示优点:

  1. 低维稠密
  2. 可以计算单词之间的相似度,Word2vec虽然学习不到反义这种高层次语义信息,但它巧妙的运用了一种思想:“具有相同上下文的词语包含相似的语义”,使得语义相近的词在映射到欧式空间后中具有较高的余弦相似度。怎么把“具有相同上下文的词语包含相似的语义”这种思想融入模型是很关键的一步,在模型中,两个词是否出现在一起是通过判断这两个词在上下文中是否出现在一个窗口。
陈运文:漫谈Word2vec之skip-gram模型​zhuanlan.zhihu.com
c0d192cfc74c594fb51222f8fc8ffde1.png

3. Capacity,分布式表示可以用100维的向量表示所有的单词, 而独热编码只能表示100个单词

2. 分布式表示的全局泛化能力

在机器学习中,我们要寻求的是在全局范围内泛化能力很强的模型。

Local generalization(局部泛化能力):

4f6785ed72054144d1b95b67b8196b63.png

举个例子,model1,2,3分别表示用原材料做了1,2,3三道菜,第一道菜做了比其它两道菜的次数多,可以说model1的能力由于其它两道菜,模型1的泛化能力比较强。

Global generalization(全局泛化能力):

2e04ae2d696edcbfaaea1f35a782d820.png

我们先做半成品出来,然后用这些半成品做成菜,我们在做每道菜的时候不断地在调整半成品的参数,这样就可以提高全局的泛化能力。这些半成品可以看作是parameter sharing。

3. how to learn word2vec - intuition

给定一个句子

bea3056de3660fcdf1d2699abd1fdf28.png

当数据量很大时,挨在一起的单词语义相似度比不挨在一起的单词的语义相似度要高,

词向量:

  • 上下文无关(静态词向量):SkipGram CBOW Glove
  • 上下文有关(动态词向量):Bert ELMO

df655d8d2de19fce09afa19623a8e5c2.png
  • CBOW:利用上下文词预测中心词
  • SkipGram:利用中心词预测上下文词
  • NNLM:利用前面的(n-1)个词预测第n个词
  • Bert:随机选择一些词MASK掉,再用上下文词预测被MASK的词是什么

4. SkipGram

Skip-Gram模型的核心是:在文本中,距离越近的单词相似度会越高。

根据中心词去预测上下文词

SkipGram 核心思路:

语料库为 We are working on NLP Project, it is interesting

ebff105490ad81d11175746ba4976360.png

当窗口大小k等于2时 working为中心词的时候

目标函数为:

因此skipgram的目标函数为:

是中心词,
是上下文词

举例:

语料库:

doc1: 今天 天气 很好

doc2: 今天 上 NLP 课程

k=1


接下来看

是什么。

embedding matrix

33c8d99c24014bec0c0fdf135a76c8de.png

,使用了一个
函数

是上下文,
是中心词,等号右边分子表示上下文和中心词的相似度, 我们希望它越大越好。

举例:

语料库 {今天, 天气, 好, NLP, 上课}


现在的skipgram的目标函数为:

现在出现了

,而且
线性于词库的大小,即需要遍历整个词汇表,复杂度很高,现在没有办法进行下去了。

现在解决这种方法有两种办法:

  • hierarchical softmax(层次softmax)
  • Negative Sampling(负采样)

5. SkipGram Negative Sampling

c2d43c10b33039ab9a33804f3c719321.png

对于中心词

我们希望窗口内的
越大越好,窗口外的
越小越好。

表示
出现在同一窗口内的概率,即
的上下文词的概率,中心词和上下文词对
来自语料库。

表示
不出现在同一窗口内的概率,即
不是
的上下文词的概率,中心词和上下文词对
不是来自语料库。

如果

出现在同一窗口内,我们希望
越大越好

如果

不出现在同一窗口内,我们希望
越大越好

3e11b36701e2ca190dacd06da8d3242a.png

其中

其中

让人想起了逻辑回归


举例:

语料库:Today's weather is great

vocab=[Today's ,weather,is, great]

窗口k=1

正样本

={(Today's ,weather),(weather,Today's ),(weather,is),(is,weather),(is,great),(great,is)}

负样本

= {(Today's ,is),(Today's ,great)(weather,great),(is,Today's ),(great,weather),(great,Today's)}

对于正样本 我们想最大化P(D=1,正样本);对于负样本 我们想最大化P(D=0,负样本);


现在目标函数为:

在实际使用时,因为正样本的数量会远远少于负样本的数量(有很多负样本根本不会出现在文本中),所以我们引入Nagetive Sampling,从正样本对应的负样本中随机采样来减少负样本的数量(不考虑所有的负样本,而是对负样本进行采样)。

现在目标函数为:


举例:

s="I like NLP,it is interesting,but it is hard"

vocab=[I, like ,NLP, it,is,interesting,but ,hard] 词典长度=8

以NLP为中心词,K=1

  • 正样本:(NLP,like) 负样本:(NLP,I) (NLP,but)
  • 正样本:(NLP,it) 负样本:(NLP,hard) (NLP,I)

以it为中心词,k=1

  • 正样本:(it,is) 负样本:(it,interesting) (it,hard)
  • 正样本:(it,NLP) 负样本:(it,hard) (it,I

对参数进行求解

进行求导

进行求导

进行求导

伪代码如下:

Skip-Gram 的缺点

没有考虑到上下文;

窗口长度有限,无法考虑全局;

无法有效学习低频词和未登录词OOV(out of vocabulary)

多义词无法区别。

上下文的问题可以用Elmo和Bert解决;

低频次和OOV可以用subword embedding

6. 评估词向量:

  1. TSNE 可视化词向量,对训练得到的词向量降维到二维空间进行观察
  2. similarity:已有一个训练好的词向量和人工标记的单词相似度表(football和basketball相似度=0.91),基于训练好的词向量进行相似度计算,
    之间的相似度是不是接近于0.91。
  3. 类比(analogy):woman:man == boy:girl (如已知woman:man的相似性,给定boy来寻找girl)(woman-man =boy-?)

7. CBOW与SkipGram对比:

在cbow方法中,是用上下文词预测中心词,从而利用中心词的预测结果情况,使用梯度下降方法,不断的去调整上下文词的向量。当训练完成之后,每个词都会作为中心词,把上下文词的词向量进行了调整,这样也就获得了整个文本里面所有词的词向量。

可以看到,cbow预测行为的次数跟整个文本的词数几乎是相等的,复杂度大概是O(V);

而skip-gram是用中心词来预测上下文的词。在skip-gram中,会利用上下文词的预测结果情况,使用GradientDecent来不断的调整中心词的词向量,最终所有的文本遍历完毕之后,也就得到了文本所有词的词向量。

可以看出,skip-gram进行预测的次数是要多于cbow的:因为每个词在作为中心词时,都要使用上下文词进行预测一次。这样相当于比cbow的方法多进行了K次(假设K为窗口大小),因此时间的复杂度为O(KV),训练时间要比cbow要长。

但是在skip-gram当中,每个词都要收到周围的词的影响,每个词在作为中心词的时候,都要进行K次的预测、调整。因此, 当数据量较少,或者词为生僻词出现次数较少时, 这种多次的调整会使得词向量相对的更加准确。

在skip-gram里面,每个词在作为中心词的时候,实际上是 1个学生 VS K个老师,K个老师(上下文词)都会对学生(中心词)进行“专业”的训练,这样学生(中心词)的“能力”(向量结果)相对就会扎实(准确)一些,但是这样肯定会使用更长的时间;

cbow是 1个老师 VS K个学生,K个学生(上下文词)都会从老师(中心词)那里学习知识,但是老师(中心词)是一视同仁的,教给大家的一样的知识。至于你学到了多少,还要看下一轮(假如还在窗口内),或者以后的某一轮,你还有机会加入老师的课堂当中(再次出现作为上下文词),跟着大家一起学习,然后进步一点。因此相对skip-gram,你的业务能力肯定没有人家强,但是对于整个训练营(训练过程)来说,这样肯定效率高,速度更快。

卡门:cbow 与 skip-gram的比较​zhuanlan.zhihu.com

因此:

2c1c29d2681dd2894452dc1da8b2be9b.png

19be2e0eb8e6f2376aa2f5bf1da1a4fb.png

第一次编辑(2020)


参考:

Dong:词向量技术的学习​zhuanlan.zhihu.com
c40fa35ca8e65d92c84d4fee7f59a160.png
陈运文:漫谈Word2vec之skip-gram模型​zhuanlan.zhihu.com
c0d192cfc74c594fb51222f8fc8ffde1.png
深度学习之Skip-Gram和CBOW原理_hongwei的博客-CSDN博客_cbow 和 skip-gram,以及两种方式的损失函数构造​blog.csdn.net
6531b67d759afc196ee838f72ebe6002.png
深度学习之Skip-Gram和CBOW原理_hongwei的博客-CSDN博客_cbow 和 skip-gram,以及两种方式的损失函数构造​blog.csdn.net
6531b67d759afc196ee838f72ebe6002.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值