Word2Vec中涌现的向量差关系:,其中蓝色的向量(深蓝和浅蓝)都表示用Word2Vec学习得到的单词向量。它们彼此之间的差向量(红色箭头),表达了最高权力关系也近似相等 。
更让人震惊的是,单词之间的关系也可以自动地被Word2Vec学到,如上图这个著名的公式:v(男人)-v(女人)=v(国王)-v(王后),其中v(x)表示x这个单词的词向量。也就是说,机器会自己学习到男人相对于国王相当于女人相对于王后。所以,除了将每个单词进行向量表示以外,Word2Vec还可以隐式地学习到“最高权力”这种抽象关系。
与此类似,很多概念之间会存在着上下位的层级关系。例如,“动物”就是“昆虫”的上位词,而“昆虫”又是“蜻蜓”的上位词。我们用这些单词的向量表示分别做减法,就可以用差向量来表示这种抽象的关系9。如图:
Word2Vec学习得到的词语之间的层级关系:首先让Word2Vec学习大量的中文语料,这样每个单词会对应一个表示(蓝色的点)。其次,我们寻找所有的上下位词层级关系,比如工人与木匠,或者运动员与足球运动员,并将它们的向量表示分别相减得到了上下位词的差向量。我们发现,这些差向量如果是同一种类别的话,比如工人-木匠,以及工人-园丁,则非常相似。所以,Word2Vec学习得到的向量表示蕴含了一种关系表示。该图摘自:参考文献9
然而,这种蕴含的关系表示并不十分明确,存在着很大的误差。于是,人们想出了各种方法来改进,其中一种比较彻底的方式是,将所有的名词实体和各种关系(包括上下位、同义词等)分别嵌入到不同的空间(即实体空间和关系空间),这样可以更全面、更准确地来表达它们10。
与此类似,我们还可以用这种方法处理其它的不同网络。
利用与Word2Vect类似的DeepWalk算法10得到的“跆拳道俱乐部”(左侧)网络的嵌入(右侧)。其中节点是人,连边是好友关系。在这个俱乐部中,存在着4个相对独立的社团,分别被标注了不同的颜色。摘自参考文献7
得到这些向量表示又有什么用呢?它的用途有很多,例如,通过向量表示可以发现节点之间的聚类,我们只要将表示空间中彼此靠近的节点划分为一类就可以,如下图:
该图是将带参数的网络嵌入Node2Vec算法在两种不同参数条件下用于同一个网络(上、下),并根据向量表示做聚类分析后得到的可视化效果。其中同一种颜色对应同一种聚类。上图得到的聚类是网络的社团划分。下图的聚类得到的却是生态位(叶子节点、桥接节点以及中心节点)的划分。摘自文献8
更重要的是,这些花样繁多的向量表示解决了每个节点的特征描述问题以作为节点分类和预测问题的基础。一般情况下,节点的向量表示就是机器自发学习出来的节点特征,该特征反应的是每一个节点所在整个网络之中的生态地位。
于是,根据机器学习得到的特征,运用神经网络技术,我们便可以进行节点的分类与预测了。我们可以通过社交网络识别哪一个节点更可能是恐怖分子。我们也可以根据一篇文章在引文网中的地位预测它是否可以获得诺贝尔奖提名,等等。
图卷积神经网络
我们知道,现在的深度学习技术最主要的突破其实都是在图像识别领域和自然语言领域。从技术上讲,图像属于一种静态的二维数组,而自然语言实际上可以看做一种时间上的符号序列。它们都有非常标准的数据结构。
但是,网络或者图,却是一种介于二维数组和一维序列之间的不规则数据类型。我们不能把网络看做图像,因为网络的节点之间没有图像的像素之间那样规整的邻域关系。我们同样不能把网络看做是一维的节点和连边序列,因为我们任意颠倒节点之间的顺序,却对应的是同一张网络。
于是,问题来了。既然深度学习可以在图像识别以及自然语言处理中大展身手,那么是否也能在复杂网络的相关任务中崭露头脚呢?