word2vec的数学原理——词向量基础及huffuman树

Posted liguangchuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了word2vec的数学原理——词向量基础及huffuman树相关的知识,希望对你有一定的参考价值。

 一、旧版本的神经网络表示词向量

   技术分享图片

 

  将每个词表示成$m$维的向量,用$v(w)$表示,整个网络分为4层,分别为输入层,投影层,隐藏层,输出层。

    输入层:取一个大小为n的窗口表示输入,用1~(n-1)个词来预测第n个词的生成概率。

    投影层:将每个词映射为m维向量,将这些词向量拼接为一个(n-1)m的长向量,作为投影层

    隐藏层:隐藏层的节点根据需要可以进行调节

    输出层:N维向量,表示预测为每个词的概率

 

  前向传播的表达式为:

    $z_{w}=tanh(Wx_{w}+p)$

    $y_{w}=softmax(Uz_{w}+q)$

      其中,输出表示由前面(n-1)各词,预测第n个词的概率,即$P(w|context(w))=y_{w}$

  注意:这个网络的参数是由两部分组成的

      1)词向量,每个词一开始的投影是随机的,最后由训练后确定。(这和普通的机器学习算法输入是确定的有很大区别)

      2)神经网络的连接权重

 

二、huffman树及huffman编码

1、Huffman树的构造

  根据词典每个词作为叶子节点,词的频次作为叶子节点的权重,向上构造huffman树,具体为:

    1)将词典的N个词,看成N棵树的森林

    2)将“根节点权值“最小的两棵树合并成一棵新树,原来的树视为新树的左右子树,新树的“根节点权值”为左右子树的“根节点权值”之和

    3)重复2),直到森林中只剩下一棵树

  整个Huffman树构建完成以后,叶节点的个数为N(词典大小),非叶节点的个数为N-1

  以“我”,“喜欢”,“观看”,“巴西”,“足球”,“世界杯”为例,这组词的词频为:15,8,6,5,3,1

  技术分享图片

2、Huffman编码

  对于一棵Huffman树,规定左子节点标记为1,右子节点标记为0,每个词的路径(根节点除外)对应的编码称为该词的Huffman编码,如:我——0,喜欢——111,观看——110,巴西——101,足球——1001,世界杯——1000

  huffuman编码原先是用在数字通信领域,希望整段文本的编码长度越小越好,因此构建huffuman树,使得词频越多的字编码越短,词频越少的字编码越长。

  技术分享图片

 

    

 

以上是关于word2vec的数学原理——词向量基础及huffuman树的主要内容,如果未能解决你的问题,请参考以下文章

Word2Vec原理及代码

word2vec词向量训练及中文文本相似度计算

Word2Vec原理详解

word2vec是如何得到词向量的?

NLP-文本分类之词向量-word2vec概念和公式理解

基于word2vec的文档向量模型的应用