이것저것 기록

[graph] GNN의 set aggregator에 대한 기록 본문

Data Science/ML & DL

[graph] GNN의 set aggregator에 대한 기록

anweh 2021. 1. 1. 16:01
  1. GNN의 정의
    • 그래프 형태로 된 데이터를 분석할 수 있는 네트워크
    • 입력데이터: 그래프의 구조, 노드, 엣지, 각 노드와 엣지가 가지고 있는 feature
    • 목적: 그래프에 있는 노드 사이의 관계를 모델링하고, 그에 대한 representation을 생성하는 것 --> 그러기 위해선 임의의 그래프 G가 들어왔을 때 해당 그래프를 하나의 representation으로 표현하기 위한 임베딩을 해야한다. 입력데이터: 그래프
  2. GNN의 구조
    • GNN의 레이어에서 각 노드들은 그래프 상 이웃 노드들의 정보와 자기 자신의 정보를 이용해 임베딩 한다.
    • 첫 번째 레이어에서는 해당 노드의 피쳐가 임베딩 되고, 그 이후로는 kth-hop의 이웃들의 정보까지 임베딩 되는 것이다. 그래프가 복잡하다면 주변의 주변의 주변의... 이렇게 깊게 들어갈 필요가 있지만, CNN처럼 몇백개의 레이어가 필요하지는 않다고 한다.
  3. GNN에서 Set이란
    • "We are given a set of neighbor embeddings and must map this set to a single vector." 
    • GNN에서 각 입력데이터로 입력하는 것은 이웃 노드들의 임베딩 (정보)와 해당 노드의 임베딩이다. 여기서 Set라고 표현하는 이유는 CNN이나 RNN과 다르게 GNN에서는 입력데이터들의 순서가 상관 없기 때문이다. CNN을 예로 들어보면 이미지의 패치 하나하나의 순서가 유의미하다. 하지만 그래프에서는 노드들의 입력에 순서가 상관 없다. 그렇기 때문에 Set이라고 하는 것이다.  
    • 이러한 GNN 입력데이터의 특성 덕분에 다른 인공신경망과는 다소 다른 AGGREGATE 함수가 필요하다.
      • "There is no natural ordering of a nodes' neighbors, and any aggregation function we define must thus be permutation invariant." 
  4. GNN에서 Set Aggregator란
    • "At each iteration of the GNN, the AGGREGATE function takes as input the set of embeddings of the nodes in u's graph neighborhood N(u) and generates a message N(u) based on this aggregated neighborhood information." 
    • AGGREGATE은 내가 아닌 내 이웃의 정보들을 조합해서 하나의 메세지로 만들어, 나에게 전달하게 해주는 함수이다. 
    • CONCAT과 헷갈리지 말자! CONCAT은 AGGREGATE된 이웃들의 정보와 나 자신의 정보를 합치는 작업을 하는 것이고, AGGREGATE은 내 이웃들의 정보만! 합치는 것이다. 
    • GNN은 CONCAT과 AGGREGATE의 종류에 따라 이름이 엄청나게 많다. 네트워크의 목적과 입력데이터의 특성에 따라 해당 함수들이 달라지기도 한다. 

CONCAT과 AGGREGATE의 차이

 

Comments