TUNIVERSE

heterogeneous graphs

字数统计: 1.5k阅读时长: 6 min
2023/11/27 25

cs224w课程学习笔记

G=(V,E,R,T)

node type T(vi), relation type rR

image-20231117200853873

RGCN

extend GCN to handle heterogeneous graph with miltiple edge/ relation types

image-20231117200917713

we should use different neural network weights for different relation types

image-20231117200957472

hv(l+1)=σ(rRuNvr1cv,rWr(l)hu(l)+W0(l)hv(l))

message

each neighbor of a given relation:

mu,r(l)=1cv,rWr(l)hu(l)

self-loop:

mv(l)=W0(l)hv(l)

aggregation

sum over messages from neighbors and self-loop, then apply activation

hv(l+1)=σ(Sum(mu,r(l),uN(v)v))

scalability

如果有L层,那么对于每个关系就会有L个权重矩阵: Wr(1),Wr(2)Wr(L)

而每个权重矩阵的大小 Wr(l)d(l+1)×d(l)

每个矩阵都有不同的尺寸,且随着类型以及隐藏层的数目增加,参数会呈现指数级的增长,模型就会变得太大,会出现过拟合以及无法训练的问题

how to reduce or regularize?

  • use block diagonal matrices
  • basis/dictionary learning

block diagonal matrices

key:减少非0元素数量 => 训练地更快,模型更robust,不容易过拟合

image-20231117201021773

用B个低维矩阵,参数从d(l+1)×d(l)减少到d(l+1)B×d(l)B

只有相邻神经元/嵌入维度可以通过权重矩阵交互,要解决这一限制,需要多加几层神经网络,或者用不同的block结构,才能让不在一个block内的维度互相交流。

解释一下这是为什么

这个做法就是让把大矩阵给切成小块,比如原来的100×100按稀疏程度刚好能切成四个25×25的,设想以下场景:原来有23号和41号相连,但因为分区的存在23号只能和0号至24号交换信息,这就是所谓“只有同一个块里相邻的神经元才能交互”的意思。

basis learning

key:在不同的关系中共享权重

将每个关系的权重矩阵表示为基变换的线性组合

Wr=b=1BarbVb

这里Vb是共享的权重矩阵,arb是系数,这样我们就只需要训练和学习arbb=1B 就行

example: entity/ node classification

如何定义各种任务?

image-20231117201048127

dataset splitting

将每种关系对应的边都分成 training message edges, training supervision edges, validation edges, test edges 四类

=> 解决样本不平衡的问题,如果不先做边的分类直接将所有类型的边混在一起分成四份,无法保证四个数据集里含有所有关系类型的边

这么分完最后再合并到一起,合成大的四类

image-20231117201121446

假设(E,r3,A)是training supervision edge,其它所有的边都是training message edges。我们取E和A最后一层的embedding:hE(L)hA(L),然后使用一个函数fr:Rd×RdR来计算二者有关联的概率。例如 fr1(hE,hA)=hETWr1hA,Wr1Rd×d

training

negative edge的概念

既不属于training edges也不属于training supervision edges的边

用training message edges来预测training supervision edges

  1. 找到training supervision edges,比如图中的 (E,r3,A),用RGCN来对其打分(score)

  2. 增加一个negative edge来干扰supervision edge,因为这里supervision edge是从E到A的r3类型的边,那么图中我们就可以增加(E,r3,B)或者(E,r3,D)或者(E,r3,F).

  3. 增加完negative edges之后我们也用RGCN来给其打分

  4. 使用交叉熵损失函数来优化,损失函数如下:

    1. 最大化training supervision edges的分数
    2. 最小化negative edges的分数

    l=logσ(fr3(hE,hA))log(1σ(fr3(hE,hB)))

image-20231118124030147

evaluation

因为在training的时候我们已经minimize了negative edge (E,r3,B)的分数了,所以直觉上我们要预测的边(E,r3,D)即validation edge的分数应该要比上面minimize score的negative edge高

用training supervision edges和training message edges来预测validation edges

  1. 用RGCN计算(E,r3,D)分数
  2. 计算其它negative edges的分,在这里是(E,r3,v)vB,F
  3. 将以上的分数排序,获得(E,r3,D)的排名RK,有两种指标:
    1. Hits@k: 1 [RKk],表示最后返回的前k个结果中命中的次数,因此命中次数越大越好;
    2. Reciprocal Rank:1RK,取倒数,排名越小越好,因此倒数越大越好.
image-20231118130103604

Knowledge Graphs Completion

embedding

shallow embedding

知识图谱中的边用一个三元组来表示(h,r,t),节点头h和节点尾t有关系r,模型实体和关系都属于嵌入空间 Rd

给定一个三元组,我们的嵌入目标是让(h,r)的嵌入向量接近t的嵌入向量。

  • 如何embed(h,r)
  • 如何定义接近度

最简单最自然的想法是transE:

  • 给定一个(h,r,t),如果两点之间关系存在,则h+rt;反之h+rt
  • 得出fr(h,t)=∣∣h+rt∣∣
image-20231128195513331

transE算法

1

常见关系:

  1. 对称关系

    • r(h,t)=>r(t,h)
    • 你是我室友我也是你室友这叫对称
    image-20231128202132158
  2. 反对称关系

    • (r(h,t)=>¬r(t,h))
    image-20231128201654905
  3. 逆关系

    • r2(h,t)=>r1(t,h)
    • 雇佣和被雇佣
    image-20231128201713336
  4. 复合传递关系

    • r1(x,y)r2(y,z)=>r3(x,z) x,y,z
    • 我妈的老公是我爹:我和我妈是母女关系,我妈和某个人是夫妻关系,那么我和这个人是父女关系
    image-20231128201746886
  5. 一对多关系

    • r(h,t1),r(h,t2),,r(h,tn)都为真
    • 一个老师可以有多个学生,t1,t2,,tn都是学生
    image-20231128202152055

注意这里的反对称关系和传递性和离散数学里的定义有些不同,别搞混

CATALOG
  1. 1. RGCN
  2. 1.1. scalability
  3. 1.2. example: entity/ node classification
  • 2. Knowledge Graphs Completion
    1. 2.1. embedding
      1. 2.1.1. transE算法