[GNN] 논문 정리 (~ing)

GNN
Author

김보람

Published

July 18, 2023

GNN으로 할 수 있는 것

  1. Node Classification
  • Node embedding을 통해 점 분류 (인용 네트워크, Reddit게시물, Youtube동영상)
  1. Link Prediction
  • 그래프 점들 사이에 관계 파악 및 두 점 사이 연관성 예측
  1. Graph Classification
  • 그래프 전체 여러가지 카테고리로 분류

GNN변천사

출처: https://tootouch.github.io/research/gnn_summary/

https://arxiv.org/pdf/1901.00596.pdf

GCN

REF

https://wonbae.github.io/2021-02-26-Graph9-GNN/

https://thejb.ai/comprehensive-gnns-3/

https://github.com/heartcored98/Standalone-DeepLearning/tree/master

https://ahjeong.tistory.com/15

논문 종류

  1. Recurrent Graph Neural Network

  2. Spatial Convolutional Network

  3. Spectral Convolutional Network

GCN변천사

1

1-1

https://arxiv.org/ftp/arxiv/papers/1812/1812.08434.pdf

Propagation Modeule - Recurrent Operator - Convergence - GNN

Graph neural networks: A review of methods and applications

  • popular platforms for graph computing |Platform|Link|Reference| |—|—|—| |PyTorch Geometric |https://github.com/rusty1s/pytorch_geometric| Fey and Lenssen (2019)| |Deep Graph Library |https://github.com/dmlc/dgl |Wang et al. (2019b)| |AliGraph |https://github.com/alibaba/aligraph |Zhu et al. (2019a)| |GraphVite |https://github.com/DeepGraphLearning/graphvite |Zhu et al. (2019b)| |Paddle Graph Learning |https://github.com/PaddlePaddle/PGL|| |Euler |https://github.com/alibaba/euler|| |Plato |https://github.com/tencent/plato|| |CogDL |https://github.com/THUDM/cogdl/|| |OpenNE h|ttps://github.com/thunlp/OpenNE/tree/pytorch||

1-2

https://ieeexplore.ieee.org/document/4700287

@ARTICLE{4700287,
  author={Scarselli, Franco and Gori, Marco and Tsoi, Ah Chung and Hagenbuchner, Markus and Monfardini, Gabriele},
  journal={IEEE Transactions on Neural Networks}, 
  title={The Graph Neural Network Model}, 
  year={2009},
  volume={20},
  number={1},
  pages={61-80},
  doi={10.1109/TNN.2008.2005605}}

2

2-1

https://arxiv.org/abs/1609.02907

‘Semi-Supervised Classification with Graph Convolutional Networks’

2-2

참고자료

  1. F. Scarselli, M. Gori, “The graph neural network model,” IEEE Transactions on Neural Networks, 2009
  • https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4700287
  1. Z. Wu, S. Pan, F. Chen, G. Long, C. Zhang, Philip S. Yu, “A Comprehensive Survey on Graph Neural Networks”, arXiv:1901.00596
  • https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9046288
  1. T. N. Kipf and M. Welling, “Semi-supervised classification with graph convolutional networks,” in Proc. of ICLR, 2017
  • https://arxiv.org/pdf/1609.02907.pdf%EF%BC%89
  1. J. Gilmer, S. S. Schoenholz, P. F. Riley, O. Vinyals, and G. E. Dahl, “Neural Message Passing for Quantum Chemistry”, in Proc. of ICML, 2017
  • http://proceedings.mlr.press/v70/gilmer17a/gilmer17a.pdf
  • 이건 화학적 분자구조를 뉴럴로 한거같은데,, 약간 참고자료용??
  1. D. Xu, Y. Zhu, C. B. Choy, and L. Fei-Fei, “Scene graph generation by iterative message passing,” in Proc. of CVPR, 2017
  • https://openaccess.thecvf.com/content_cvpr_2017/papers/Xu_Scene_Graph_Generation_CVPR_2017_paper.pdf
  • 시각적 기반이 되는 이미지 그래픽 구조
  • 입력 이미지로부터 구조화된 장면 표현하는 모델
  1. J. Johnson, A. Gupta, and L. Fei-Fei, “Image generation from scene graphs,” in Proc. of CVPR, 2018
  • 그래프 모델을 사용한 이미지 생성
  1. D. Teney, L. Liu and A. van den Hengel, “Graph-Structured Representations for Visual Question Answering”, in Proc. of CVPR, 2017

  2. B. Sanchez-Lengeling, J. N. Wei, B. K. Lee, R. C. Gerkin, A. Aspuru-Guzik, and A. B. Wiltschko, “Machine Learning for Scent: Learning Generalizable Perceptual Representations of Small Molecules”, arXiv: 1910.10685

  3. R. van den Berg, T. N. Kipf, and M. Welling, “Graph Convolutional Matrix Completion”, arXiv:1706.02263

