Search

[CS224W] Lecture 8

8.1 Graph Augmentation
8.2 Prediction with GNNs
8.3 Training Graph Neural Networks
8.4 Setting-up GNN Prediction Tasks

8.1 Graph Augmentation

raw input graph를 그대로 GNN 계산하는데 사용하면 여러가지 문제가 있을 수 있다.
Feature Augmentation을 하는 이유
input graph의 feature들이 부족해서 graph의 특징을 제대로 표현하지 못하는 경우
Structure Augmentaion을 하는 이유
graph가 너무 sparse할 때 → 각 node 정보가 잘 전달되지 않을 수 있음 → Add virtual nodes or edges
너무 dense 할 때 → high computational cost and overfitting→ sample neighbors while aggregating
graph가 너무 클 때 → high computational cost → subgraph
Feature Augmentation
1.
Input graph에 node feature가 없을 때
a.
Constant node feature
모든 node에 대해서 동일한 feature 값을 부여한다. (1-dimensional feature)
graph structure를 알 수 있다는 장점이 있다.
새로운 node가 들어왔을 때 추가하기 쉽다.
b.
One-hot node feature
각각의 node는 독립적으로 생각하여 고유의 아이디를 부여
node-specific한 feature 정보를 담을 수 있다.
새로운 node를 추가하기는 어렵다
high computational cost
2.
graph structure와 같이 GNN으로는 알기 힘든 정보들이 있을 때
위와 같이 삼각형, 사각형 graph가 있을 때 모든 node들은 degree 2를 가지기 때문에 GNN으로 두 graph를 구별할 수가 없다.
각 node가 어떤 cycle에 해당되는지를 feature로 만든다.
만약 3 cycle과 4 cycle 둘다 속한다면 → [0, 0, 0, 1, 1, 0]
cycle 수를 통해서 두 graph의 node들을 구별할 수 있고, 두 graph의 구조가 다른 것을 알 수 있다.
Structure Augmentaion
1.
Add virtual edges
sparse graph의 경우 사용한다.
A+A^2 matrix를 사용한다.
2-hop neighbor끼리도 edge로 연결된다.
2.
Add virtual nodes
모든 node들이 연결되어 있는 virtual node를 만든다.
virtual node를 통해서 원래는 멀리 떨어져 있던 node 한테도 message passing이 이뤄진다.
3.
Sampling
dense한 graph에서 사용
모든 neighbor들을 message passing에 사용하지 않고 일부만 sampling하여 사용한다.
dropout와 같은 효과

8.2 Prediction with GNNs

Prediction Head
1.
Node-level prediction
2.
Edge-level prediction
3.
Graph-level prediction
Node level prediction
node embedding을 prediction space로 mapping하여 사용한다.
Edge level prediction
concate 후 mapping하는 방식
dot product 하는 방식
dot product 할 때 중간에 matrix를 추가로 두어 mapping하면 multi classification도 가능하다.
Global level prediction
graph에 있는 모든 node들의 feature들을 합치는 여러가지 방법이 있다. (mean, max, sum …)
하지만 이런 global pooling으로는 graph에 있는 정보가 많이 손실된다는 단점이 있다.
위의 문제를 해결하기 위해 나온 것이 DiffPool
sub graph cluster에서 pooling을 하고, 그렇게 나온 node들을 다시 pooling하여 global embedding을 만들어낸다.

8.3 Training Graph Neural Networks

Supervised learning, unsupervised learning으로 나눌 수 있다.
Supervised training의 경우 node/edge/graph 마다 true value가 있어서 prediction 에 대해서 loss를 계산한다.
Unsupervised training은 external label이 없다.
node-level에 대해서는 clustering coefficient, pagerank등을 맞춘다.
clustering coefficient 은 neighbor node끼리 얼마나 잘 이어져 있는지 나타내는 정도
edge-level에 대해서는 edge를 일부러 없앤다음 link가 있는지 맞춘다.
graph-level에 대해서는 두 그래프가 isomorphic한지 맞춘다.
Metrics

8.4 Setting-up GNN Prediction Tasks

Train, valid, test를 나누는 방법
1.
Transductive setting
그래프 전체를 사용하되 일부 라벨만 train/valid/test 로 나눠서 학습에 사용한다.
하나의 그래프 사용
2.
Inductive setting
edge를 잘라서 여러개의 그래프로 만든다.
각각의 graph에 대해서 학습을 진행한다.
여러개의 그래프 사용
unseen graph에 대한 generalization도 가능하다
여러가지 Tasks에 대한 split setting
Node classification
Transductive → node를 train/valid/test에 맞게 나눠서 학습한다
Inductive → 하나의 그래프에서 node들을 drop 시켜서 여러개의 독립적인 그래프를 만들어 진행한다
Graph classification
Transductive → 불가능
Inductive → 각각을 독립적인 그래프라 생각하고 분류 학습
Link prediction
Transductive, Inductive 둘다 가능하다
Inductive로 link prediction 하는 방법?
마찬가지로 edge를 없애서 여러개의 graph를 만든다.
각각의 graph에서 message edge, supervision edge를 만든다.
message edge는 학습에 사용되고, supervision은 message passing에 사용되지 않는다.
각 graph에서 supervision edge의 link를 맞추는 것이 목표이다.
Transductive link prediction 하는 방법?
하나의 graph에서 edge들을 여러가지 종류로 나눈다.
Training에서는 training message edge로 학습하여 training supervision edge를 맞춘다.
Validation에서는 training message edge + training supervision edge로 학습하여 validation edge를 맞춘다.
Test에서는 test edge를 맞춘다.
→ Traning message, training supervision, validation edge, test edge 총 4가지로 나눈다.
단점 : 복잡하다