面试题:Word2Vec中为什么使用负采样?

2019 年 5 月 16 日 七月在线实验室


Word2Vec中为什么使用负采样?

(negtive sample)


解析一

如七月在线推荐就业班的专家讲师李老师所言
负采样这个点引入word2vec非常巧妙,两个作用:
1.加速了模型计算
2.保证了模型训练的效果,其一模型每次只需要更新采样的词的权重,不用更新所有的权重,那样会很慢,其二中心词其实只跟它周围的词有关系,位置离着很远的词没有关系,也没必要同时训练更新,作者这点非常聪明。


解析二
下述解析来源于:https://zhuanlan.zhihu.com/p/29488930
1. 随机梯度下降法有什么问题?
通过对代价函数求权重的梯度,我们可以一次性对所有的参数
进行优化,但是如果每次等全部计算完成再优化升级,我们将等待很长时间(对于很大的语料库来说)。

所以我们采用随机梯度下降( Stochastic Gradient Descent),也就是说每次完成一次计算就进行升级。

但是,还有两个问题导致目前的模型效率低下!

第一个问题:

我们每次只对窗口中出现的几个单词进行升级,但是在计算梯度的过程中,我们是对整个参数矩阵进行运算,这样参数矩阵中的大部分值都是0

计算效率低下!

第二个问题:

我们使用的目标函数是softmax函数


我们观察分母,分母需要把窗口中所有单词的“得分”都算出来再求和,效率低下!


2. 使用负采样
负采样的核心思想是:计算目标单词和窗口中的单词的真实单词对“得分”,再加一些“噪声”,即词表中的随机单词和目标单词的“得分”。

真实单词对“得分”和“噪声”作为代价函数。

每次优化参数,只关注代价函数中涉及的词向量。

下面给出公式:



采用上述公式解决了之前说的两个问题:

我们仅对K个参数进行采样
我们放弃softmax函数,采用sigmoid函数,这样就不存在先求一遍窗口中所有单词的‘“得分”的情况了。


3. 计算梯度
既然代价函数已经更新了,那么我们需要对梯度进行更新。

首先考虑一下,我们想要求导的目标,也就是对谁求导?

答案是,对我们想要优化的参数求导,前面说了,负采样的目的是不需要对整个向量矩阵 U或 V 进行优化,而是仅对求代价过程中涉及的词向量进行优化,因此,求导对象是目标向量
,窗口中的其他词向量和负采样时随机选取的词向量

此篇文章关注的问题不是求导的过程,因此下面直接给出梯度:


更多面试题

关注后点击免费资料菜单

点击BAT面试题即可

想从进入大热的NLP方向?

担心找不到工作?

再也不用怕了!

就业班来了,保证就业!

依据个人情况定制化教学

定制学习路线

芝加哥大学博士辅导

名企面试官亲自辅导面试

助你成为业内急缺的NLP人才


分享课程拿现金红包

领的人越多,你拿的越多!

快来扫它


他用机器学习减肥20斤!程序员必看,你想不到的机器学习妙用


龙妈苟活还是凉凉,预测算法哪家准?


福利时间

后台回复:“100”   免费领【机器学习面试100题

后台回复:“干货” 免费领【全体系人工智能学习资料

后台回复:“领资料” 免费领【NLP工程师必备干货资料


“阅读原文”你来决定未来的内容
你在看吗?
登录查看更多
46

相关内容

自然语言处理领域中,判断两个单词是不是一对上下文词(context)与目标词(target),如果是一对,则是正样本,如果不是一对,则是负样本。采样得到一个上下文词和一个目标词,生成一个正样本(positive example),生成一个负样本(negative example),则是用与正样本相同的上下文词,再在字典中随机选择一个单词,这就是负采样(negative sampling)。
[ICML-Google]先宽后窄:对深度薄网络的有效训练
专知会员服务
34+阅读 · 2020年7月5日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
KGCN:使用TensorFlow进行知识图谱的机器学习
专知会员服务
81+阅读 · 2020年1月13日
【Google论文】ALBERT:自我监督学习语言表达的精简BERT
专知会员服务
23+阅读 · 2019年11月4日
BAT机器学习面试1000题(721~725题)
七月在线实验室
11+阅读 · 2018年12月18日
BAT机器学习面试1000题(716~720题)
七月在线实验室
19+阅读 · 2018年12月17日
BAT机器学习面试题1000题(331~335题)
七月在线实验室
12+阅读 · 2018年8月13日
深度学习面试100题(第81-85题)
七月在线实验室
16+阅读 · 2018年8月6日
深度学习面试100题(第71-75题)
七月在线实验室
5+阅读 · 2018年8月2日
深度学习面试100题(第56-60题)
七月在线实验室
9+阅读 · 2018年7月23日
面试整理:关于代价函数,正则化
数据挖掘入门与实战
8+阅读 · 2018年3月29日
干货|自然语言处理中的词向量 — word2vec!
全球人工智能
7+阅读 · 2018年1月25日
教程 | 在Python和TensorFlow上构建Word2Vec词嵌入模型
机器之心
6+阅读 · 2017年11月20日
BAT机器学习面试1000题系列(第36~40题)
七月在线实验室
8+阅读 · 2017年10月3日
Arxiv
45+阅读 · 2019年12月20日
Efficiently Embedding Dynamic Knowledge Graphs
Arxiv
14+阅读 · 2019年10月15日
Meta-Transfer Learning for Few-Shot Learning
Arxiv
8+阅读 · 2018年12月6日
Arxiv
4+阅读 · 2018年3月22日
VIP会员
相关VIP内容
[ICML-Google]先宽后窄:对深度薄网络的有效训练
专知会员服务
34+阅读 · 2020年7月5日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
KGCN:使用TensorFlow进行知识图谱的机器学习
专知会员服务
81+阅读 · 2020年1月13日
【Google论文】ALBERT:自我监督学习语言表达的精简BERT
专知会员服务
23+阅读 · 2019年11月4日
相关资讯
BAT机器学习面试1000题(721~725题)
七月在线实验室
11+阅读 · 2018年12月18日
BAT机器学习面试1000题(716~720题)
七月在线实验室
19+阅读 · 2018年12月17日
BAT机器学习面试题1000题(331~335题)
七月在线实验室
12+阅读 · 2018年8月13日
深度学习面试100题(第81-85题)
七月在线实验室
16+阅读 · 2018年8月6日
深度学习面试100题(第71-75题)
七月在线实验室
5+阅读 · 2018年8月2日
深度学习面试100题(第56-60题)
七月在线实验室
9+阅读 · 2018年7月23日
面试整理:关于代价函数,正则化
数据挖掘入门与实战
8+阅读 · 2018年3月29日
干货|自然语言处理中的词向量 — word2vec!
全球人工智能
7+阅读 · 2018年1月25日
教程 | 在Python和TensorFlow上构建Word2Vec词嵌入模型
机器之心
6+阅读 · 2017年11月20日
BAT机器学习面试1000题系列(第36~40题)
七月在线实验室
8+阅读 · 2017年10月3日
Top
微信扫码咨询专知VIP会员