skip-gram负采样原理
skip-gram负采样
自然语言处理领域中,判断两个单词是不是一对上下文词(context)与目标词(target),如果是一对,则是正样本,如果不是一对,则是负样本。
采样得到一个上下文词和一个目标词,生成一个正样本(positive example),生成一个负样本(negative example),则是用与正样本相同的上下文词,再在字典中随机选择一个单词,这就是负采样(negative sampling)。
下图为cbow和skip-gram模型:
skip-gram模型输入:
举个例子:
我们知道对于每个input word来说,有多个output word(上下文)。例如我们的输入是【熟悉】,上下文是[熟练掌握, java, python, shell],那么【熟悉】这一个batch中就有四个训练样本[熟悉, 熟练掌握], [熟悉, java], [熟悉, python], [熟悉, shell]。
但是神经网络模型只能接受数值输入,所以必须进行one-hot编码,假设我们在训练数据中只能取出10000个不重复的单词作为词汇表,那么我们对每个单词编码都是1 *10000的向量。
模型的输入是10000维的向量,那么输出也是10000维(词汇表的大小)向量,它包含了10000个概率,每一个概率代表着当前词是输入样本中output word的概率大小。如下图,神经网络架构:
对于输出层用softmax,计算量很大,通常用“nagative sampling"(负采样)计算,这样,每个训练样本 只能更新一小部分模型权重,从而减轻计算负担。
当我们用训练样本(input word:“fox”, output word:“quick”)来训练我们的神经网络时,“fox”和“quick”都是经过one-hot编码的。如果我们的vocabulary大小为10000时,在输出层,我们希望“quick”单词那个位置输出1,其余都是0。这些其余我们期望输出0的位置所对应的单词我们成为“negative” word。
当使用负采样时,我们将随机选择一小部分的negative words(比如选5个negative words)来更新对应的权重。我们也会对我们的positive word进行权重更新(上面的例子指的是"quick")
在论文中,作者指出指出对于小规模数据集,选择5-20个negative words会比较好,对于大规模数据集可以仅选择2-5个negative words。
skip-gram负采样原理相关推荐
- KDD 2020 | 理解图表示学习中的负采样
今天给大家介绍的是清华大学的Zhen Yang等人在KDD 2020发表的文章"Understanding Negative Sampling in Graph Representation ...
- NLP-词向量(Word Embedding)-2013:Word2vec模型(CBOW、Skip-Gram)【对NNLM的简化】【层次Softmax、负采样、重采样】【静态表示;无法解决一词多义】
一.文本的表示方法 (Representation) 文本是一种非结构化的数据信息,是不可以直接被计算的.因为文本不能够直接被模型计算,所以需要将其转化为向量. 文本表示的作用就是将这些非结构化的信息 ...
- tensorflow --batch内负采样
class NegativeCosineLayer():""" 自定义batch内负采样并做cosine相似度的层 """"&qu ...
- Tensorflow之负采样函数Sampled softmax loss
Tensorflow之负采样函数Sampled softmax loss 谷歌16年出的论文<Deep Neural Networks for Youtube Recommendation> ...
- 背景区域为负样本什么意思_词向量-skipgram与负采样
大纲: 1. onehot vs 分布式表示 2. 分布式表示的全局泛化能力 3. how to learn word2vec - intuition 4. SkipGram 5. SkipGram ...
- 深入理解深度学习——Word Embedding(六):负采样(Negative Sampling)优化
分类目录:<深入理解深度学习>总目录 相关文章: · Word Embedding(一):word2vec · Word Embedding(二):连续词袋模型(CBOW, The Con ...
- 《自然语言处理学习之路》02 词向量模型Word2Vec,CBOW,Skip Gram
本文主要是学习参考莫烦老师的教学,对老师课程的学习,记忆笔记. 原文链接 文章目录 书山有路勤为径,学海无涯苦作舟. 零.吃水不忘挖井人 一.计算机如何实现对于词语的理解 1.1 万物数字化 1.2 ...
- 词向量模型skip-gram以及负采样技术图解
一.前言 请勿全文复制转载!尊重劳动成果! 在使用词向量之前,我们往往用one-hot向量来表示一个字词,这样有两个缺点: ① 维度过大.使用one-hot向量来表示字词,那么一个字词就需要一个词表大 ...
- 基于高频词抽样+负采样的CBOW模型
深度学习入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删. ✨word2vector系列展示✨ 一.CBOW 1.朴素CBOW模型 word2ve ...
最新文章
- Ioc 控制反转 实例
- call、apply、bind
- Unix toolbox注解2之Linux系统状态用户和限制
- 区块链BaaS云服务(30) 字节方舟 ByteArk
- [转载]js复制内容加版权声明代码
- shell中的>/dev/null 2>1(转载)
- python apscheduler执行_Python下定时任务框架APScheduler的使用
- 1.springboot:入门程序
- Qt/C++工作笔记-对vector与QVector中erase操作的进一步认识(区别与联系)
- 程序员常用字体(vs2008配色方案)
- Fiddler抓包7-post请求(json)
- 如何使用ABBYY软件编辑PDF文本
- 为什么现在很多人想读博了?
- 【林林js笔记】克隆数组的几种方法以及浅克隆深克隆误区
- 【Lerna 基本使用】
- CPU乱序执行基础 —— Tomasulo算法及执行过程
- centos7安装OTRS开源工单管理平台
- java 机机接口定义_【JAVA】接口
- Android Studio 提示:更新 TKK 失败,请检查网络连接
- Android----一个完整的小项目(医疗app)