超图论文细品——2019年AAAI《Hypergraph Neural Networks》


1 摘要

1.1 简介

文章提出了一种名为超图神经网络的框架,用于高维数据的表示学习。
该方法英文称呼为 Hypergraph Neural Networks,简写为 HGNN

1.2 问题描述

  • 传统的 GNN 是用于低维数据的表示学习的,没有办法对高维复杂数据进行建模。
  • 超图可以对复杂数据进行建模,挖掘数据中的高维关系。
  • 但是对超图进行表示学习,这仍没有解决方案。

因此,文章作者提出了 HGNN 方法/框架来解决这一问题。

2 超图

2.1 图和超图对比

图和超图最大的区别在于:图中边的度为 2,而超图中边的度可以是任意值(原文说了一个词,特别好:degree-free)。
在这里插入图片描述
文章中给出了一个示例:
在这里插入图片描述
上面部分,是一个图(Graph),下面部分是这个图对应的邻接矩阵(adjacency matrix)。

补充:帮助忘记怎么得到邻接矩阵的小伙伴回忆一下,加深印象。

  • 图中的圆圈表示顶点,不同的颜色对不同的顶点加以区分;短线表示边,不同的颜色对不同的边加以区分。图中共有 8 个顶点,记为 { n 1 , n 2 , n 3 , … , n 8 } \{n_1,n_2,n_3, \dots, n_8\} {n1,n2,n3,,n8};共有 6 条边。
  • 每个顶点,如 n 1 n_1 n1,可以连接其他 7 个顶点以及自身,共 8 个顶点。将顶点 n 1 n_1 n1 连接其他顶点的情况排成一行,那么 8 个顶点连接情况就是 8 行,因此就组成了 8 行 8 列的矩阵(8*8)。
  • 如果顶点 n i n_i ni 和顶点 n j n_j nj 相连,那么邻接矩阵的第 i i i 行第 j j j 列位置 ( i , j ) (i, j) (i,j) 上的元素值应该为 1;否则为 0。(前提:所有的顶点按顺序排列。)
  • 这个矩阵的第一行第一个元素表示顶点 n 1 n_1 n1 连接顶点 n 1 n_1 n1 的情况,第一行的第二个元素表示顶点 n 1 n_1 n1 连接顶点 n 2 n_2 n2 的情况;其余的以此类推。
  • 观察图, n 1 n_1 n1(蓝色)连接了 n 5 n_5 n5(灰色)和 n 6 n_6 n6(青色),因此第一行的第五个元素、第六个元素值应该为 1,第一行的其他位置元素值为 0。矩阵的其他位置的值,采取同样的策略赋值。
  • 对于无向图,邻接矩阵是对称的;对于有向图,邻接矩阵一般不对称。

在这里插入图片描述
原文中说有多组超边(Hyperedge group 1/2/3/…/N),我理解的应该多种输入数据的形式。

观察上面这个超图,顶点和上面图中的顶点,是一模一样的。常用 V V V 表示顶点集合,由此 V = { n 1 , n 2 , … , n 8 } V=\{n_1,n_2,\dots, n_8\} V={n1,n2,,n8}。超边和图中的边就稍微有些不同了。上面提到,图中有 6 条边,颜色对边进行了区分。超图这里也是用颜色对超边进行了区分。

补充:作者牛逼。这图的审美,真的太棒了。

好了,话说回来,不同的超边使用了不同的颜色。超图中有三种颜色的超边,黑色、红色、深绿色,分别用符号 e 1 e_1 e1 e 2 e_2 e2 e 3 e_3 e3 来表示。

构建关联矩阵(incidence matrix):行表示顶点,8 个顶点, n 1 n_1 n1 n 2 n_2 n2 … \dots n 8 n_8 n8;列表示超边,3 条超边, e 1 e_1 e1 e 2 e_2 e2 e 3 e_3 e3。如果某一个顶点属于某一条超边,则关联矩阵对应位置的值为 1;否则为 0。

  • 超边 e 1 e_1 e1 包含顶点 n 2 n_2 n2 n 4 n_4 n4 n 8 n_8 n8,所以 ( n 2 , e 1 ) (n_2, e_1) (n2,e1) ( n 4 , e 1 ) (n_4, e_1) (n4,e1) ( n 8 , e 1 ) (n_8, e_1) (n8,e1) 位置上的值为 1, e 1 e_1 e1 列其他位置上的值为 0。
  • 超边 e 2 e_2 e2 包含顶点 n 1 n_1 n1 n 6 n_6 n6 n 7 n_7 n7,所以 ( n 1 , e 2 ) (n_1, e_2) (n1,e2) ( n 6 , e 2 ) (n_6, e_2) (n6,e2) ( n 7 , e 2 ) (n_7, e_2) (n7,e2) 位置上的值为 1, e 2 e_2 e2 列其他位置上的值为 0。
  • 超边 e 3 e_3 e3 包含顶点 n 3 n_3 n3 n 5 n_5 n5 n 7 n_7 n7,所以 ( n 3 , e 3 ) (n_3, e_3) (n3,e3) ( n 5 , e 3 ) (n_5, e_3) (n5,e3) ( n 7 , e 3 ) (n_7, e_3) (n7,e3) 位置上的值为 1, e 3 e_3 e3 列其他位置上的值为 0。
  • 不知道大家发现没有,顶点 n 7 n_7 n7 在两条超边 e 2 e_2 e2 e 3 e_3 e3 都存在。

