Lecture 8.1 - Graph Augmentation for GNNs
CS224W Lecture 8.
Lecutre 8
Recap : 저번 시간에는 Deep Graph Encoder의 구조와 GNN의 일반적인 프레임워크에 대해서 배웠습니다. Graph convolution과 Regularization 기법, 그리고 activation function과 같은 레이어를 사용해서 node, subgraph, entire graph와 같이 원하는 아웃풋 형식을 뽑아냅니다.
Graph convolution과 Regularization 기법, 그리고 activation function과 같은 레이어를 사용해서 node, subgraph, entire graph와 같이 원하는 아웃풋 형식을 뽑아냅니다.
GNN 레이어 간의 k-hop, message passing 방법, 레이어 연결방법, 결과를 종합하는 방법, 그리고 목표한 아웃풋 형식(learning objective)을 설정할 수 있습니다.
GNN 레이어 간의 k-hop, message passing 방법, 레이어 연결방법, 결과를 종합하는 방법, 그리고 목표한 아웃풋 형식(learning objective)을 설정할 수 있습니다.
이번 시간에는 이어서 그 GNN을 올바르게 학습하기 위한 방법들을 배울텐데요.
1) 그래프 인풋을 학습 목적에 알맞게 처리하는 방법론(Graph Augmentation, 직역하면 그래프 증강)
2) 어떻게 GNN을 학습시킬지(Learning Objectives)
3) 데이터를 어떻게 나눠서 학습시킬지(How to deal with data)
에 대해서 배울 예정입니다.
8.1 - Graph Augmentation for GNNs
💡아이디어 : Raw input graph ≠ computational graph
-
인풋 그래프를 바로 GNN에 넣는 것보다는 Augmentation을 거치는 것이 훨씬 연산적으로 효율적이고, 높은 퍼포먼스를 뽑을 수 있을 것입니다.
-
그럼 어떤 전처리가 있을까요? 상황에 따라 알아봅시다.
- 상황1) 인풋 그래프의 피쳐가 부족할 경우 (인접 행렬만 가지고 있을 때 자주 사용합니다.)
- 상황2) 엣지가 너무 많거나, 그래프가 너무 큰 경우
상황1) 인풋 그래프의 피쳐가 부족할 경우 (인접 행렬만 가지고 있을 때 자주 사용합니다.)
방법 1) 노드에 일정한 상수를 부여합니다.
e.g) 각 노드에 1을 부여합니다.
- 단순 상수를 부여한 것이지만, 합계(aggregation) 단계에서 hop별로 몇 개의 이웃이 있는지, 그래서 그래프의 구조가 어떻게 이루어져있는지 알 수 있습니다.
방법 2) 노드에 유니크한 아이디, one-hot vector를 부여합니다.(Assign unique IDs to nodes)
- 노드 ID는 랜덤
- 노드 수와 같은 길이의 벡터가 각 노드에 부여되는 것이기 때문에 계산적으로 부담될 수 있습니다.
아래는 방법1과 방법2를 비교한 표입니다.
때로는 주어진 정보에 비해 그래프의 구조상 모델 학습이 불가한 경우도 있습니다.
예를 들면, 노드 정보가 주어진 상태에서 그래프 전체 싸이클을 세어야하는 경우가 있습니다.
노드 v1 기준으로 봤을 때, 그래프의 구조와 관계 없이 연산은 항상 같습니다.
노드 v1 기준으로 봤을 때, 그래프의 구조와 관계 없이 연산은 항상 같습니다.
해결방법 : 이럴 때는 싸이클 카운트 정보를 노드 피쳐로 넣어주면 됩니다. (feature augmentation)
Feature Augmentation을 위한 또 다른 그래프 정보들은 어떤 것이 있을까요?
- Node degree
- Clustering coefficient
- PageRank
- Centrality
2번째 강의에서 배웠던 거의 모든 내용이 피쳐로 활용 가능합니다.
방법3) 가상의 노드와 엣지를 첨가합니다.
1) 가상의 엣지 추가
common approach : 2-hop 이웃들을 가상의 엣지로 연결합니다.
앞 강의에서 배웠다시피, 근접 행렬의 n제곱은 n번째 이웃들의 숫자와 같다는 점을 활용합니다.
(instead of using adj. matrix A for GNN computation, use A + A^2)
** n power of adj matrix = # of nodes that are neighbors at n
예시) Bipartite graph : 저자-논문 이분그래프가 있다고 할 때, 2 hop 이웃들을 연결한 가상 엣지들로 저자-저자 콜래보레이션 그래프 변형이 가능하다.
2) 가상의 노드 추가
- 추가한 가상 노드들은 다른 모든 노드들과 연결합니다
- 두 노드 간의 거리가 3인 sparse graph가 있다고 가정할 때,
- 가상 노드를 추가하게 되면, 모든 노드 간의 거리가 2로 줄어든다.
- node A - virtual node - node b
⇒ 이점 : sparse graph에서 미미했던 message passing이 쎄진다.
상황2) 엣지가 너무 많거나, 그래프가 너무 큰 경우
e.g) 소셜 네트워크 그래프에서 킴 카다시안의 팔로워들은 다른 일반인보다 훨씬 많은 이웃들을 가질 것입니다.
노드 이웃 샘플링(Node Neighborhood sampling)을 사용해보세요.
기존 방식이 인풋 정보를 전부 다 활용했었다면,
아래 그림과 같이 Node Neighborhood sampling은 매 step마다 노드의 다른 이웃들을 샘플링해 학습에 적용합니다. 이상적인 시나리오라면, node neighborhood sampling을 적용한 학습 모델은 그래프 전부를 학습에 포함한 경우와 비슷한 엠베딩을 얻을 수 있게 됩니다.
그래프가 너무 큰 경우, computational cost를 많이 줄여줄 수 있습니다.
💡Takeaway : 항상 그래프 인풋을 전처리 없이 바로 사용하는 것은 효율적이지 않다!