更多内容查看 https://github.com/tower111/Nure-network/blob/master/struc2vec/struc2vec.md
本文从官方提供的 ppt 出发,主要是进行一些介绍,并不涉及复杂公式的讲解,详细的公式讲解见底部的参考文章。
将网络节点映射到另一个空间中,这个空间叫欧式空间(Euclidean space)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
f k ( u , v ) f_k(u,v) fk(u,v)是距离,uv 相距为 k 的节点之间的距离(这里的 k 是距离小于等于 k 的节点的集合)
g ( D 1 , D 2 ) ⩾ 0 g(D_1,D_2)\geqslant 0 g(D1,D2)⩾0是衡量 D 1 和 D 2 D_1 和 D_2 D1和D2的距离的函数并且[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上
传
对于距离的描述 g 函数,文章采用了**Dynamic Time Warping(DTW)**来衡量两个有序度序列。
基于 DTW,定义元素之间的距离函数 d ( a , b ) = m a x ( a , b ) m i n ( a , b ) − 1 d(a,b)=\frac{max(a,b)}{min(a,b)}-1 d(a,b)=min(a,b)max(a,b)−1
补充,什么是 DTW:对于两个序列 A、B,对任意的 a ∈ A , b ∈ B a\in A,b \in B a∈A,b∈B定义一个距离函数[d(a,b)]表示 a 与 b 的距离,DTW 想利用这样定义的距离函数找到序列 A、B 的最小距离。其中 g 的最终表示为
注意:这个距离是由节点的度的信息得出来的,被标识节点你的度还有距离为 1 的节点的度,节点距离为 2 的度等。最终的 f 是距离的累加。
从上一步中得到的距离来构建一个层次化的带权图(用于后续的随机游走)
每一层都是一个带权完全图只是具体权值的计算方式不同(但是每一层的权值计算都和距离有关)。
对每个顶点,都会和其对应的上层顶点还有下层顶点相连。边权定义为
w ( u k , u k + 1 ) = log ( Γ k ( u ) + e ) , k = 0 , . . . , k ∗ − 1 w(u_k,u_{k+1})=\log{(\Gamma_{k}(u)+e)},k=0,...,k^*-1 w(uk,uk+1)=log(Γk(u)+e),k=0,...,k∗−1
w ( u k , u k − 1 ) = 1 w(u_k,u_{k-1})=1 w(uk,uk−1)=1
其中 Γ k ( u ) \Gamma_k(u) Γk(u) 是第 k 层与 u 相连的边的边权大于平均边权的边的数量。
Γ k ( u ) \Gamma_k(u) Γk(u) 实际上表示了第 k 层中,有多少节点是与节点 u 相似的,如果 u 与很多节点都相似,说明此时一定处于低层次,考虑的信息太少,那么 Γ k ( u ) \Gamma_k(u) Γk(u)将会很大,即 w ( u k , u k + 1 ) > w ( u k , u k − 1 ) w(u_k,u_{k+1})>w(u_k,u_{k-1}) w(uk,uk+1)>w(uk,uk−1),对于这种情况,就不太适合将本层中的节点作为上下文了,应该考虑跳到更高层去找合适的上下文,所以高层的权重更大。
使用有偏见的随机游走在构造出的图 M 中进行顶点序列采样。 每次采样时,首先决定是在当前层游走,还是切换到上下层的层游走。留在本层的概率为 p。
有了上一步采样出来的随机游走(得到的是对于每个节点生成一个独立切相对短的随机游走序列)
然后直接套用 word2vec 中 SGNS(skip-gram with negative sampling)就可以了。
Skip-Gram 是给定 input word 来预测上下文
(待补充)
Softmax 用在输出层,是进行了一个函数处理,把输入的向量变成了 0-1 之间的正数(概率),所有项总和为 1
作者先在一个小的数据集上进行实验,构造了一个 Barbel graph,这个图由两个完全图和连接两个完全图的桥构成。这个图是对称的,理论上两个完全图中的所有节点,除了与桥相连的两个节点,都是结构相似的。另外由于桥也是对称的,所有桥两边的对称的节点也是结构相似的。真正的各种应用的识别效果如下。
同构节点在空间中非常接近,类似于 OPTs
为了更好地说明结构相似性,将原网络复制了一份,使得每个节点都有一个与之结构相同的镜像节点。前面说过 strcu2vec 是可以处理不连通的网络的,但是其他的 baseline 不可以,因此为了公平,在两个网络之间添加了一条连接镜像节点的边。
如果标签与节点的角色相关 struc2vec 有助于分类
空中交通网络:机场,商业航班
struc2vec(和其他)从网络学习节点表示
节点表示被用来训练分类器。
项目 https://github.com/leoribeiro/struc2vec
G ( n , p ) G(n,p) G(n,p)网络模型,平均的度 10(超过 10 个网络的平均运行时间),开启 OPTs
时间由计算环的读书序列决定(有待优化)
蓝色标记表示 strcu2vec 中镜像节点之间的距离分布,红色节点表示 struc2vec 中所有节点之间的距离分布橙色节点表示 node2vec 中镜像节点之间的距离分布,红色节点表示 node2vec 中所有节点之间的距离分布。虚线分别表示距离的平均值。
蓝绿对比 struc2vec 比
https://blog.csdn.net/zjwreal/article/details/90758589
https://zhuanlan.zhihu.com/p/63175042
https://www.youtube.com/watch?v=5usgZOTy0YY
https://www.cos.ufrj.br/~leoribeiro/struc2vec.html
ppt https://www.cos.ufrj.br/~leoribeiro/struc2vec-slides.pdf
论文 https://arxiv.org/pdf/1704.03165.pdf