GCN (Graph Convolutional Network)

CODA·2022년 11월 16일
0

본 게시물에서 이용한 자료 출처는 아래 링크에 있습니다

1. What is GCN

  • 이전 게시물에서 GNN에 대하여 몇번 다룬적이 있다. 해당 게시물에서 GCN에 대해 상세히 다루어 보겠다.
  • GCN은 Graph Neural Network에 Convolution 연산 아이디어를 추가한 개념이다

  • 위 이미지는 GCN의 Overall Structure이다
  • input으로 인접행렬 A와 노드정보행렬 X를 받는다 (Adjacency Matrix, Node Feature Matrix)
  • CNN이 convolution층을 통과시키며 더 고차원적인 feature map으로 update 해나가는 것처럼, GCN도 graph는 동일하지만 각 노드가 갖는 차원의 정보를 점점 고차원으로 만드는 과정인셈이다

2. Input

  • 인접행렬 : 각 노드가 서로 인접한경우 1, 그렇지 않은경우 0으로 표기한 행렬이다
    • 다만 연산할땐 이전층에서 자기자신에 대한 정보를 받기위해 인접행렬에서 자기자신에 해당하는 값인 대각선 값을 0이아닌 1로 받는다
    • 다음층으로 통과시키더라도 이전의 자신 정보를 포함하여 넘겨줘야 고차원값을 얻어내는 의미가 있으므로
  • 피쳐행렬 : 각 노드가 갖는 피쳐(칼럼)값을 기입한 행렬이다. 그러므로 값이 0,1일 필요는없다
    • X i,j : 노드 i의 j번째 칼럼 값
    • GCN Layer를 거치면서 각 노드안에서 갖는 피쳐벡터 정보를 update 하는 것이므로, 결국 피쳐행렬을 update해나가는 것.

3. How to update hidden state


4. Readout Layer

  • 노드와 이웃정보는 그대로더라도 그래프를 회전하면 인접행렬의 정보가 달라질 수 있다
  • 이를 방지하기 위해 맨 마지막 층의 H 행렬에 MLP를 씌워서 Permutaion Invariance가 되도록 해준다

5. Advanced Technique

Attention + GCN

  • 현재의 노드정보를 다음층으로 넘겨줄때 기존에는 같은 비율 (가중치 모두 1)로 진행하였지만 이 비율도 다 다르게하고 학습의 대상으로 삼는다
profile
금융권에 가고싶은 김코다입니다. 취업을 하면 기타치며 조르바처럼 살고파요.

0개의 댓글