Graph Neural Networks周末速成

一日入门

CS224W:Spectral Clustering
CS224W:Graph Representation Learning
CS224W:Graph Neural Networks
CS224W:Applications of Graph Neural Networks
Graph Neural Network (2/2)

Refer:

CS224W: Machine Learning with Graphs

Introduction; Structure of Graphs

介绍图的基本概念,如有向图,无向图,二部图,邻接矩阵,强连接,弱连接等.

Properties of Networks and Random Graph Models

介绍图的一些特性,如度的分布,直径,聚类系数,最大连通集等.
通过随机图指出社交网络聚类系数偏高,也即人群呈现社区属性,相反六度理论这些是很平凡的结论.
通过Kronecker点积生成随机的符合社交网络特性的图,类似于分形.

Motifs and Structural Roles in Networks

介绍subgraph,比如三个点的连通图就只有两种,这种特征可以用来定义点的周边结构特性.
引出了点的结构相似性,它和点的社区属性是互补的.
介绍一种识别结构结构相似性的经典方法.

Community Structure in Networks

介绍点的社区属性
介绍了如何根据图判定社区的算法,注意社区可以使无交集的,也可以是多重交集包含得到.

Spectral Clustering

从直观上介绍谱聚类,是谋求最小的电导率.
为什么是laplace矩阵,因为全1向量是特征向量,他提供了一个很好地先验要求:所有点加起来为0.

  • 从频域上来讲xLx衡量了点上x值之间的能量差,这和拉普拉斯算子相对应.
  • 略过数学推导,我们认为拉普拉斯算子对应的傅里叶变换和矩阵的qr分解是类似的.

考虑将点集划分为两类,自然的定义类别是-1,+1,要保证这两类数目差不多,因此就会需要这个先验.
如果图不连通,有几部分就会有几个相同的全零特征值.
如果图连通,找到的最小非0特征值(第二小特征值)对应的特征向量自然而然的就将点标记为两类.

  • 注意这里采取GCN那一套用频域分析比较好.
  • 更小的特征值指更低的频率,因此它会将图划分变动的部分会更少一些(相对于大特征值对应的高频来说).
  • 猜测:似乎直观的理解是qr分解后,特征向量对应的是图特有的属性,如全1向量就指的是图中所有点地位等价;
  • 上面的特征向量就是指类似于二部图那种的图的分布结构?以此类推.
  • 特征向量似乎就对应的是傅里叶分解得到的那些基本sin,cos信号?只是图里面的这种结构很难观察出来.
  • 特征值就指代这些结构对应的强度.原图不变,直接qr分解的特征值就是指图的结构特性强度.
  • 如果使用node feature,就是指这种node feature对应的图的结构强度.

对应的,第三小特征值也可以使用,最小特征值为全正,第二小是负正,第三小可能是负正负正,etc...
总之其余的特征值能更好的区分之前的未区分的相邻的类别.
因此常见的做法(之前是层次区分)是取m个特征值做kmeans即可,的确很符合直观.

Message Passing and Node Classification

主要提relation classifier,iterative classifier,belief propagation这三者.
讲道理就是指特征沿图的方向迭代求解,并且这三种都不保证收敛.
区别可能在于是否使用节点本身特征,是否是确定性的特征等.
比如这个节点我随机取label作为初始化,那么我传递的message可以使用初始化的确定值,也可以是这个分布的期望.

Graph Representation Learning

主要介绍Random Walk和Node2Vec
前者随机采样,采样出来的path全部作为neighbor(context)进行处理.
后者随机采样强调bfs,dfs的特性,通过参数控制采样特性.
顺带介绍整个graph的embedding,主要指sum/avg node embedding,超级节点,anonymous walk embedding等.

Graph Neural Networks

这部分就很核心了:

  • Basics
    之前我们的node embedding都是embedding lookup,这样的话参数量级起码是O(V*d)的.
    有三个问题:规模问题,inductive问题,order问题(同构图)
    如果我们能借用cnn里面的参数共享,就能解决这些问题.
    我们只需要定义好Aggr的参数(无论是函数还是网络均可),迭代init node embedding即可.
    问题是loss怎么来,注意我们考虑的问题始终是node embedding的产生问题,因此任何loss都可.
    对于无监督的,我们可以使用上一节的相似性定义如random walk.
    对于有监督的,我们直接使用其任务loss即可.
    因此严格来说,gcn这些是通过降低参数量来提高表现的.
  • GCN
    GCN出发点是:想从频域上取filter来限定信息流动->通过laplace矩阵做qr分解确定频域的定义
    ->特征向量作为分解的基线,取filter限定->为了localize同时降低复杂度,filter作为矩阵参数
    ->cheb分解,限定了localize区域->便于计算约定cheb多项式分解取前两项,特征值约为2,参数合并
    ->gcn化简为renormalize之后的laplace矩阵乘参数矩阵作为迭代更新
    ->显示出空域特性,即每个node更新来自于(周边邻居与自己的和平均值)*参数矩阵
  • GraphSAGE
    GCN是平均(AGGR)周边node embedding+self embedding进行迭代求解.
    GraphSAGE强调的是Aggr也不一定只用一种,可以用多种,也可以多种结合起来用.
    当然node自己本身的embedding从gcn的相加变成了sage这里的concat,变化不大吧.
  • GAT
    GAT强调AGGR不一定是平均,应当是加权平均,这里的attention直接用node embedding就能算出来.
    值得注意的是使用了multi-head attention.
  • Tips
    PinSAGE就是一个典型的gnn用于推荐的场景.
    它的loss来源于click数据,因此自然地sim(node,click_recom) >> sim(item,negative_sample)
    由此我们就可以训练.
    可以看出gnn能够把握住图的结构,gcn这一套降低了模型参数量,实际优化根据任务具体来定.
    tips在于数据预处理很重要,通常要正则化;最后一层不要激活函数;gcn大小在64,128就已经非常大了.

Applications of Graph Neural Networks

主讲PinSAGE,参考之前的,内容基本一致.

posted @ 2020-06-19 17:45  暗影卫队  阅读(537)  评论(1)    收藏  举报