nlp自然语言处理之word2vec--cbow和skip gram讲解

1、模型结构——CBOW

nlp自然语言处理之word2vec--cbow和skip gram讲解_第1张图片

 

  • 输入层:上下文单词的onehot。单词向量空间dim为V,上下文单词个数为C
  • 所有onehot分别乘以共享的输入权重矩阵W。V*N矩阵,N为自己设定的数,初始化权重矩阵W
  • 所得的向量相加求平均作为隐层向量,size为1*N.
  • 乘以输出权重矩阵W'
  • 得到向量1*V激活函数处理得到V-dim概率分布,对应V个单词
  • 概率最大的index所指示的单词为预测出的中间词与true label的onehot做比较,根据误差更新权重矩阵。

        最后定义loss function(交叉熵),采用梯度下降更新W和W'。训练完毕后,输入层的每个单词与矩阵W相乘得到的向量的就是我们想要的word embedding,W是所有单词的word embedding,也叫做look up table

 

2、模型结构——Skip-Gram

nlp自然语言处理之word2vec--cbow和skip gram讲解_第2张图片

  • 假设有一个句子“The dog barked at the mailman”
  • input word:“dog”
  • skip_window:从input word的一侧选取词的数量。如果skip_window=2,那么窗口中的词就是['The', 'dog', 'barked', 'at']。
  • num_skips:从整个窗口中选取多少个词作为output word。当skip_window=2,num_skips=2时,我们将会得到两组
  •                      (input word, output word) 形式的训练数据,即 ('dog', 'barked'),('dog', 'the')。

神经网络基于这些训练数据将会输出一个概率分布,这个概率代表词典中的每个词是output word的可能性。假如我们先拿一组数据 ('dog', 'barked') 来训练神经网络,那么模型通过学习这个训练样本,会得到词汇表中每个单词是“barked”的概率大小。模型的输出概率代表着到我们词典中每个词有多大可能性跟input word同时出现。下图中,蓝色代表input word,方框内代表位于窗口内的单词。Training Samples(输入, 输出)

哈夫曼树:带权最小二叉树
层次softmax:把词频作为权重,构造哈夫曼树,依次判断,复杂度O(N)到O(logN) 

negative sampling:只更新少量负面类,从而减轻了计算量。
hierarchical softmax:将词库表示成前缀树,从树根到叶子的路径可以表示为一系列二分类器,一次多分类计算的复杂度从|V|降低到了树的高度

求解目标

nlp自然语言处理之word2vec--cbow和skip gram讲解_第3张图片

nlp自然语言处理之word2vec--cbow和skip gram讲解_第4张图片

 

你可能感兴趣的:(自然语言处理各种模型讲解及实现,NLP,自然语言处理,模型,实现)