Alet, Ferran, et al. “Graph element networks: adaptive, structured computation and memory.” International Conference on Machine Learning. PMLR, 2019.

  • spatial processes가 없는 공간

Allamanis, Miltiadis, Marc Brockschmidt, and Mahmoud Khademi. “Learning to represent programs with graphs.” arXiv preprint arXiv:1711.00740 (2017).

그래프 신경망 입문 도서(Introduction to Graph Neural Networks)

  • 지은이: 즈위안 리우, 지에 저우

1. 그래프 합성곱 네트워크

(1) 스펙트럼 방법(여러 가지 파동들의 집합)

출처: https://tootouch.github.io/research/gnn_summary/

- Spectral Convolutional Neural Network (Spectral CNN) 스펙트럼 네트워크

(Denton, Emily L., et al. “Exploiting linear structure within convolutional networks for efficient evaluation.” Advances in neural information processing systems 27 (2014).)

  • 푸리에 영역에서 그래프 라플라시안의 고유 분해 계산

xR,θRN,gθ=diah(θ)

gθ×x=Ugθ()UTx

L=IND12AD12=UUT

U: L의 고유벡터로 이루어진 행렬, : L의 고윳값으로 이뤄진 대각행렬

- Chebyshev Spectral Convolutional Neural Network(ChebNet)

  • 논문링크

  • 거리가 K이하인 범위를 다루는 합성곱을 사용해 합성곱 신경망을 정의함->라플라시안 고유벡터 전부 계산 안해도 된다.

gθ=i=0KθiTi(~)

  • 체비쇼프 다항식

Tk(x)=2xTk1(x)Tk2(x)

T0(x)=1,T1(x)=x

