word2vec的数学原理(二)——基于huffuman softmax

一、W2V的两种模型:CBOW和Skip-gram

  W2V有两种模型,分别为CBOW和skip-gram,CBOW是根据上下文$context(w)$来预测中间词$w$,而skip-gram是根据中间词$w$来预测上下文$context(w)$;他们都有3层结构——输入层,投影层,输出层。(注:无隐藏层)

  

二、基于huffuman的CBOW

 1、网络结构

  CBOW的网络机构有3层,分别为输入层,投影层,输出层;以样本$(context(w),w)$为例,做简要说明。

  输入层:上下文的2c个词的词向量$v(context(x))$(假设上文和下文分别为c各词)

  投影层:将这个2c个向量直接求和,$x_{w}=\sum_{i=1}^{2c}v(context(w)_{i}))$

  输出层:对应一棵huffuman树,它以词典中的词为叶节点,以词出现的次数为权重;其中叶节点的个数为N,非叶节点的个数为(N-1)

      

  注:在以往的神经网络语言模型中,计算量高的地方在输出层矩阵运算和概率归一化,CBOW对此作出了两点改进:1、无隐藏层,输入层直接向量求和进行投影;2、输出层改为huffuman树,将原来的softmax线性搜索求极大(多分类),转化为求树的正确路径(多个二分类),大大减少计算量。

2、参数计算

  huffuman softmax是提高W2V效率的关键所在,以词典中的某个词w为例,约定一些符号

  $p^{w}$:词w对应的路径

  $l^{w}$:词w对应路径上的节点个数

  $p_{i}^{w},(i\in {1,2,...,l_{w}})$:路径$p^{w}$上的某个节点

  $[d_{2}^{w},d_{3}^{w}...d_{l_{w}}^{w}]$:词w的huffuman编码。(注:无根节点)

  $\theta_{i}^{w},(i\in {1,2,...,l_{w}-1})$:路径$p^{w}$上,内部节点的权重向量。因为每个内部节点对应一个二分类器,这些权重就是二分类器的参数(注:无叶节点)

        

三、基于hufuman的skip-gram

原文地址:https://www.cnblogs.com/liguangchuang/p/9738947.html

时间: 2024-10-11 22:37:44

word2vec的数学原理(二)——基于huffuman softmax的相关文章

word2vec 中的数学原理二 预备知识 霍夫曼树

主要参考:    word2vec 中的数学原理详解                 自己动手写 word2vec 编码的话,根是不记录在编码中的 这一篇主要讲的就是霍夫曼树(最优二叉树)和编码.  参考   快速画出哈夫曼树 / 霍夫曼树 / 最优树   了解其构成.    哈夫曼树及 python 实现 python 代码 构建霍夫曼树 ,获得霍夫曼编码    简单实现: #节点类 class Node(object): def __init__(self,name=None,value=N

word2vec 中的数学原理详解(四)基于 Hierarchical Softmax 的模型

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感.一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员.读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考. 相关链接 (一)目录和前言 (二)预备知

word2vec 中的数学原理具体解释(四)基于 Hierarchical Softmax 的模型

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注.因为 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上添加了这个工具包的神奇感.一些按捺不住的人于是选择了通过解剖源码的方式来一窥到底,出于好奇,我也成为了他们中的一员.读完代码后.认为收获颇多.整理成文,给有须要的朋友參考. 相关链接 (一)文件夹和前言 (二)预备

word2vec 中的数学原理详解(二)预备知识

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感.一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员.读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考. 相关链接 (一)目录和前言 (二)预备知

word2vec 中的数学原理具体解释(五)基于 Negative Sampling 的模型

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注. 因为 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上添加了这个工具包的神奇感.一些按捺不住的人于是选择了通过解剖源码的方式来一窥到底,出于好奇,我也成为了他们中的一员. 读完代码后,认为收获颇多,整理成文,给有须要的朋友參考. 相关链接 (一)文件夹和前言 (二)

word2vec 中的数学原理详解(五)基于 Negative Sampling 的模型

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感.一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员.读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考. 相关链接 (一)目录和前言 (二)预备知

word2vec 中的数学原理具体解释(三)背景知识

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注.因为 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上添加了这个工具包的神奇感.一些按捺不住的人于是选择了通过解剖源码的方式来一窥到底,出于好奇,我也成为了他们中的一员.读完代码后,认为收获颇多,整理成文,给有须要的朋友參考. 相关链接 (一)文件夹和前言 (二)预备

word2vec 中的数学原理详解(一)目录和前言

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感.一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员.读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考. 相关链接 (一)目录和前言 (二)预备知

word2vec 中的数学原理详解(三)背景知识

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感.一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员.读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考. 相关链接 (一)目录和前言 (二)预备知