CNN은 이미지, 텍스트, 비디오 데이터를 다루는 데 아주 유용하다. 이 데이터들을 graph의 관점에서 보면 고정된 size를 갖는 간단한 graph(혹은 sequence)로 생각해볼 수 있다.
하지만 실생활에서의 수많은 데이터는 size가 정해져있지 않고, 훨씬 복잡한 graph로 표현해야 하는 경우가 많다. 이러한 경우에는 CNN보다는 GNN이 훨씬 유용하다. (특히 scene graph 연구를 하다보면 GNN을 필수적으로 사용해야 할 것이다.)
물론 scene(vision)과 관련된 task에서는 attention 개념을 활용하는 모델이 더 많이 사용될 수는 있겠지만, graph 이론을 배워보는 과정에서 attention을 적용하지 않고 GNN의 graph representation 성능을 최대한 끌어올린 GIN 모델을 제안한 논문을 읽어보고, 정확히 이해해보려 한다.
목차
Core Questions
논문을 읽고 얻은 insight는 다음과 같다.
- What did authors try to accomplish? (Contributions)
- Graph Isomorphism Network (GIN)을 제안했다.
- Expressive power(서로 다른 graph는 서로 다른 embedding space로 mapping하는 능력)가 아주 높다.
- 그래프 구조의 유사도를 알아낸다.
- 다양한 GNN 변형 모델(GCN, GraphSAGE 등)의 한계점 및 특정 task에서 뛰어난 점을 이론적으로 분석했다. (포스팅에서는 다루지 않음)
- Graph Isomorphism Network (GIN)을 제안했다.
- What were the key elements of the approach?
- GNN에 Weisfeiler-Lehman (WL) graph isomorphism test 개념을 적용한 idea
- Close connection between GNNs + WL Test
- Weisfeiler-Lehman graph isomorphsim test : injective function 개념
- GNN에 Weisfeiler-Lehman (WL) graph isomorphism test 개념을 적용한 idea
- What can I use myself?
- GNN 기반의 모델을 알아보고, 앞으로 연구에 응용하여 사용해볼 수 있을 것이다.
- What other references do I want to follow?
- GATs (Graph ATtention networks) 등, 다른 GNN 변형 모델
Introduction
그래프 구조의 데이터를 학습할 때 중요한 것 중 하나는 구조를 효과적으로 representation하는 것이다. 따라서 그래프 구조를 학습하는 것을 representation learning이라고도 한다.
2016년부터 이러한 representation learning 방법으로 neural network를 사용하는 GNN과 그것을 기반으로 변형한 다양한 연구가 많았다.
GNN은 message passing(또는 recursive neighborhood aggregation)이라는 원리로 동작한다. Aggregation이
그래프 전체의 representation은 이러한 node feature들을 pooling하여 얻을 수 있다.
이를 기반으로, neighborhood aggregation 또는 graph-level pooling을 다른 방법으로 하는 다양한 모델이 등장했고, 이 모델들은 node classification, link prediction, graph classification 등의 그래프를 활용하는 다양한 task에 최고 성능을 보였다.
하지만 GNN을 변형하는 idea는 대부분 GNN의 한계와 특징에 대한 이해 없이, 직관 혹은 수없이 많은 실험을 통해 얻은 경우가 많다. (애초에 GNN의 representational capacity를 이론적으로 분석한 경우가 거의 없다고 한다.)
논문에서 제안하는 새로운 GNN 기반 모델인 GIN은 어떻게 representational power를 높였는지 알아보자.
또한 GNN의 representational capacity를 이론적으로 분석해보고, GNN 기반 모델들이 어떻게 학습 과정에서 graph를 표현하고, 서로 다른 graph 구조를 구별하는지 알아볼 것이다.
Preliminaries
GNN과 WL test가 어떤건지 좀 더 자세히 살펴보자.
우선 공통적으로 사용되는 notation은 아래와 같다.
: node 의 feature vector가 인 그래프를 나타낸다.- Node classification에서 : 각 노드
가 label 를 갖고, 목표는 representation vector 를 학습하여 의 label을 예측하여 를 만족하도록 하는 것이다. - Graph classification에서 : 그래프 set
와 각 graph의 label 가 주어졌을 때, representation vector 를 학습하여 그래프의 label을 예측하여 를 만족하도록 하는 것이다.
Graph Neural Networks (GNNs)
GNN은 node classification에서 노드의 representation vector
그 과정에서, 어떤 노드의 representation을 반복하여 update하는데, 이때 그 노드의 이웃 노드의 representation을 합한다. 이를 neighborhood aggregation strategy라 한다.
이러한 aggregation을
이 과정을 수식으로 나타내면 다음과 같다.
각 term의 의미는 다음과 같다.
: 번째 iteration(layer)에서 node 의 feature vector- initial value, 즉
는 node feature vector 로 둔다.
- initial value, 즉
: 의 인접 노드 set
여기서는
여기서는 대표적인 GraphSAGE와 GCN 모델을 살펴보자.
먼저, GraphSAGE 모델에서는
여기서
그리고 Graph Convolutional Network (GCN) 모델에서는 element-wise mean-pooling을 사용하며,
이렇게 얻은 node representation
Node classification task에서는 마지막 iteration의
Graph classification task에서는 node feature를 모든 node들에 대해 합하여(aggregation) 그래프 전체의 representation
Weisfeiler-Lehman test
Graph isomorphism problem은 두 그래프가 위상수학적으로(topologically) 같은지를 알아보는 NP-hard 문제로, 아직 다항 시간(polynomial-time) 알고리즘이 존재하지 않는다. (Graph isomorphism problem, WL test에 대한 더 자세한 내용은 링크를 참조하자.)
Weisfeiler-Lehman test (WL test)는 이 문제를 (그나마) 효율적으로 풀 수 있는 방법으로, 간단히 다음 과정을 거쳐 graph의 종류를 구분하는 알고리즘이다.
- 어떤 node의 label과 그 노드의 이웃 노드의 label을 합한다(aggregation).
- Hash table을 사용하여 합한 label(key)을 새로운 (unique한) label(value)으로 지정한다.
위 과정을 반복한 후, 두 그래프의 노드의 label이 다르면 non-isomorphic (위상학적으로 같지 않은) graph로 본다.
이후에 이를 기반으로 WL subtree kernel이라는 개념이 등장했다(color refinement algorithm). WL subtree kernel은 graph의 유사도를 측정하는 것으로, WL test의 각 iteration에서의 node label에 color라는 값을 할당하여 이를 그래프의 feature vector(=color count vector, rooted subtree)로 사용한다.
즉,
따라서 graph feature는 해당 graph의 서로 다른 rooted subtree를 세는 vector로 볼 수 있다. (rooted subtree도 결국 vector로 나타날 것이다.)
Graph Isomorphism Network (GIN)

