精华内容
下载资源
问答
  • Skip-Gram

    2020-03-16 12:11:14
    Skip-Gram是一种词嵌入模型,模型的结构如下所示: 该模型是根据中心词计算上下文词,概率为 每一个单词有两个词向量,一个是作为中心词时的向量,一个是作为上下文词时的向量,公式中v是作为中心词时候的向量,u是...

    Skip-Gram是一种词嵌入模型,模型的结构如下所示:

    在这里插入图片描述
    该模型是根据中心词计算上下文词,概率为
    在这里插入图片描述每一个单词有两个词向量,一个是作为中心词时的向量,一个是作为上下文词时的向量,公式中v是作为中心词时候的向量,u是作为上下文词时的向量。该概率的分子是中心词与某一个词的相似度,分母是中心词与字典中所有词的相似度的和。
    用softmax的原因是,有的内积为负数,但是概率不可能为负数,所以用指数,让所有的概率为正,softmax放大了大概率(max),依然给小的输出一定的概率(soft)。

    Skip-Gram的代价函数:

    在这里插入图片描述
    为什么下面的目标方程除以T: 为了减少字典的大小的影响

    要训练的参数:
    在这里插入图片描述
    每个单词都两个词向量

    展开全文
  • n-gramskip-gram

    千次阅读 2020-05-28 15:12:06
    N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,...跳字模型(skip-gram):通过中心词来推断上下文一定窗口内的单词。 一、什么是n-gram模型 N-Gr...

    N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。

    该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。

     

    跳字模型(skip-gram):通过中心词来推断上下文一定窗口内的单词。

     

     

    一、什么是n-gram模型

    N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。

    每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。

    该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。

    说完了n-gram模型的概念之后,下面讲解n-gram的一般应用。

    二、n-gram模型用于评估语句是否合理

    如果我们有一个由 m 个词组成的序列(或者说一个句子),我们希望算得概率 ,根据链式规则,可得

    [公式]

    这个概率显然并不好算,不妨利用马尔科夫链的假设,即当前这个词仅仅跟前面几个有限的词相关,因此也就不必追溯到最开始的那个词,这样便可以大幅缩减上述算式的长度。即

    [公式]

    这个马尔科夫链的假设为什么好用?我想可能是在现实情况中,大家通过真实情况将n=1,2,3,....这些值都试过之后,得到的真实的效果和时间空间的开销权衡之后,发现能够使用。

    下面给出一元模型,二元模型,三元模型的定义:

    当 n=1, 一个一元模型(unigram model)即为 :

    当 n=2, 一个二元模型(bigram model)即为 :

    当 n=3, 一个三元模型(trigram model)即为

    然后下面的思路就很简单了,在给定的训练语料中,利用贝叶斯定理,将上述的条件概率值(因为一个句子出现的概率都转变为右边条件概率值相乘了)都统计计算出来即可。下面会给出具体例子讲解。这里先给出公式:

    对第一个进行解释,后面同理,如下: [公式]

    下面给出具体的例子。

    三、二元语言模型判断句子是否合理

    下面例子来自于:自然语言处理中的N-Gram模型详解 - 白马负金羁 - CSDN博客和《北京大学 常宝宝 以及 The University of Melbourne “Web Search and Text Analysis” 课程的幻灯片素材》

    假设现在有一个语料库,我们统计了下面的一些词出现的数量

    下面的这些概率值作为已知条件:

    p(want|<s>) = 0.25

    下面这个表给出的是基于Bigram模型进行计数之结果

    例如,其中第一行,第二列 表示给定前一个词是 “i” 时,当前词为“want”的情况一共出现了827次。据此,我们便可以算得相应的频率分布表如下。

    比如说,我们就以表中的p(eat|i)=0.0036这个概率值讲解,从表一得出“i”一共出现了2533次,而其后出现eat的次数一共有9次,p(eat|i)=p(eat,i)/p(i)=count(i,eat)/count(i)=9/2533 = 0.0036

    下面我们通过基于这个语料库来判断s1=“<s> i want english food</s>” 与s2 = "<s> want i english food</s>"哪个句子更合理:通过例子来讲解是最人性化的,我在网上找了这么久发现这个例子最好:

    首先来判断p(s1)

    P(s1)=P(i|<s>)P(want|i)P(english|want)P(food|english)P(</s>|food)

    =0.25×0.33×0.0011×0.5×0.68=0.000031

    再来求p(s2)?

    P(s2)=P(want|<s>)P(i|want)P(english|want)P(food|english)P(</s>|food)

    =0.25*0.0022*0.0011*0.5*0.68 = 0.00000002057

    通过比较我们可以明显发现0.00000002057<0.000031,也就是说s1= "i want english food</s>"更像人话。

    再深层次的分析,我们可以看到这两个句子的概率的不同,主要是由于顺序i want还是want i的问题,根据我们的直觉和常用搭配语法,i want要比want i出现的几率要大很多。所以两者的差异,第一个概率大,第二个概率小,也就能说的通了。

    下面再给出生活中常用的一个应用。

    四、N-gram模型的一个常见应用

    搜索引擎(Google或者Baidu)、或者输入法的猜想或者提示。你在用谷歌时,输入一个或几个词,搜索框通常会以下拉菜单的形式给出几个像下图一样的备选,这些备选其实是在猜想你想要搜索的那个词串。

    再者,当你用输入法输入一个汉字的时候,输入法通常可以联系出一个完整的词,例如我输入一个“刘”字,通常输入法会提示我是否要输入的是“刘备”。通过上面的介绍,你应该能够很敏锐的发觉,这其实是以N-Gram模型为基础来实现的。比如下图:

    那么原理是什么呢?也就是我打入“我们”的时候,后面的“不一样”,”的爱“这些是怎么出来的,怎么排序的?

    实际上是根据语言模型得出。假如使用的是二元语言模型预测下一个单词:

    排序的过程就是:

    p(”不一样“|"我们")>p(”的爱“|"我们")>p(”相爱吧“|"我们")>.......>p("这一家"|”我们“),这些概率值的求法和上面提到的完全一样,数据的来源可以是用户搜索的log。

    五、n-gram的n大小对性能的影响

    • n更大的时候
      n: 对下一个词出现的约束性信息更多,更大的辨别力,但是更稀疏,并且n-gram的总数也更多,为 [公式] 个(V为词汇表的大小)
    • n更小的时候
    • 在训练语料库中出现的次数更多,更可靠的统计结果,更高的可靠性 ,但是约束信息更少

    其中当N为特定值的时候,我们来看一下n-gram可能的总数,如下表:

    对于上图,我用一个例子来进行解释,加入目前词汇表中就只有三个单词,”我爱你“,那么bigram的总数是3^2=9个,有”我我“,我爱,我你,爱爱,爱你,爱我,你你,你我,你爱这9个,所以对应上面的表示是bigrams是20000^2=400000000,trigrams=20000^3 = 8*10e12

     

    原文链接:https://zhuanlan.zhihu.com/p/32829048

    展开全文
  • NLP之WE之CBOW&Skip-Gram:CBOW&Skip-Gram算法概念相关论文、原理配图、关键步骤之详细攻略 目录 CBOW&Skip-Gram算法相关论文 CBOW&Skip-Gram算法原理配图对比 1、CBOW模型之用一个单词预测一个单词 2、...

    NLP之WE之CBOW&Skip-Gram:CBOW&Skip-Gram算法概念相关论文、原理配图、关键步骤之详细攻略

     

     

     

     

     

    目录

    CBOW&Skip-Gram算法相关论文

    CBOW&Skip-Gram算法原理配图对比

    1、CBOW模型之用一个单词预测一个单词

    2、CBOW模型之用多个单词预测一个单词

    3、选取噪声词进行分类的CBOW模型


     

     

     

    CBOW&Skip-Gram算法相关论文

    CBOW 模型和Skip-Gram 模型,参考论文《Efficient Estimation of Word Representations in Vector Space》
    论文地址https://arxiv.org/pdf/1301.3781.pdf

            We propose two novel model architectures for computing continuous vector representations of words from very large data sets. The quality of these representations is measured in a word similarity task, and the results are compared to the previously best performing techniques based on different types of neural networks. We observe large improvements in accuracy at much lower computational cost, i.e. it takes less than a day to learn high quality word vectors from a 1.6 billion words data set. Furthermore, we show that these vectors provide state-of-the-art performance on our test set for measuring syntactic and semantic word similarities.我们提出了两种新颖的模型体系结构,用于从非常大的数据集中计算单词的连续矢量表示。 在单词相似性任务中测量这些表示的质量,并将结果与基于不同类型的神经网络的性能最佳的以前的技术进行比较。 我们观察到准确性的大幅提高,而计算成本却低得多,即从16亿个单词的数据集中学习高质量的单词向量只需不到一天的时间。 此外,我们证明了这些向量在我们的测试集上提供了最新的性能,用于测量句法和语义词的相似性。

     

     

    CBOW&Skip-Gram算法原理配图对比

    1、CBOW模型之用一个单词预测一个单词

    2、CBOW模型之用多个单词预测一个单词

    3、选取噪声词进行分类的CBOW模型

     

     

     

     

     

    展开全文
  • Skip-Gram模型

    2021-07-31 11:18:31
    The Skip-Gram Model 本篇专注于skip-gram算法的神经网络结构,跳过了常见的介绍和word2vec的抽象概念,更加关注细节。 参考文章 文章目录The Skip-Gram Model1.The Model 模型2.The Fake Task 假任务3.More Details...

    The Skip-Gram Model

    本篇专注于skip-gram算法的神经网络结构,跳过了常见的介绍和word2vec的抽象概念,更加关注细节。

    参考文章

    1.The Model 模型

    训练一个简单的神经网络,用一个隐含层来执行特定的任务,但重点不在于这个任务,而在于隐含层的权重,它们就是我们想要的到的“词向量”。

    在无监督学习中也用到这种技巧。训练之后,去掉输出层,只使用隐含层。

    2.The Fake Task 假任务

    我们训练神经网络执行下面的任务。

    输入:一个中心词

    输出:词汇表中每个单词成为中心词的邻近单词的概率

    注:邻近的概念由一个参数m决定,表示窗口大小即半径。当说窗口大小为5时,包含中心词前5个及后5个单词,一共10个

    输出的概率将与在中心词周围找到每个单词的可能性有关。比如输入苏维埃,那么联盟和俄罗斯等词的输出概率将远高于西瓜和袋鼠之类的词。

    下面的例子中,令窗口大小为2,蓝色部分为中心词。用训练文档生成单词对。网络会从每个配对出现的次数中学习统计信息。

    img

    3.More Details 更多细节

    首先,我们要从训练文档中构建一个词汇表——假设这个表中有10000个独特单词。这样做的原因是,神经网络的输入不能时一个字符串,所以要先对单词进行编码。

    我们使用独热码,这样一来,输入有10000维,在中心词对应位置放1,其他位置放0。

    输出也是一个10000维的向量,每个分量表示词汇表中每个单词出现在中心词附近的概率。

    img

    这个神经网络中,隐含层没有激活功能,但输出神经元使用softmax。

    3.1 The Hidden Layer 隐含层

    在上图中,我们使用了300个神经元,实际上,这是一个超参数,可以根据情况进行设置。因此隐含层的权重矩阵有10000行300列。

    这个权重矩阵的行向量就对应每个单词的词向量。

    img

    因此,我们的目标实际上知识学习这个隐含层权重矩阵,然后扔掉输出层。

    当使用一个独热码与矩阵相乘时,实际上只是有效选择单词对应的那一行词向量。这就意味着隐含层只是作为查找表运行。

    3.2 The Output Layer 输出层

    通过隐含层后,中心词ants的词向量(1x300)到达输出层。输出层是一个softmax回归分类器。softmax回归的要点是,每个输出神经元(共10000个)将产生一个介于0到1之间的输出,所有输出之和相加为1。

    每个输出神经元都有一个权重向量,将它与词向量相乘,再通过函数exp(x)得到结果y。为了使输出结果之和为1,再求y与所有y值之和的比值,得到输出结果。

    在这里插入图片描述

    注:神经网络的权重矩阵不知道输出相对于中心词的偏移量。也就是说,附近所有单词的概率是相同的概念,不包含单词的位置信息。

    4.Other Problems 一些调整

    对于词义相近的单词,可能会拥有相似的上下文,也就拥有了相似的词向量。

    但是,skip-gram网络包含大量权重,为了使训练成为可能,word2vec的作者引入了一些调整。

    1. 对频繁出现的单词进行二次采样,以减少训练示例的数量。
    2. 使用一种被称为“负采样”的技术调整优化目标,使得每个训练样本只更新模型权重的一小部分。

    这样一来不仅减少了训练过程的计算负担,还提高了生成的词向量的质量。

    4.1 Subsampling Frequent Words 二次采样频繁词

    对于2中的例子,我们发现,像“the”这样的频繁词,并不能提示我们中心词的意思,它实际上出现在很多词语之前;我们会得到比我们需要的更多的样本来得到the的词向量。

    Word2Vec采用了二次采样,即我们有可能能有效地删除在训练文本中遇到的每个单词。这种可能性取决于这个单词的频率。

    4.1.1 Sampling rate 采样率

    word2vec的C代码提供了一个用来计算词汇表中保留给定单词的概率的公式。

    w i w_i wi表示单词, z ( w i ) z(w_i) z(wi)表示这个单词在语料库中出现的频率。

    参数sample控制二次采样发生的频率,默认值是0.001。更小的sample意味着单词们更不易被留下。

    P ( w i ) P(w_i) P(wi)指保留单词的概率:
    P ( w i ) = ( z ( w i ) s a m p l e + 1 ) ⋅ s a m p l e z ( w i ) P(w_i)=(\sqrt{\frac{z(w_i)}{sample}}+1)·\frac{sample}{z(w_i)} P(wi)=(samplez(wi) +1)z(wi)sample
    这个函数的图像如图所示:

    在这里插入图片描述

    我们关注一些特殊点:

    1. P ( w i ) = 1.0 P(w_i)=1.0 P(wi)=1.0时, z ( w i ) < = 0.0026 z(w_i)<=0.0026 z(wi)<=0.0026,此时一定不会被删除。也就是说频率高于0.26%的单词会被二次采样。
    2. P ( w i ) = 0.5 P(w_i)=0.5 P(wi)=0.5时, z ( w i ) = 0.00746 z(w_i)=0.00746 z(wi)=0.00746.
    3. P ( w i ) = 0.033 P(w_i)=0.033 P(wi)=0.033时, z ( w i ) = 1.0 z(w_i)=1.0 z(wi)=1.0,这意味着语料库中只有同一个单词,这显然很荒谬。

    4.2 Negative Sampling 负采样

    负采样对于每次的训练样本只改变一部分的权重,加速了模型优化速度。同时,由于词义只与它周围的词有关,那么一次更新所有权重显然不合理,因此可以得到更高质量的词向量。

    在对(fox,quiak)进行训练时,由于独热码,我们希望quick对应的输出神经元输出一个1,而其他神经元输出0。我们把希望输出0的神经元对应的词称为negative词,输出1的称为positive词。

    负采样中,我们会随机选择少量negative词(假设个数为5),更新它们对应的权重。还会更新positive词的权重。

    注:对于较小数据集,选择5-20个negative词效果较好;对于大型数据集,只需选择2-5个

    我们模型的输出层有一个300x10000的权重矩阵。若采样负采样,则只需更新1个positive词和5个negative词的权重,总共6个输出神经元,6*300=1800个权重。这样就大大减轻了计算压力。

    在隐含层中,只更新输入词的权重(无论是否负采样都是这样)。

    4.2.1 Selecting Ngative Samples 选择负词

    负样本使用一元模型分布来进行选择,也就是更频繁的词更可能被选为负样本。

    被选择的概率是某个词在语料库中出现的次数和所有词出现的次数之和的比值。公式如下:
    P ( w i ) = f ( w i ) ∑ j = 0 n ( f ( w i ) ) P(w_i)=\frac{f(w_i)}{\sum_{j=0}^n(f(w_i))} P(wi)=j=0n(f(wi))f(wi)
    word2vec的作者在论文中表示,他们尝试了多种对该等式的变体,其中表现最好的是将词数提高到3/4次方。
    P ( w i ) = f ( w i ) 3 / 4 ∑ j = 0 n ( f ( w i ) 3 / 4 ) P(w_i)=\frac{f(w_i)^{3/4}}{\sum_{j=0}^n(f(w_i)^{3/4})} P(wi)=j=0n(f(wi)3/4)f(wi)3/4
    尝试一些样本值,我们会发现,下面的等式更倾向于增加出现频率较低的词的概率并降低出现频率较高的词的概率。

    在代码实现中,有一个包含100M个元素的大数组,被称为unigram表。用词汇表中每个单词的索引多次填充这个数组,每个词的索引在表中出现的次数由 P ( w i ) ∗ t a b l e _ s i z e P(w_i)*table\_size P(wi)table_size给出。在选择负样本时,只需随机生成0到100M间的整数,得到表中记录的索引。这是因为更高频率出现的词在大数组中出现的概率也更高。

    展开全文
  • NLP之WE之Skip-Gram:基于TF利用Skip-Gram模型实现词嵌入并进行可视化 目录 输出结果 代码设计思路 代码运行过程全记录 输出结果 代码设计思路 代码运行过程全记录 3081 originated ->...
  • skip-gram的问题

    2021-07-10 18:23:23
    请问,skip-gram模型右边的4个箭头,是同一个矩阵还是4个不同的矩阵?
  • PyTorch 实现 Skip-gram

    2020-11-06 14:03:25
    这篇文章来说下如何使用 PyTorch 实现 Skip-gram,文中会出现一些数学公式。 CBOW 和 Skip-gram 是两种训练得到词向量的方法。其中 CBOW 是从上下文字词推测目标字词,而 Skip-gram 则是从目标字词推测上下文的字词...
  • skip-gram负采样原理

    2020-07-20 22:34:38
    skip-gram负采样 自然语言处理领域中,判断两个单词是不是一对上下文词(context)与目标词(target),如果是一对,则是正样本,如果不是一对,则是负样本。 采样得到一个上下文词和一个目标词,生成一个正样本...
  • skip-gram模型

    千次阅读 2018-12-10 20:38:58
    skip-gram模型原理 Skip-gram模型的输入为一个单词,输出为窗口大小h中各个单词的概率,如下图所示。 例如对于句子I always go to work by bus,对于单纯work,窗口大小2包括的单词为go,to,by,...
  • 一文详解 Word2vec 之 Skip-Gram 模型
  • skip-gram的理解

    2020-05-20 13:50:05
    Word2Vec模型中,主要有Skip-Gram和CBOW两种模型,从直观上理解,Skip-Gram是给定input word来预测上下文。而CBOW是给定上下文,来预测input word。本篇文章仅讲解Skip-Gram模型。 对于skip-gram,它的训练方式...
  • 深度学习 Skip-Gram模型

    千次阅读 2018-08-05 20:02:31
    Skip-Gram 模型 什么是skip-gram模型 Word2Vec模型中,主要有Skip-Gram和CBOW两种模型,从直观上理解,Skip-Gram是给定input word来预测上下文.而CBOW是给定上下文,来预测input word. Skip-Gram模型的基础形式...
  • Word2Vec Tutorial - The Skip-Gram Model · Chris McCormick.pdf
  • skip-gram与负采样

    2020-08-19 23:19:10
    1. skip-gram模型 skip-gram是word2vec中的主要模型之一(另一个模型是CBOW)。简单来说,CBOW是给定上下文,来预测input-word;而skip-gram是给定input-word,来预测上下文。 下面我们来理解skip-gram模型。首先,...
  • word2vec Skip-Gram模型的简单实现 包括预料库 从维基百科提取出来的 。代码是python3的,可以直接运行。
  • 基于TensorFlow实现skip-gram模型(实现篇) 5.1 导入包 5.2 加载数据 5.3 数据预处理 5.4 采样 5.5 构造batch 5.6 模型构建 5.7 验证 完整代码 基于TensorFlow实现skip-gram模型(实现篇) 本篇实战代码...
  • cbow和skip-gram比较

    千次阅读 2020-06-28 17:23:23
    skip-gram是用中心词预测周围词,对每一个中心词都有K个词作为output,对一个词的预测有K次,所以能够更有效的从context中学习信息,共预测K*V次,因此,skip-gram的训练时间更长 鉴于skip-gram学习的词向量更细
  • 翻译原始链接: http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/ 这个教程包含 训练word2vec的 skip-gram 模型。通过这个教程,我希望跳过常规Word2Vec...skipgram model 常常让人惊讶于...
  • skip-gram 学习笔记

    2020-08-21 15:52:35
    关于skip-gram skip-gram 是给定中心词预测周围词 例如,给定一句话 I am working on NLP project, it is interesting. 设定滑动窗口为5的话 分别给定中心词 working, on, NLP, project, it, 来预测中心词前后的两...
  • CBOW和Skip-Gram

    2018-07-15 21:05:13
    Skip-gram模型:http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/ A number of tweaks to make training feasible: ...
  • 基于连续Skip-gram及深度学习的图像描述方法.pdf
  • Word2Vec导学 --- Skip-Gram模型

    千次阅读 2017-07-27 17:46:50
    Word2Vec导学 — Skip-Gram模型这个导学覆盖了基于词转向量(Word2Vec)的skip-gram神经网络结构。我的这篇导学文章的目的是为了能够跳过一些通常的介绍和抽象内容,而能够洞察词转向量(Word2Vec)的本质,
  • 深度学总结:skip-gram pytorch实现

    千次阅读 2019-02-21 11:12:02
    文章目录skip-gram pytorch 朴素实现网络结构训练过程:使用nn.NLLLoss()batch的准备,为unsupervised,准备数据获取(center,contex)的pair:采样时的优化:降低高频词的...class SkipGram(nn.Module): def __init...
  • spearman的matlab代码skipgram 模型的完整 pytorch 实现(带有子采样和负采样)。 嵌入结果用 Spearman 秩相关检验。
  • skip-gram模型结构

    2020-04-11 19:54:18
    https://www.kdnuggets.com/2018/04/implementing-deep-learning-methods-feature-engineering-text-data-skip-gram.html
  • Skip-gram & CBOW 的一些理解 文章目录Skip-gram & CBOW 的一些理解〇、前言一、背景二、基础结构2.1 One-hot投影成隐向量2.2 利用一个词预测一个词2.3 损失函数的计算三、CBOW四、Skip-gram五、一些训练时...
  • skip-gram model

    2019-07-03 10:00:30
    from:https://www.kdnuggets.com/2018/04/implementing-deep-learning-methods-feature-engineering-text-data-skip-gram.html Deep Learning,Feature Engineering,NLP,Python,Text Mining,Word Embeddings ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,263
精华内容 4,105
关键字:

skip-gram