그래프의 노드를 저차원 벡터로 변환하여 원본 구조를 보존하면서 분석을 용이하게 하는 기법.
해당 논문은 Semantic scholar에 검색하면 바로 나온다.


해당 그림은 본 논문 중 일부 Figure를 발췌한 것이다. 개인적으로 random walk-based graph embedding기법에 대한 파이프라인을 굉장히 잘 표현한 것 같다.
Overview of graph embedidng methods부분에는 그래프 임베딩 기법을 3가지의 큰 카테고리로 나눈다.
- 행렬 분해 기반 (Matrix Factorization-Based)
ex) Laplacian Eigenmaps, GraRep, HOPE
--> 고차원 인접행렬을 분해하여 저차원 공간에서 노드 표현을 학습하는 방식으로 대규모 그래프에는 확장성이 낮음
- 랜덤 워크 기반 (Random Walk-Based)
ex) DeepWalk, Node2Vec, LINE
--> 임의 보행(random walk)로 생성된 노드 시퀸스를 사용하여 Word2Vec(특히 Skip-Gram)기법을 적용해 임베딩을 학습
Node2Vec은 BFS(너비우선탐색)과 DFS(깊이우선탐색)의 균형을 조절하여 더 나은 표현 학습이 가능
- 딥러닝 기반 (Deep Learning-Based)
ex) SDNE, GCN (Graph Convolutional Networks)
--> 신경망을 활용해 비선형적인 관계까지 학습 가능.
GCN은 노드 특징(feature)과 그래프 구조를 결합하여 학습할 수 있음.
ex) KG2E (knowledge graph gaussian embedding), Graph2Gauss(G2G), DVNE (Deep Variational Network Embedding)
-노드를 단일 벡터가 아닌 다변량 (Gaussian 분포)로 모델링하여 임베딩의 불확실성(uncertainty)를 추정
-확률 분포를 활용하여 임베딩된 공간에서 노드 간 유사도를 더욱 정교하게 측정
-그래프가 시간에 따라 변화하는 경우(ex, 소셜 네트워크, 논문 인용 네트워크), 정적인 방법을 적용하기 어려움
-정적 스냅샷 기반 (snapshot-Based): 시간 간격마다 그래프를 고저오딘 여러개의 스냅샷으로 나누어 학습
-연속시간 기반 (Continuous-Time): 그래프의 변화가 연속적으로 발생하는 경우를 모델링하여 실시간 업데이트 가능

Stanford University에서 제공하는 Graph embedding에 관해서 굉장히 유용한 온라인 강의를 찾아 내었다. 코랩으로 직접 코딩으로 실습 가능하다.
참고링크:
web.stanford.edu
Graph 실습 코랩
스탠포드 대학교에서 제공하는 강의이다보니 Mircrosoft, IBM 글로벌 빅테크 연구소에서 게재한 우수한 논문들이 상당히 많다. 해당 논문들을 꼼꼼히 정리한다면 많은 지식들을 쌓을 수 있을 것 같다.