그림에서 rooted subtree는 어떤 노드의 feature이다. (그 노드를 root로 하여 그 이웃 노드들과의 구조 정보를 표현)
GNN은 이러한 rooted subtree 구조를 반복적으로 update한다.
각 feature vector마다 unique한 label
그냥 set이 아니라 multiset인 이유는, 이웃 노드 중 서로 다른 노드가 같은 feature vector를 가질 수 있는데, 이 경우 multiset에는 같은 feature vector가 여러 번 등장하게 되기 때문이다.
Multiset은 2개 element를 갖는 tuple로 다음과 같이 정의할 수 있다.
여기서
이에 따라, GNN의 representational power가 강하다는 것은 곧 두 노드의 subtree 구조가 같을 때만 GNN의 맵핑에 의해 두 노드의 embedding이 같아진다는 것이다.
이를 분석하기 위해서는 subtree는 이웃 노드, 즉 multiset에 의해 재귀적으로 정의되므로, GNN이 두 multiset을 같은 embedding(=representation)으로 맵핑하는지를 알아보면 될 것이다. 다시말해, GNN의 representational power가 최대라면, 서로 다른 두 이웃 노드(multiset)를 절대 같은 representation으로 맵핑하지 않을 것이다. 이는 곧 aggregation 과정이 injective(일대일 대응)하다는 의미이다.
Building Powerful Graph Neural Networks
Maximally Powerful GNN
가장 강력한 GNN이 되기 위해서는 다음 정리를 만족해야 한다.
GNN에 대해, layer 수가 충분할 경우, 가 WL test 결과 non-isomorphic한 graph 를 서로 다른 embedding으로 맵핑할 조건은 다음과 같다.
a)는 다음 식을 반복하며 node feature를 aggregate 및 update한다.
여기서 함수는 multiset(이웃 노드)에 적용되며, 는 일대일 함수이다.
b)의 graph-level readout 함수는 node features 의 multiset에 적용되며, 일대일 함수이다.
Input node feature가 셀 수 있는 경우에 injectiveness(일대일 대응) 개념이 잘 적용되므로, 이 경우만 다루도록 한다. (셀 수 없다는 것은 node feature가 연속적이라는 의미이다.)
Input feature space
여기서
여기서, GNN을 사용했을 때의 이점을 알 수 있다. GNN을 사용하면 서로 다른 그래프를 구별하는 것 뿐만 아니라 그래프의 구조적 유사성 (similarity of graph structures)을 알아낼 수 있다.
WL test에서는 node feature vector가 one-hot eoncding이므로 subtree의 similarity까지는 알 수 없는데, GNN에서는 subtree를 저차원 공간으로 임베딩하는 것을 학습하기 때문에 위 정리를 만족시키면서 WL test를 진행할 수 있다.
유사성을 알면 서로 다른 graph에서 subtree(neighbor 구조 정보)가 같은 경우가 드문 경우, edge feature와 node feature 중 noise가 있는 경우에 유용하다.
Computing Node Feature in GIN
이제
GIN은 위에서 소개한 정리를 만족하면서도, 구조가 간단한 아키텍쳐이다.
먼저, 논문에서는
Deep multisets란 neural network를 통해 전체 multiset function을 parameterize하는 방법이다.
그리고 multiset function
Aggregation 과정을 위 식을 통해 노드와 그 노드의 이웃 노드(multiset)에 대한 universal function으로 표현할 수 있고, 이에 따라 위에서 언급한 정리에서의 조건 중 injectiveness conidtion(a)를 만족시킬 수 있다.
그리고 aggregation 과정들 간의 formulation을 input feature vector, 즉 어떤 node representation인
(각 pair 에 대해 유일)
최종 식은 input feature, 즉 주어진 노드 중 하나의 representation
위 식의
실제 구현 시에는
따라서 GIN의 node representation은 다음과 같은 식으로 update된다.
GNN에서의
비교해보면 GIN에서
Graph-level READOUT of GIN
GIN에서 학습한
한 가지 중요한 사실은, iteration이 증가함에 따라 node representation과 이에 대응하는 subtree structure가 점점 정제되고, global해진다는 것이다. (node representation이 갖게 되는 이웃 노드의 범위가 늘어나므로)
충분한 반복 횟수가 좋은 representational power의 핵심이긴 하지만 반복 횟수가 적을 때의 feature가 generalize 성능이 더 좋을 수도 있다.
따라서 모든 구조 정보를 고려하기 위해, 모델의 모든 iteration에서의 정보를 사용한다. 수식으로 표현하자면, 기존 readout 함수는 마지막 iteration만 고려하여
Multiset에 대해 sum aggregator를 사용하는 이유
Aggregation 과정에서 왜 sum aggregator를 사용할 때가 가장 representational power가 좋은지 알아보자.

왼쪽과 같은 input multiset(합쳐질 이웃 노드)이 들어왔다고 가정하면, sum aggregator는 전체 multiset을 그대로 합치지만, mean은 요소들의 비율이나 분포 정보를 갖게 되고(파랑:빨강 개수가 4:2였으므로 2:1만 반영됨), max는 겹치는 요소 중 작은 것들을 모두 무시해버린다.

다라서 위 예시와 같이, 분명 다른 graph 구조이지만 mean 또는 max aggregator를 사용하면 똑같다고 취급하는(즉, 서로 다른 노드를 embedding space의 같은 위치로 맵핑해버리는) 경우가 발생하게 된다.
그 결과 representational power가 약해지는 것이다.
최근댓글