zoukankan      html  css  js  c++  java
  • Word2vec模型及负采样精讲

    Word2vec模型本质:是一个用来生成词向量的、简单的神经网络模型。

      通过计算相似度来降低原来输入词的维度,举个例子:

                图.甲

    网络结构如下:

                   图.乙

      如乙图所示,我们一开始输入的是one-hot编码后的向量,1位于第7位,其对应的输入层到隐藏层的权重矩阵w一定是第7行,如下图示意

              图.丙

       丙图示意的是第三行,如果输入one-hot编码过了,那就将one-hot编码后的输入再tokenize转化回去(如果没有one-hot的话,直接tokenize获取索引即可),查找w索引值为3的行,拿出来即可,拿出来的就是词向量原来需要计算那么多次乘法,现在只需查表即可。

      图甲那张图的全过程称之为池化向量。

                   图.丁

      图丁,全连接层是没有激活函数的,output到预测值时的激活函数为softmax,也可以为sigmoid,没有规定必须用哪个,此图为原始的池化向量过程。下面的负采样是解决反向传播时复杂的乘法计算。

    负采样: 

      在训练神经网络时,每当接受一个训练样本,然后调整所有神经单元权重参数,来使神经网络预测更加准确。换句话说,每个训练样本都将会调整所有神经网络中的参数。
      我们词汇表的大小决定了我们skip-gram 神经网络将会有一个非常大的权重参数,并且所有的权重参数会随着数十亿训练样本不断调整。

      negative sampling (负例样本,即one-hot编码后的为0的那些位置的样本)每次让一个训练样本仅仅更新一小部分的权重参数,从而降低梯度下降过程中的计算量。

     

     

      如果 vocabulary 大小为1万时, 当输入样本 ( "fox", "quick") 到神经网络时, “ fox” 经过 one-hot 编码,在输出层我们期望对应 “quick” 单词的那个神经元结点输出 1,其余 9999 个都应该输出 0。在这里,这9999个我们期望输出为0的神经元结点所对应的单词我们为 negative word. negative sampling 的想法也很直接 ,将随机选择一小部分的 negative words,比如选 10个 negative words 来更新对应的权重参数。

      在论文中作者指出指出对于小规模数据集,建议选择 5-20 个 negative words,对于大规模数据集选择 2-5个 negative words.

      如果使用了 negative sampling 仅仅去更新positive word- “quick” 和选择的其他 10 个negative words 的结点对应的权重,共计 11 个输出神经元,相当于每次只更新 300 x 11 = 3300 个权重参数。对于 3百万 的权重来说,相当于只计算了千分之一的权重,这样计算效率就大幅度提高。

    选择负例样本的规则

    使用 一元模型分布 (unigram distribution) 来选择 negative words,一个单词被选作 negative sample 的概率跟它出现的频次有关,出现频次越高的单词越容易被选作negative words,经验公式为:

     
     

    f(w) 代表 每个单词被赋予的一个权重,即 它单词出现的词频,分母 代表所有单词的权重和。公式中3/4完全是基于经验的,论文中提到这个公式的效果要比其它公式更加出色。

  • 相关阅读:
    30 Day Challenge Day 20 | Leetcode 938. Range Sum of BST
    30 Day Challenge Day 20 | Leetcode 124. Binary Tree Maximum Path Sum
    30 Day Challenge Day 20 | Leetcode 94. Binary Tree Inorder Traversal
    idea2019版本破解
    xml文件时第一行无缘无故报错
    activeMQ的基本使用
    activeMQ的安装(Linux下)
    redis的基本用法
    redis安装(Linux下)
    redis安装(window下)
  • 原文地址:https://www.cnblogs.com/qianchaomoon/p/12300864.html
Copyright © 2011-2022 走看看