Weisfeiler-Lehman(WL)算法和WL Test的学习笔记
1. 什么是Weisfeiler-Lehman(WL)算法
一维的Weisfeiler-Lehman:
对于任意的节点vi∈Gv_i∈Gvi∈G:
- 获取节点{vi{v_i}vi}所有的邻居节点jjj的特征{hvjh_{v_j}hvj}
- 更新该节点的特征hi<−hash∑jhvjh_i < -hash{\sum_{j}h_{v_j}}hi<−hash∑jhvj,hash是一个单射函数(xxx不同则f(x)f(x)f(x)一定不同)
重复以上步骤KKK次直至收敛
2. WL Test
事实上,Weisfeiler-Lehman算法在大多数图上会得到一个独一无二的特征集合,这意味着图上的每一个节点都有着独一无二的角色定位(例外在于网格,链式结构等等)。因此,对于大多数非规则的图结构,得到的特征可以作为图是否同构的判别依据,也就是WL Test(例如两个图是否是同质的,取决于节点的排列方式)。
3. Weisfeiler-Lehman算法与GCN的关系
有的论文认为,GCN模型可以看作图上Weisfeiler-Lehman算法的一种变形。
我们回到公式
hvil+1=σ(∑j1cijhvjlWl)h_{v_i}^{l+1}=\sigma(\sum_{j}\frac{1}{c_{ij}}h_{v_j}^lW^l)hvil+1=σ(j∑cij1hvjlWl)
其中,cij=didjc_{ij}=\sqrt{d_id_j}cij=didj,j∈Nij∈N_ij∈Ni,NiN_iNi为iii的邻居节点,did_idi,djd_jdj为iii,jjj的度,这本质上是在模型中使用了对称规范化后的邻接矩阵D12AD12D^{\frac{1}{2}}AD^{\frac{1}{2}}D21AD21,可以看出这个传播规则其实是加了参数WlW^lWl后略微变化的hash函数。如果我们采用合适的非线性函数σ\sigmaσ然后随机初始化参数矩阵那么这个矩阵就会是正交的,这个更新策略就会非常可靠。这样子我们就可以通过局部图结构中的距离得到非常有意义的平滑嵌入表示。这也就是很多文章将GCN视作Weisfeiler-Lehman变形的理由。
4. Weisfeiler-Lehman算法应用
Weisfeiler-Lehman算法通常被用在解决图的相似性问题上,虽然算法要解决的问题聚焦在Graph层面上,但是其立足点还是在节点上,如果我们能够找到一种衡量节点独立性(unique)的方法,那么我们就可以将图视作一个包含这些独立性节点的集合,两张图的相似性可以转化为两个集合的Jaccard相似度。
5. 举例说明Wisfeiler-Lehman算法应用
给定两图G和G’,其中每个节点都已经打上了标签(实际应用中,有些时候我们并拿不到节点的标签,这时可以对节点都标上“1”这个标签)
要比较G和G’的相似性,我们来看看weisfeiler-lehman算法是怎么做的:
①聚合邻居节点的标签得到一个标签的字符串,对字符串进行升序排列。
②对字符串进行哈希处理,这里生成了一个一一映射的字典,这一步也可以使用其它的字符串哈希函数,只要保证碰撞率尽量小就可以。
③将哈希过的值重新赋值给相应的节点
这样第一轮迭代之后,G={6、6、8、10、11、13},G’={6,7,9,10,12,13}于是利用Jaccard公式就可以计算出G和G`的相似度了,如果需要更严格的对比,可以持续迭代上述过程。
Weisfeiler-Lehman(WL)算法和WL Test的学习笔记相关推荐
- 目标检测经典算法和API详解(笔记)
文章目录 商品目标检测 1. 目标检测概述 1.1.项目演示介绍 学习目标 1.1.1 项目演示 1.1.2 项目结构 1.1.3 项目安排 1.2 图像识别背景 学习目标 1.2.1 图像识别三大任 ...
- 数据结构与算法—最小生成树(Prim算法和Kruskal算法算法详解)
前言 在数据结构与算法的图论中,(生成)最小生成树算法是一种常用并且和生活贴切比较近的一种算法.但是可能很多人对概念不是很清楚.我们看下百度百科对于最小生成树定义: 一个有 n 个结点的连通图的生成树 ...
- 最长不下降子序列的O(n^2)算法和O(nlogn)算法
转帖 最长不下降子序列的O(n^2)算法和O(nlogn)算法 最长不下降子序列(LIS:Longest Increasing Subsequence) //用句通俗的话说,我讲的很通俗易懂~~ 问题 ...
- BF算法和KMP算法
给定两个字符串S和T,在主串S中查找子串T的过程称为串匹配(string matching,也称模式匹配),T称为模式.这里将介绍处理串匹配问题的两种算法,BF算法和KMP算法. BF算法 (暴力匹配 ...
- Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)
Algorithm:C++语言实现之字符串相关算法(字符串的循环左移.字符串的全排列.带有同个字符的全排列.串匹配问题的BF算法和KMP算法) 目录 一.字符串的算法 1.字符串的循环左移 2.字符串 ...
- 操作系统之存储管理——FIFO算法和LRU算法
操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...
- RSA算法和RSA数字签名算法的实现
RSA算法和RSA数字签名算法的实现 http://blog.chinaunix.net/uid-21880738-id-1813146.html 顾婷婷 李涛 (四川大学计算机系(西区) 成都 61 ...
- 若S作主串,P作模式串,试分别写出利用BF算法和KMP算法的匹配过程。
目 录 题目: 百度文库-答案: (1) (2) MOOC标准答案: (1) (2) mooc答案-截图: 数据结构(C语言版)-严蔚敏2007 题目: 设字符串S='aabaabaabaac', ...
- python选择排序从大到小_经典排序算法和Python详解之(一)选择排序和二元选择排序...
本文源自微信公众号[Python编程和深度学习]原文链接:经典排序算法和Python详解之(一)选择排序和二元选择排序,欢迎扫码关注鸭! 扫它!扫它!扫它 排序算法是<数据结构与算法>中最 ...
最新文章
- VMware vSphere简介
- 韩顺平java笔记 第1讲 内容介绍 项目演示 原理剖析
- 无声息格式化磁盘的API,VB版
- 深入浅出WPF(2)——解剖最简单的GUI程序
- 【土地评价与土地管理】案例:某地区土地农业利用潜力评价
- jni c call java_Java通过-jni调用c语言
- JUnit-4.12报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing异常的解决
- .net 动软代码生成器
- 1.5编程基础之循环控制 03 均值 python
- 合工大计算机在职研究生好考吗,合肥工业大学在职研究生2019年考研必知
- python 字符串转函数名_Python 使用函数名(字符串)调用函数(4种方法)
- svn 管理 mysql_svn web页面管理svnadmin部署
- 开源流媒体SRS结合硬件视频实时转码服务器的部署
- go语言:sync.Once的用法
- 在win服务器查看系统报错日志文件,win2003查看及管理系统日志的方法
- 硬件设计之DDS AD9854
- 2015年国际数学奥林匹克(IMO)试题
- mybatis自动生成更新时间和创建时间
- C-kermit安装方法
- android融云消息免打扰