- Graph Convolutional Network (GCN)

  • (https://arxiv.org/pdf/1706.02263.pdf)

  • https://arxiv.org/abs/1609.02907

  • ChebNet의 식에서 K=1,λmax=2로 근사

gθ×xθ0x+θ1(LIN)x=θ0xθ1D12AD12x

  • 위 식에서 θ=θ0=θ1 이라고 가정(오버피팅 방지)

gθ×xθ(IN+D12AD12)x

- AGCN

  • Li, Ruoyu, et al. “Adaptive graph convolutional neural networks.” Proceedings of the AAAI conference on artificial intelligence. Vol. 32. No. 1. 2018

(2) 공간 방법

  • 공간적으로 가까운 이웃 노드에 직접 적용하는 합성곱 정의

- 뉴럴 FPS

논문:Convolutional Networks on Graphs for Learning Molecular Fingerprints

다른 차수의 노드에 다른 가중치 행렬 사용

x=hvt1+i=1|Nv|hit1

hvt=σ(xWt|Nv|)

hvt: t번째 층에서 노드 v의 임베딩

Nv: 노드 v의 이웃 집합

Wt|Nv|: t번째 층에서 차수가 |NV|인 노드의 가중치 행렬

차수별로 다른 행렬을 사용하므로ㅗ 노드 차수가 많은 큰 규모의 그래프에서 사용할 수 없다.

- PATCHY-SAN

논문:Learning Convolutional Neural Networks for Graphs

1. 노드 선택

  • 모든 노드에서 단계 진행하지 않고 그래프 레이블링 통해 노드의 순서를 정하고 그 순서를 기반으로 노드를 W개 선택

2. 이웃 모으기

  • 각 단계에서 선택한 노드 각각을 기준으로 수용 영역을 만든다.

  • 너비 우선 선택(breadth-first search)을 통해 k개를 뽑는다.

  • 거리가 1인 노드를 고르고 부족하면 거리를 늘려서 가까운 노드 k개를 고른다.

3. 그래프 정규화

  • 수용 영역에 있는 노드의 순서를 매겨서 순서가 있는 그래프 공간을 벡터 공간으로 바꾼다.

  • 구조적으로 비슷한 역할을 하는 노드는 다른 그래프에 있어도 비슷한 위치로 여긴다.

4. 합성곱 구조

-정규화된 이웃을 수용 영역으로 노드와 에지 속성을 채널로 한다.

- Diffusion-Convolutional Neural Network(DCNN:확산 합성곱 신경망)

논문: Diffusion-Convolutional Neural Networks

추이행렬(transition matrix) 사용: 노드의 이웃 정의

P: 그래프 인접행렬 A로부터 얻은 차수 정규화 추이행렬

P: 행렬 P의 거듭제곱근수 {P,P2,,PK}로 이뤄진 N×K×N(N은 노드수) 텐서

H=σ(WcPX)

X: N×F입력 특징 텐서

XP를 곱해서 각 원소는 K홉 그래프 확산을 뜻하는 K×F 행렬인 확산 합성곱 표현으로 바뀜

- DGCN

논문: Dual Graph Convolutional Networks for Graph-Based Semi-Supervised Classification

  • 그래프의 부분 일관성과 전체 일관성 모두 고려

  • 합성곱 그래프 2개와 비지도 손실 함수 2개 사용

- 첫번째 합성곱 네트워트

Z=D~12A~D~12XΘ

A~=A+IN

C: 입력 채널 수

XRN×C: 신호

ΘRC×F: 필터 파라미터 행렬

ZRN×C: 합성곱 적용한 신호 행렬

  • 가까운 노드는 비슷한 레이블을 가질 가능성이 높다는 것을 의미하는 부분 일관성: ConvA

- 두번째 합성곱 네트워크

  • 인접행렬 대신 양의 점별 상호 정보(PPMI:Positive Pointwise Mutual Information) 행렬

H=σ(DP12XPDP12HΘ)

XP: PPMI행렬

DP: XP의 대각행렬

  • 비슷한 내용을 가진 노드는 비슷한 레이블을 가질 가능성이 높다는 것을 의미하는 전체 일관성: ConvP

- 손실 함수1

L=L0(ConvA)+λ(t)Lreg(ConvA,ConvP)

λ(t): 두 손실 함수의 중요성 조절하는 가중치

L0(ConvA): 주어진 노드 레이블에 대한 지도 손실 함수

  • 크로스 엔트로피 에러를 사용해 L0(ConvA) 계산

L0(ConvA)=1|yL|lyLi=1cYl,iln(Z^l,iA)

yL: 학습 데이터의 인덱스 집합

Y: 정답값

- 손실 함수2

Lreg(ConvA,ConvP)=1ni=1n||Z^i,:PZ^i,:A||2

- 모델 구조

- LGCN

논문:Large-Scale Learnable Graph Convolutional Networks

Learnable Graph Convolutional Network: 학습 가능한 그래프 합성곱 네트워크

https://github.com/HongyangGao/LGCN

:학습 가능한 그래프 합성곱 층(LGCL:Learnable Graph Convolutional Layer)+부분 그래프 합성 전략

- LGCL

  • 관련 높은 k개의 특징 요소를 얻기 위해서 노드의 이웃 행렬에 최대 풀링을 적용 후 1차원 CNN을 적용해 은닉 표현 계산

  • 전파단계

H^t=g(Ht,A,k)

Ht+1=c(H^t)

A: 인접행렬

g(): 가장 큰 노드 k개 뽑는 연산

c(): 일반적인 1차원 CNN

- 예시

??? 예시를 봐도 잘 모르겠다..

- MoNET

논문:Geometric deep learning on graphs and manifolds using mixture model CNNs

과거 결과들을 일반화하는 모델

- 예시

  • GCNN(geodesic CNN)

  • ACNN(anisotropic CNN)

  • GCN

  • DCNN

- 가중치 함수

Dj(x)f=yNxwj(u(x,y))f(y)

노드와 이웃 간의 가짜 좌표 u(x,y)를 계사나고 이를 이용해 가중치 함수를 정의한다.

노드의 이웃에 각각 가중치를 두는 방법

uw(u)를 어떻게 정의하는지에 따라 모델을 정의할 수 있다.

- GraphSAGE

논문:Representation learning on graphs: Methods and applications

논문:Inductive representation learning on large graphs

근처에 있는 노드의 특징을 샘플링하고 모아서 임베딩 계산

- 전파 단계

hNvt=AGGREGATEt({hut1,uNv})

hvt=σ(Wt[hvt1||hNvt])

이웃 노드를 모두 사용하지 않고 정해진 개수만 골고루 샘플링

GRN

Gated Graph Neural Network(GGNN:게이트 그래프 신경망)

논문:Gated graph sequence neural networks

https://www.cs.toronto.edu/~yujiali/files/talks/iclr16_ggnn_talk.pdf

https://github.com/chingyaoc/ggnn.pytorch

https://katefvision.github.io/LanguageGrounding/Slides/27.pdf

정해진 횟수에 대한 순환 신경망을 풀고 시간을 통해 역전파해서 그레이디언트 계산

Gated Graph Sequence Neural Network(GGS-NN)

Tree-LSTM

논문:Improved semantic representations from tree-structured long short-term memory networks)

