图嵌入方法基础学习之word2vec

图嵌入方法学习(一)

(Ⅰ)什么是图嵌入

  • 图,如社交网络、单词共存网络和通信网络,广泛地存在于各种现实应用中。通过对它们的分析,我们可以深入了解社会结构、语言和不同的交流模式,因此图一直是学界研究的热点。
  • 真实的图(网络)往往是高维、难以处理的,20世纪初,研究人员发明了图形嵌入算法,图嵌入(Graph Embedding,也叫Network-
    Embedding)是一种将图数据(通常为高维稠密的矩阵)映射为低微稠密向量的过程,能够很好地解决图数据难以高效输入机器学习算法的问题。
  • 图嵌入是将属性图转换为向量或向量集。嵌入应该捕获图的拓扑结构、顶点到顶点的关系以及关于图、子图和顶点的其他相关信息。

(Ⅱ)图嵌入方法

在介绍图嵌入之前,我们有必要了解Word2vec,这是理解图嵌入的基础。

1.Word2vec

  • Word2vec,是一群用来产生词向量的相关模型。
  • 假如我们有一系列样本(x,y),这里 x 是词语,y 是它们的词性,我们要构建 f(x)->y 的映射,但这里的数学模型f(比如神经网络、SVM)只接受数值型输入,但是 NLP里的词语,是人类发明的语言(比如中文、英文、拉丁文等等),机器读不懂,所以需要把他们转换成数值形式,或者说——嵌入到一个数学空间里,这种嵌入方式,就叫词嵌入(word-embedding)。
  • 大部分的有监督机器学习模型,都可以归结为:f(x)->y
  • 在 NLP 中,如果把 x 看做一个句子里的一个词语,y 是这个词语的上下文词语,那么这里的 f,便是 NLP中经常出现的『语言模型』(language -model),这个模型的目的,就是判断 (x,y)这个样本,是否符合自然语言的法则,更通俗点说就是:词语x和词语y放在一起,是不是人话。
  • Word2vec 正是来源于这个思想,但它的最终目的,不是要把 f训练得多么完美,而是只关心模型训练完后的副产物——模型参数(这里特指神经网络的权重),并将这些参数,作为输入 x的某种向量化的表示,这个向量便叫做——词向量。

举例,如何用 Word2vec 寻找相似词:

  • 对于一句话:『她们 夸 吴彦祖 帅 到 没朋友』,如果输入 x 是『吴彦祖』,那么 y 可以是『她们』、『夸』、『帅』、『没朋友』这些词
  • 现有另一句话:『她们 夸 我 帅 到 没朋友』,如果输入 x 是『我』,那么不难发现,这里的上下文 y 跟上面一句话一样
  • 从而 f(吴彦祖) = f(我) = y,所以大数据告诉我们:我 = 吴彦祖(完美的结论)

Skip-gram 和 CBOW 模型

  • 如果是用一个词语作为输入,来预测它周围的上下文,那这个模型叫做『Skip-gram 模型』
    图嵌入方法基础学习之word2vec_第1张图片

  • 而如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 『CBOW 模型』
    图嵌入方法基础学习之word2vec_第2张图片

Word2vec模型的学习方法

1.1 CBOW模型

图嵌入方法基础学习之word2vec_第3张图片

这个模型主要是根据上下文预测当前词

按照上面的图示,我们也将这个网络结构分为三层进行描述:

  • 输入层:文本中自己设定的窗口中包含的词向量,这个词向量是one-hot表示的(即对于每个输入的词,其表示方式是one-hot),
  • 投影层:可以理解为隐藏层,直接将输入的向量进行累加求和(先进行线性变换,然后求加和)
  • 输出层:输出层对应一个二叉树,它是以文本中出现过的词当做叶子结点,以各词出现的次数当做权值,来构建Huffman树,我们最终的w(t)实际也是一个one-hot表示,对于CBOW模型,它是一个中心值。

最终稠密的向量是如何得到的呢?---->不是其他的,就是隐藏层的权值!!

那么使用Huffman树有什么好处呢?

​ 首先,由于是二叉树,之前计算量为O(n),现在变成了O(log(n))。第二,由于使用霍夫曼树是高频的词靠近树根,这样高频词需要更少的时间会被找到。

1.2 Skip-Gram模型

图嵌入方法基础学习之word2vec_第4张图片

  • Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,输出层是一个softmax回归分类器,它的每个结点将会输出一个0-1之间的值(概率),这些所有输出层神经元结点的概率之和为1。
  • 我们的输入是特定词,输出是softmax概率排前n的n个词,对应的Skip-Gram神经网络模型输入层有1个神经元,输出层有词汇表大小个神经元。隐藏层的神经元个数我们可以自己指定。
  • Skip-gram模型的本质是计算输入word的input vector与目标word的output
    vector之间的余弦相似度,并进行softmax归一化。

再次提醒,最终我们需要的是训练出来的权重矩阵。

1.3 Hierarchical Softmax

其实模型的输出也可以也可以是softmax,但是对于类别较多时,softmax会对所有的词进行排序,然后取最大值,这样来做是及其耗时的,为了提升效率,我们采用了层次softmax来解决我们的问题,将复杂度有O(n)降为O(log(n))。

由于我们把之前所有要从输出softmax层的单词概率都变成了一颗二叉霍夫曼树,那么我们的softmax概率计算只需要沿着树形结构进行就可以了。如下图所示,我们可以沿着霍夫曼树从根节点一直走到我们的叶子节点的词w2。
图嵌入方法基础学习之word2vec_第5张图片
在word2vec中,我们采用了逻辑回归的方法:即规定沿着左子树走,那么就是负类(霍夫曼树编码1),沿着右子树走,那么就是正类(霍夫曼树编码0)。

层次softmax的缺点:

使用霍夫曼树来代替传统的神经网络,可以提高模型训练的效率。但是如果我们的训练样本里的中心词w是一个很生僻的词,那么就得在霍夫曼树中辛苦的向下走很久了。

1.4 negative sampling

负采样的基本思路是在词典中出现频率高的词被采样概率越大,生僻词采样的概率小,这就是一个带权采样的问题。
图嵌入方法基础学习之word2vec_第6张图片
在word2vec中,分子和分母都取了3/4次幂如下:
图嵌入方法基础学习之word2vec_第7张图片

基本的思路就是对于长度为1的线段,根据词语的词频将其公平地分配给每个词语:

  • 这样线段就被每个词平分了。然后我们将这段长度为1的线段划分成M等份,这里M>V,V表示词典中词的数量,接下来生成一个0-1之间的随机数,看落在那个那个等分的词线段中,就取出该词作为负样本即可。

图嵌入方法基础学习之word2vec_第8张图片

普遍认为Hierarchical Softmax对低频词效果较好;Negative Sampling对高频词效果较好,向量维度较低时效果更好。

https://zhuanlan.zhihu.com/p/26306795
https://easyai.tech/ai-definition/word2vec/
https://blog.csdn.net/sir_TI/article/details/89199084

你可能感兴趣的:(图嵌入学习,霍夫曼树,word2vec)