在这里插入图片描述
同理,可以得到第 N N N 种数据形式下的关联矩阵 H N H_N HN

在这里插入图片描述
然后将这 N N N 个关联矩阵 { H 1 , H 2 , … , H N } \{H_1, H_2, \dots, H_N\} {H1,H2,,HN} 拼接起来,得到了最后的 H H H。也即是说:
H = ⋃ i = 1 N H i . H = \bigcup^N_{i=1} H_i. H=i=1NHi.

解读:一般的数据超图只有一个,也即是说只有一个 H H H。而论文中提到了 N N N H i H_i Hi 进行拼接得到一个 H H H,应该是为了更好地利用多模态的数据。即考虑了多种数据的形式。
多模态数据 —— Multi-modal data。

2.2 超图性质

如果想详细了解这些知识,可以参看我的另外一篇博客:超图(Hypergraph)基础——论文细品——《Learning with hypergraphs: Clustering, classification, and embedding》

符号含义
G = ( V , E , W ) \mathcal{G}=(\mathcal{V}, \mathcal{E}, \mathbf{W}) G=(V,E,W)超图
V \mathcal{V} V顶点集合
E \mathcal{E} E超边集合
W \mathbf{W} W超边权重组成的对角矩阵
v ∈ V v \in \mathcal{V} vV顶点集中的一个顶点
e ∈ E e \in \mathcal{E} eE超边集中的一条超边
H \mathbf{H} H关联矩阵
h ( v , e ) h(v, e) h(v,e)关联矩阵中顶点 v v v 对超边 e e e 的元素值
d ( v ) d(v) d(v)顶点 v v v 的度
δ ( e ) \delta(e) δ(e)超边 e e e 的度
D v \mathbf{D}_v Dv顶点度组成的对角矩阵
D e \mathbf{D}_e De超边度组成的对角矩阵
  • 关联矩阵
    H \mathbf{H} H 是超图 G \mathcal{G} G 的关联矩阵,其中每个元素可以表示为:
    h ( v , e ) = { 1 ,  if  v ∈ e , 0 ,  if  v ∉ e . h(v, e) = \begin{cases} 1, \text{ if } v \in e, \\ 0, \text{ if } v \not \in e. \end{cases} h(v,e)={1, if ve,0, if ve.

  • 顶点度
    对于顶点集中的任意顶点 v ∈ V v \in \mathcal{V} vV,其度表示为:
    d ( v ) = ∑ e ∈ E w ( e ) h ( v , e ) . d(v) = \sum_{e \in \mathcal{E}} w(e) h(v, e). d(v)=eEw(e)h(v,e).

  • 超边度
    对于超边集中的任意超边 e ∈ E e \in \mathcal{E} eE,其度表示为:
    δ ( e ) = ∑ v ∈ V h ( v , e ) . \delta(e) = \sum_{v \in \mathcal{V}} h(v, e). δ(e)=vVh(v,e).

  • 顶点度对角矩阵
    进一步地,使用 D e \mathbf{D}_e De 表示所有超边的度组成的对角矩阵。

  • 超边度对角矩阵
    进一步地,使用 D v \mathbf{D}_v Dv 表示所有顶点的度组成的对角矩阵。

3 HGNN

3.1 问题

考虑超图中顶点的分类问题,那么在超图中顶点标签应该是平滑的。

批注:原文是这么说的,我不太理解
"Here let us consider the node(vertex) classification problem on hypergraph, where the node labels should be smooth on the hypergraph structure. "

那么问题就进行了转化,变成了如下形式:
arg ⁡ min ⁡ f { R e m p ( f ) + Ω ( f ) } , \arg \min_{f} \{ \mathcal{R}_{emp} (f) + \Omega(f) \}, argfmin{Remp(f)+Ω(f)},
其中 Ω ( f ) \Omega(f) Ω(f) 是超图正则项, R e m p ( f ) \mathcal{R}_{emp}(f) Remp(f) 表示监督经验损失, f ( ⋅ ) f(\cdot) f() 表示分类方法。

解读:机器学习中常用的优化函数形式,损失(误差)+ 正则项。

进一步地,正则项 Ω ( f ) \Omega(f) Ω(f) 定义为:
Ω ( f ) = 1 2 ∑ e ∈ E ∑ { u , v } ∈ V w ( e ) h ( u , e ) h ( v , e ) δ ( e ) ( f ( u ) d ( u ) − f ( v ) d ( v ) ) 2 . \Omega(f) = \frac{1}{2} \sum_{e \in \mathcal{E}} \sum_{\{u, v\} \in \mathcal{V}} \frac{w(e)h(u, e)h(v,e)}{\delta(e)} \left ( \frac{f(u)}{\sqrt{d(u)}} - \frac{f(v)}{\sqrt{d(v)}} \right )^2. Ω(f)=21eE{u,v}Vδ(e)w(e)h(u,e)h(v,e)(d(u) f(u)d(v) f(v))2.


θ = D v − 1 / 2 H W D e − 1 H T D v − 1 / 2 , \theta = \mathbf{D}^{-1/2}_v \mathbf{HW}\mathbf{D}^{-1}_e \mathbf{H}^{\rm{T}} \mathbf{D}^{-1/2}_v, θ=Dv1/2HWDe1HTDv1/2,
Δ = I − Θ . \mathbf{\Delta} = \mathbf{I - \Theta}. Δ=IΘ.
Δ \mathbf{\Delta} Δ 是一个半正定矩阵(positive semi-definite),通常称为 超图拉普拉斯

进一步地,正则项可以重写为:
Ω ( f ) = f T Δ . \Omega(f) = f^{\rm{T}} \mathbf{\Delta}. Ω(f)=fTΔ.

3.2 算法框架

在这里插入图片描述
解读

  • 输入数据为 m m m 种类型 ,也即是多模态数据。
  • 每种数据类型分为训练数据和测试数据。每种数据类型都是单独划分的。
  • 为每种数据类型构建/生成一组超边,共计 m m m 组。
  • m m m 组超边合并起来,具体操作方法是关联矩阵。
  • 从输入数据中的到节点的特征,
  • 将超图和节点特征作为输入,经过 HGNN 超图卷积,更新节点特征表示。
  • 最后的节点特征来计算标签,实现分类的目的。

3.3 实现

在论文的视觉对象分类任务中, N N N 个视觉对象数据的特征可以表示为 X = [ x 1 , … , x n ] T \mathbf{X} = [\mathbf{x}_1, \dots, \mathbf{x}_n]^{\rm{T}} X=[x1,,xn]T

解读:我理解的是有 N N N 个输入数据,每个数据的特征可以用 n n n 维向量来表示。


思考许久,仍然不知道这个是怎么实现 K K K 个最近邻的欧氏距离计算的。和研究人工智能领域的小伙伴讨论过后,一致得出一个结论:论文中写错了, X = [ x 1 , … , x n ] T \mathbf{X} = [\mathbf{x}_1, \dots, \mathbf{x}_n]^{\rm{T}} X=[x1,,xn]T 是不正确,正确的应该是 X = [ x 1 , … , x N ] T \mathbf{X} = [\mathbf{x}_1, \dots, \mathbf{x}_N]^{\rm{T}} X=[x1,,xN]T
修改过后
X = [ x 1 … x N ] T = [ x 1 … x N ] \begin{aligned} \mathbf{X} &= \begin{bmatrix}\mathbf{x}_1 & \dots & \mathbf{x}_N \end{bmatrix} ^{\rm{T}} \\ &= \begin{bmatrix} \mathbf{x}_1 \\ \dots \\ \mathbf{x}_N \\ \end{bmatrix} \\ \end{aligned} X=[x1xN]T= x1xN
那么此时,计算任意两个视觉对象之间的欧氏距离 d ( x i , x j ) d(\mathbf{x}_i, \mathbf{x}_j) d(xi,xj) 就非常合理了。通过计算每个 x i \mathbf{x}_i xi 与其他 x j \mathbf{x}_j xj 之间的欧氏距离,来寻找 K K K 个最近邻居。这个对象本身以及它的 K K K 个最近邻居组成了一条超边,该超边包含 K + 1 K+1 K+1 个顶点,这条超边对应到关联矩阵中有 K + 1 K+1 K+1 个位置的值为 1。这样,上下文形成了紧密的逻辑联系。原文描述的是两个特征之间的欧氏距离,这个点非常奇怪。如果按照原文的说法,是无法串联到一块儿的。所以我认为原文这里有一些小问题。

以上是我自己的粗浅理解,不一定是正确的,大家看个乐子就好。

接着,用欧氏距离函数来计算两两特征之间的距离 d ( x i , x j ) d(\mathbf{x}_i, \mathbf{x}_j) d(xi,xj)。这个距离被用于超图的构建过程中。

补充:欧氏距离
对于两个点 p p p q q q,在 n n n 维空间中的坐标分别是 ( p 1 , p 2 , … , p n ) (p_1, p_2, \dots, p_n) (p1,p2,,pn) q 1 , q 2 , … , q n ) q_1, q_2, \dots, q_n) q1,q2,,qn),两点之间的欧氏距离 d ( p , q ) d(p, q) d(p,q) 表示为
d ( p , q ) = ( p 1 − q 1 ) 2 + ( p 2 − q 2 ) 2 + ⋯ + ( p n − q n ) 2 . d(p, q) = \sqrt{(p_1-q_1)^2 + (p_2-q_2)^2 + \dots + (p_n-q_n)^2}. d(p,q)=(p1q1)2+(p2q2)2++(pnqn)2 .