1. Child-Sum Tree-LSTM

h~vt1=kNvhkt1

입력 게이트 ivt=σ(Wixvt+Uih~vt1+bi)

망각 게이트 fvkt=σ(Wfxvt+Ufhkt1+bf)

출력 게이트 ovt=σ(Woxvt+Uoh~vt1+bo)

uvt=tanh(Wuxvt+Uuh~vt1+bu)

메모리 셀 cvt=ivtuvt+kNvfvktckt1

은닉 상태 hvt=ovttahn(cvt)

2. N-ary Tree-LSTM

  • 트리의 각 노드 자식 수가 K보다 작고 자식들에게 1부터 K까지 순서를 매길 때 사용

ivt=σ(Wixvt+l=1KUlihvlt1+bi)

fvkt=σ(Wfxvt+l=1KUklfhblt1+bf)

ovt=σ(Woxvt+l=1KUtohvtt1+bo)

uvt=tanh(Wuxvt+l=1KUluhvlt1+bu)

cvt=ivtuvt+l=1Kfbltcvlt1

그래프 LSTM

Sentence-LSTM(S-LSTM)

텍스트를 그래프로 변환하고 그래프 LSTM을 이용해 학습

논문:Sentence-state LSTM for text representation

음.. 이건 약간 자연어 처리 쪽..

그래프 어텐션 네트워크

GAT

Graph Attention Networkx

GaAN

Graph Neural Network-based Graph Outlier Detection: A Brief Introduction

ref: https://www.tigergraph.com/blog/graph-neural-network-based-graph-outlier-detection-a-brief-introduction/

(1)구조적이상치 (2)상황적이상치