1.Word2Vec 模型总述
Word2Vec简单讲其实就是通过学习文本然后用词向量的方式表征词的语义信息,即通过Embedding 把原先词所在空间映射到一个新的空间中去,使得语义上相似的单词在该空间内距离相近。
以传统神经网络为基础的神经概率语言模型,缺点主要是计算量太大,集中体现在:隐层和输出层之间的矩阵运算和输出层上的Softmax归一化运算上。
因此就是针对这两点来优化神经概率语言模型的。中两个重要的模型是 CBOW 模型和 Skip-gram 模型。对于这两个模型,给出了两套框架,分别是基于Hierarchichal Softmax 和 Negative Sampling 来设计的,本文梳理的是第一种类型。
2.CBOW模型
2.1 基于Hierarchichal Softmax模型的网络结构
CBOW模型的全称是 Continous bag-of-words,它包括三层结构分别是:输入层、投影层和输出层。
1.输入层:包含 Context(w) 中 2c 个词的词向量
其中 ,n 表示词向量的长度。
2.投影层:将输入层的 2c 个向量做求和累加处理,即
3.输出层:输出层对应一颗 树,它是以语料中出现过的词当叶子节点,以各词在语料库中出现的次数当权值构造而成。在这颗 树中,叶子结点共N(=|D|) 个分别对应词典 D 中的词,非叶结点 N-1 个(上图中黄色的结点)。
2.2 梯度的计算
为了后续方便描述问题,首先对模型中用到的符号做一个统一的说明:
:从根节点到出发到达对应叶子结点的路径;
:从根节点到出发到达对应叶子结点的路径;
:路径中的个结点,其中表示根结点,表示词对应的结点;
,其中 :词对应的编码,它由 位编码构成,表示路径中第个结点对应的编码(根结点不对应编码);
,其中:路径中非叶子结点对应的向量,表示路径中第个非叶子结点对应的向量。
所以的思想,即对于词典 中的任意词 , 树中必然存在唯一一条从根结点到词对应叶子结点的路径。路径上存在个分支,将每个分支看作一次二分类,那么每一次分类就对应一个概率,最后将这些概率连乘得到 。
其中 ,通过对数极大似然化处理可得模型的目标函数为:
极大化化目标函数使用的算法是是随机梯度上升法,首先考虑关于的梯度计算:
于是,的更新公式为:然后再考虑关于的梯度计算:
如果观察到中和具有对称性,那么计算相应梯度会更方便。由于表示的是中所有词向量的叠加,那么如何根据来更新每一个分量呢? 中的做法非常的朴素,直接取
2.3 CBOW模型更新相关参数伪代码
3.Skip-gram模型
3.1 基于Hierarchichal Softmax模型的网络结构
同模型一样,模型的网络结构也包括三层结构分别是输入层、投影层和输出层:
输入层:只含有当前样本的中心词的词向量 。
投影层:该层为恒等投影,其实这层可有可无,在这里只是为了方便和模型的网络结构做对比:
3.输出层:和模型一样,输出层也是一颗树。
3.2 梯度的计算
对于模型已知的是当前词 ,需要对其上下文 中的词进行预测,所以关键是条件概率函数的构造,模型中将其定义为:
上式中的可以类比上节介绍的的思想,因此可得:
通过对数极大似然化处理可得模型的目标函数为:
首先考虑 关于 的梯度计算: 于是, 的更新公式为:3.3 skip-gram模型更新相关参数伪代码
4. 总结
Word2Vec的基本功能就是把自然语言中的每一个词,表示成一个统一意义统一维度的词向量,因为只有把自然语言转化为向量的形式,才能在此之上构建相关的算法,至于向量中的每个维度具体是什么含义,无人知晓,也无需知晓,有道是,玄之又玄,众妙之门矣!
如果你觉得有帮助的话,欢迎点个赞,比心❤️!