当前位置:   article > 正文

word2vec

word2vec

本文介绍

  1. word2vec的概念
  2. 语言模型训练的两种模型 CBOW + skip gram
  3. word2vec 优化的四种方法:层次softmax、高频词组当做单个词来处理、对高频单词采样、负例采样
  4. gensim word2vec默认用的模型和方法

机器学习的输入都是数字,而NLP都是文字; 为了让机器学习应用在NLP上,需要把文字转换为数字,把文字嵌入到数学空间。

注意:CBOW,skip-gram 是前人提出的神经网络语言模型,是理论逻辑概念上的东东,而word2vec是实现CBOW和Skip-gram语言模型的工具,或者说CBOW 和 Skip-gram 是 Word2Vec 框架内用于训练词嵌入的具体模型策略。

1. wordvec的概念:

        Word2Vec是从大量文本语料中以无监督的方式学习语义知识的一种模型,它用词向量的方式表征词的语义信息,即通过一个嵌入空间使得语义上相似的单词在该空间内距离很近。Embedding其实就是一个映射,将单词从原先所属的空间映射到新的多维空间中,也就是把原先词所在空间嵌入到一个新的空间中去。

        我们从直观角度上来理解一下,cat这个单词和kitten属于语义上很相近的词,而dog和kitten则不是那么相近,iphone这个单词和kitten的语义就差的更远了。通过对词汇表中单词进行这种数值表示方式的学习(也就是将单词转换为词向量),能够让我们基于这样的数值进行向量化的操作从而得到一些有趣的结论。比如说,如果我们对词向量kitten、cat以及dog执行这样的操作:kitten - cat + dog,那么最终得到的嵌入向量(embedded vector)将与puppy这个词向量十分相近。

2. NNLM 神经网络语言模型

用神经网络训练语言模型,常见有两种; 用上下文预测当前词(CBOW:continuous bag of words的缩写,中文译为“连续词袋模型”), 用当前词预测上下文(skip-gram),结构一般是简单三层网络,一个输入层、一个隐含层、一个输出层。                                        

嵌入层:假设词表中共有4万个词汇,现在知道第t个词前面的n-1个词,预估第t个词:首先将n-1 依据词表进行onehot编码得到n-1个 1∗4万的稀疏向量(只有一个位置为1,其余为0), 所有onehot分别乘以共享的输入权重矩阵 W (4万*K)得到n-1个词向量,这n-1个词向量经过求和/取均值等操作得到一个1*K维的向量,

全连接层:这个向量再乘以一个K*4万的输出权重矩阵W',得到一个1*4万的向量,

输出层:然后再经过softmax 计算出第t个位置是此表中每一个词的概率,选出最大可能的结果与label 比较计算损失函数,采用梯度下降算法更新W和W',训练完毕后得到连个上述两个矩阵,其中输入层的每个单词与矩阵W相乘得到的向量的就是我们想要的词向量(word embedding),这个矩阵(所有单词的word embedding)也叫做look up table。通俗理解word2vec - 简书

2.1 CBOW 连续词袋模型

  • 变量:词表大小V, 要嵌入到N维空间中,C/2是窗口大小,即上下文取几个term(不算当前term); N一般取50~300
  • 步骤:参考自 word2vec是如何得到词向量的? - 知乎
    • input layer:窗口内的C个词的onehot表示
    • input layer -> hidden layer:(将1*V维向量降到1*N维向量) 通过权重矩阵
      声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/881826
推荐阅读
相关标签