본 게시물에서 이용한 자료 출처는 아래 링크에 있습니다
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는 동일하지만 각 노드가 갖는 차원의 정보를 점점 고차원으로 만드는 과정인셈이다
- 인접행렬 : 각 노드가 서로 인접한경우 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)로 진행하였지만 이 비율도 다 다르게하고 학습의 대상으로 삼는다