GNN 학습

최창우·2022년 12월 16일
0

GNN

목록 보기
3/4
post-thumbnail

📌목차

1. GNN 모델들 학습 이해하기
2. RecGNNs 학습 이해
3. Spectral 과 Spatial
4. Spatial Conv 자세히 이해하기

📕 GNN 모델들 학습 이해하기

이전 포스팅에서 언급했듯이, GNN 학습방법은 크게 4가지로 구성된다. 이 중 첫번째로 RecGNNs 에 대해 알아보자

Graph의 특징이 무엇인지 알고, Graph를 Encoding 시 고려할 점을 이해해야함

  1. Graph 특징
    • 순서가 없음
    • 어떤 Node가 어떤 Edge를 가지는지에 따라 구조가 천차만별
    • 각 Node마다 연결된 Edge가 여러개 (개수가 노드마다 서로 상이함)
  2. Graph를 Encoding 시 고려할 점
    • Edge를 따라서 정보를 어떻게 전달할것인가?
    • 병렬적으로 동시에 정보가 전달된다. (시간순이 아님)
    • Target node는 다른 다수의 노드로부터 영향을 받는다.

📕 RecGNNs 학습 이해

RecGNNs는 가장 초기의 GNN 모델 학습형태이다.

Node의 State를 임계값에 도달할때까지 업데이트하는 방식

학습/추론 대상 : Node
학습 업데이트 식

  • l로 시작하는것 : Feature Vector
  • x로 시작하는것 : State
  • x_n : 점 n의 상태
  • l_n : 점 n의 feature vector
  • l_con : 점 n과 연결된 선들의 feature vector
  • x_nen : 점 n과 연결된 점들의 상태
  • l_nen : 점 n과 연결된 점들의 feature vector

현재는 잘 쓰이지 않는 형태임 (이유는 아래와 같음)

  • equilibrium point의 불안정성
  • BPTT(Back-Propagation Through Time)의 계산 복잡도

📕 Spectral 과 Spatial

깊은 내용은 다음에 정리하고 개념만 이해하기

📖 Spectral

Spectral(스펙트럼) 이라는 단어에서 알 수 있듯이,
Spectral ConvGNNs는 신호처리 개념을 그래프에 적용한것이다.

Spectral Convolutional Network

  • 그래프 신호 처리 이론을 기반으로 고안
  • Fourier Transform을 활용하여 Convolution 연산 수행
  • 다른 방법론들보다 더 수학적 기반을 가지고 있음 (이론적기반 튼튼)
  • 효율성/일반화/유연성 측면에서 구리다.

효율성/일반화/유연성 측면에서 구린 이유

  1. Eigenvector를 사용한다.
  • 연산시간 많이 소요
  • 배치단위 학습 안됨
  1. Fourier Basis를 기반으로 함
  • 새로운 데이터 적용시 기존에 가지고 있던 eigenbasis가 변해서 일반화가 떨어짐
  • Undirected Graph에 제한되어 있기 때문에 다른 graph에는 사용못함

📖 Spatial

Computer Vision의 CNN의 방식을 사용하는 것

  • 기존 CNN 개념 : Convolution Filter가 지나가면서 각 셀들에 대해 Convolution 연산 수행함
  • ConvGNNs 개념 : 대상 Node와 연결된 이웃 Node들의 정보를 가중합함으로써 Convolution 효과를 만들어 냄

📕 Spatial Conv 자세히 이해하기

Conv의 주요 특징

  • 가중치 공유 (Filter의 가중치)
  • Local Feature 추출

📖 가중치 공유

그림 위에서처럼 그래프가 구성되어있다 가정하자.

  • 노드 : 0,1,2,3,4
  • 노드간의 관계 : 인접행렬(A)
  • 각 노드의 Feature의 행렬 : 특징행렬(H)
  • 학습되는 가중치 행렬(W)
  • H와 W를 곱하게되면, W의 각 열은 특징행렬에 동일하게 곱해지게된다. 그림으로 봐도 알 수 있듯이, W의 첫번째 열이 H 행렬의 각 행에 동일하게 곱해진다. 즉, 가중치가 동일한값이 곱해지는것을 알 수 있다.

📖 Loccal Feature 추출

특징행렬(H)와 가중치행렬(W)를 곱하여 얻은 행렬을 인접행렬과 곱해주게되면,
해당 노드에 인접한 노드에 대한 정보에 대해서만 1을 곱하기 때문에, 인접한 노드의 정보에 의해서만 학습이 진행된다.

📖 Readout Layer

CNN에서 Convolution Layer를 모두 통과한 뒤, FC Layer를 통과한다.
Convolution을 전부 통과한 Feature Map에 대해 다시한번 연산을 해줘서
뒤죽박죽 얽혀있는 Feature 정보들을 결합하여 최종 출력을 내기 위함.

Readout Layer는 CNN에서 FC Layer와 동일한 역할을 수행한다.

  • 마지막 Graph Conv 결과를 MLP 통과시켜 행렬의 모든값을 합치게 됨

📚 Reference

https://tootouch.github.io/research/gnn_summary/
https://medium.com/watcha/gnn-%EC%86%8C%EA%B0%9C-%EA%B8%B0%EC%B4%88%EB%B6%80%ED%84%B0-%EB%85%BC%EB%AC%B8%EA%B9%8C%EC%A7%80-96567b783479
https://velog.io/@whattsup_kim/Graph-Neural-Networks-%EA%B8%B0%EB%B3%B8-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
https://ganghee-lee.tistory.com/27

profile
유능한 개발자가 되고 싶은 헬린이

0개의 댓글