一:负采样
在CBOW和Skip-Gram模型中,最后输出的都是词汇的one-hot向量,假如我们的词汇表的数量是10000,嵌入空间的维度是300,再假设此时是以Skip-Gram模型只预测context内的单独一个word的模型为例,那么从隐藏层到输出层的参数数量是300 x 10000的。

每次的输出之前都要做softmax操作,对于如此庞大的词汇数量,计算softmax是很耗费时间的,不仅仅是前向计算,在反向传播的时候求偏导数也是很耗费计算的。

负采样就是一个简化计算的办法,考虑到我们最终样本输出的one-hot向量只有一个点是等于1(称之为正样本),其他9999个点都是0(称之为负样本)。思想就是,保留这个正样本,另外从所有的词典中随机选取采样一个其他的词语的点作为负样本,总共选取K个,K个负样本,这样一来,我们最后只用管这(K+1)个样本的计算,反向传播进行采纳数更新也是只更新这(K+1)个样本对应的参数。每个训练样本只会更新一小部分模型权重,而不是所有的词汇点对应的模型参数,从而降低计算负担。

有点类似于dropout,保留一些样本不失活,前向/反向传播只考虑这存活的节点。
注意,选取节点的时候必须包含一个正样本,其他K个都是负样本。

这样的话,我们的隐藏层到输出层的参数就只有300 x (1+K)个了,大大减少了softmax层计算量,也值更新这选中的节点对应的参数。提升了计算效率。

二:采样方式
任何采样算法都应该保证频次越高的样本越容易被采样出来。

方法就是对预料库的所有词语做一个词频统计,求出每个词语所占的多少概率。

分子是每个词语的个数,分母是所有词语的总数。且占比之和是等于1。

由于出现频率高的词语理应该被较大概率选中。就把所有词语对应的频率密切衔接对应到一条直线上,直线长度是1,每个词语占一定的长度。接下来我们只要生成一个0-1之间的随机数,看看落到哪个区间,就能采样到该区间对应的单词了,很公平,如下图。

实现上需要记录每个词语所处的刻度位置和长度,产生的随机数才能去匹配。

Word2vec中,对比有点不一样的做法就是,小数操作太麻烦了,直接将上述直线划分成等距离份的M个小线段,接着我们就不生成0-1之间的随机数了,我们生成0-M之间的整数,去这个刻度尺上一查就能抽中一个单词了,如下图。

Word2vec中的频率计算有些不同,不是直接使用上述的式子,而是使用了一个更加“平滑”的式子。

这样做能提小概率的词汇提高一些选择的概率,对大概率的词汇降低一些选择的概率。

例如:词汇表只有A和B两个词语,A是16个,B是81个。A的数量少于B。
用原始式子是:P(A)=16/97
用“平滑”式子是:P(A)=8/(8+27),很明显A的概率值提高了。

NLP《词汇表示方法(四)负采样》相关推荐

  1. 机器学习笔记之马尔可夫链蒙特卡洛方法(四)吉布斯采样

    机器学习笔记之马尔可夫链蒙特卡洛方法--吉布斯采样 引言 回顾:MH采样算法 基于马尔可夫链的采样方式 细致平衡原则与接收率 MH采样算法的弊端 吉布斯采样方法 吉布斯采样的采样过程 吉布斯采样的推导 ...

  2. NLP《词汇表示方法(三)word2vec》

    Word2Vec是2013年Google发布的工具,也可以说是一个产生词向量的一群模型组合,关于词向量,也就是嵌入词向量的解释之前也解释了,这里不赘述.该工具主要包含两个词向量的生成模型,跳字模型(s ...

  3. 深入理解深度学习——Word Embedding(六):负采样(Negative Sampling)优化

    分类目录:<深入理解深度学习>总目录 相关文章: · Word Embedding(一):word2vec · Word Embedding(二):连续词袋模型(CBOW, The Con ...

  4. 负采样Negative Sampling

    1.噪声对比估计(Noise contrastive estimation) 语言模型中,根据上下文c,在整个语料库V中预测某个单词w的概率,一般采用softmax形式,公式为: NCE:将softm ...

  5. 自然语言处理中的负采样

    目录 word2vec出现的背景 跳字模型(skip-gram) 连续词袋模型(CBOW) 小结 负采样 具体训练过程 word2vec出现的背景 我们都知道,自然语言处理需要对文本进行编码,将语言中 ...

  6. 花书+吴恩达深度学习(二四)蒙特卡罗方法(重要采样,MCMC)

    文章目录 0. 前言 1. 重要采样 2. 马尔可夫链蒙特卡罗 MCMC 3. 不同峰值之间的混合挑战 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 花书+吴恩达深度学习( ...

  7. 【NLP】word2vec负采样

    一.理解负采样之前,需要先回顾一下word2vec的训练流程: 1.初始化一个embedding权重矩阵W1(N*D)→2.根据输入单词直接挑出W1矩阵中对应的行向量→3.相加并求平均得一个向量(1* ...

  8. [nlp] 负采样 nce_loss

    论文:http://demo.clab.cs.cmu.edu/cdyer/nce_notes.pdf 参考:求通俗易懂解释下nce loss? - 知乎 参考:(三)通俗易懂理解--Skip-gram ...

  9. NLP-词向量(Word Embedding)-2013:Word2vec模型(CBOW、Skip-Gram)【对NNLM的简化】【层次Softmax、负采样、重采样】【静态表示;无法解决一词多义】

    一.文本的表示方法 (Representation) 文本是一种非结构化的数据信息,是不可以直接被计算的.因为文本不能够直接被模型计算,所以需要将其转化为向量. 文本表示的作用就是将这些非结构化的信息 ...

最新文章

  1. 2021fall Broadway Tech校招
  2. pygame显示图片的方法_使用Pygame进行游戏开发(1)
  3. wxWidgets:wxString类用法
  4. 缓存(Cache)管理 ---- 系列文章
  5. mysqlreport
  6. minio 并发数_开源数据存储项目Minio:提供非结构化数据储存服务
  7. 「深度解读」为什么连Google也无法阻挡垂直行业SaaS的浪潮
  8. 六、3D-3D ICP问题线性SVD解法与非线性BA解法
  9. matlab两个数组竖向叠加,matlab - 过滤器同时使用两个数组中的元素 - 堆栈内存溢出...
  10. RAN adjusts schedule for 2nd wave of 5G specifications
  11. 前端到底是自学好还是培训好?
  12. vue中cookie的使用——将cookie放在请求头header中
  13. Linux操作系统下软件的安装与卸载
  14. nginx1.8.0安装
  15. DEV-C++官方下载地址
  16. oa项目经验描述_项目执行简历中的项目经验怎么写
  17. 软考中级软件设计师——数据结构与算法基础
  18. IDEA插件系列(81):Shifter插件——字符串操作
  19. 使用Python来计算均值、中位数、标准差
  20. matlab怎么做空间计量,六步学会用MATLAB做空间计量回归详细步骤

热门文章

  1. webpack入门+react环境配置 1
  2. Outlook 2013 电子邮件账户设置备份与恢复
  3. HDU1253 胜利大逃亡
  4. TCP连接(Time_Wait、Close_Wait)说明
  5. Ext.ClassManager源码
  6. Winform使用DevExpress的WaitDialogForm画面 z
  7. 网络查找文档比自己电脑上还方便?
  8. oracle一个lun多大,Oracle RAC中验证LUN_ID对应情况
  9. SpringMVC 返回值分类
  10. C#LeetCode刷题之#39-组合总和(Combination Sum)