超图构建 过程

  • 每个顶点表示一个视觉对象;
  • 每条超边连接一个顶点和它的 K K K 个最近邻居。也即是说,每条超边包含 ( K + 1 ) (K+1) (K+1) 个顶点。
  • 因为有 N N N 个视觉对象,每个对象是一个顶点,因此有 N N N 个顶点;每个顶点都会对应一条超边,因此有 N N N 条超边,并且每条超边有 ( K + 1 ) (K+1) (K+1) 个顶点。
  • 体现到超图的关联矩阵上,就是 H \mathbf{H} H 是一个 N × N N \times N N×N 矩阵 —— H ∈ R N × N \mathbf{H} \in \mathbb{R}^{N \times N} HRN×N,其中有 N × ( K + 1 ) N \times (K+1) N×(K+1) 个位置的元素值为 1,其他元素为 0,

解读:我就简单解释一下最后一条吧。
(1) 关联矩阵 H \mathbf{H} H,以矩阵的形式展示了顶点 V \mathcal{V} V 和超边 E \mathcal{E} E 之间的关系。
假设 V \mathcal{V} V 中有 m m m 个顶点, E \mathcal{E} E 中有 n n n 条超边。翻译翻译,就是 ∣ V ∣ = m \lvert \mathcal{V} \rvert =m V=m ∣ E ∣ = n \lvert \mathcal{E} \rvert =n E=n。那么 H \mathbf{H} H 就是一个 m × n m \times n m×n 的矩阵。翻译翻译,就是 H ∈ R m × n \mathbf{H} \in \mathbb{R}^{m \times n} HRm×n
因为 HGNN 的超图中,有 N N N 个顶点,有 N N N 条超边,因此 H \mathbf{H} H 就是一个 N × N N \times N N×N 的矩阵。翻译翻译,就是 H ∈ R N × N \mathbf{H} \in \mathbb{R}^{N \times N} HRN×N
(2) 那么后面的 N × ( K + 1 ) N \times (K +1) N×(K+1) 个元素值为 1 又是怎么得到的呢?
选择任意一条超边,体现在 H \mathbf{H} H 中就是任意一列。然后这条超边包含了 ( K + 1 ) (K+1) (K+1) 个顶点,体现在 H \mathbf{H} H 中就是这一列有 ( K + 1 ) (K+1) (K+1) 个元素的值为 1( H \mathbf{H} H 的定义)。那么有 N N N 条超边,所以就会有 N × ( K + 1 ) N \times (K+1) N×(K+1) 个元素值为 1。自然,剩下的元素值就为 0 咯。

顶点分类 过程
在超图构建完成后,得到 H \mathbf{H} H D e \mathbf{D}_e De,就可以进行神经网络的训练了。
HGNN 使用的是两层网络,使用 softmax 函数来预测标签,交叉熵损失用作反向传播来更新参数集 Θ \mathbf{\Theta} Θ

在这里插入图片描述

未完待续……

参考

  1. Y. Feng, H. You, Z. Zhang, R. Ji et.al. Hypergraph neural networks. In Proceedings of the AAAI conference on artificial intelligence, 2019 (Vol. 33, No. 01, pp. 3558-3565).
  2. 超图(Hypergraph)基础——论文细品——《Learning with hypergraphs: Clustering, classification, and embedding》
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值