1. 그래프 노드 임베딩의 필요성
그래프 노드 임베딩
은 그래프의 각 노드를 저차원 벡터 공간으로 매핑하는 과정입니다.
- 이는 그래프 데이터를 기계 학습 알고리즘에 적용하기 쉽게 만들어줍니다.
- 여기서 중요한 질문은 다음과 같습니다.
- 어떤 정보(WHAT)를 우리는 보존(preserve, embed)할 것인가?
- 어떻게 정보(HOW)를 정보를 보존할 것인가?
- 예시:
- 소셜 네트워크에서 각 사용자를 100차원의 벡터로 표현한다고 가정해봅시다.
- 이 벡터는 사용자의 특성(나이, 관심사 등)과 네트워크 내 위치(친구 관계, 커뮤니티 등)를 모두 포함할 수 있습니다.
2. 임베딩 과정
- 임베딩 과정은 크게 네 가지 구성 요소로 이루어집니다:
- 매핑 함수: 노드를 벡터로 변환합니다.
- 정보 추출기: 그래프에서 보존하고자 하는 핵심 정보를 추출합니다.
- 정보 재구성기: 임베딩으로부터 원래 정보를 재구성합니다.
- 목적 함수: 추출된 정보와 재구성된 정보의 유사도를 최대화합니다.
3. 변환적(Transductive) vs 귀납적(Inductive) 방법
출처: https://data-science-notes.tistory.com/1
4. DeepWalk 알고리즘
- DeepWalk 알고리즘은 그래프의 노드를 저차원 벡터 공간으로 임베딩하는 방법입니다.
- 이 알고리즘의 주요 단계를 슈도 코드로 나타내면 다음과 같습니다:
- DeepWalk 알고리즘:
- 입력: 그래프 G, 워크 길이 l, 워크 수 γ, 윈도우 크기 w, 임베딩 차원 d
- 임베딩 벡터 Φ를 랜덤으로 초기화
- γ 번 반복:
- 그래프의 모든 노드 v에 대해:
- RandomWalk(G, v, l)로 워크 생성
- SkipGram(Φ, 워크, w)로 임베딩 업데이트
- 최종 임베딩 Φ 반환
- DeepWalk는 다음과 같이 작동합니다:
- 그래프의 각 노드에서 시작하여 랜덤 워크를 여러 번 수행합니다.
- 생성된 워크를 문장으로 간주하고, Skip-gram 모델을 사용하여 노드 임베딩을 학습합니다.
- 이 과정을 통해 그래프의 구조적 정보를 벡터 공간에 인코딩합니다.
(참고) SKIP-GRAM
5. Node2Vec 알고리즘
- Node2Vec과 DFS(BFS)
- Node2Vec에서 q 값을 낮게 설정하면(q < 1), 워크가 시작 노드로부터 멀어지는 경향이 강해집니다. 이는 DFS(깊이 우선 탐색)와 유사한 동작을 보입니다.
- DFS는 한 경로를 깊게 탐색하다가 막히면 백트래킹하여 다른 경로를 탐색합니다. Node2Vec에서 q를 낮게 설정하면 현재 노드에서 멀리 있는 노드로 이동할 확률이 높아져, DFS와 유사한 깊이 있는 탐색이 가능해집니다.
- 반면, q 값을 높게 설정하면(q > 1) BFS(너비 우선 탐색)와 유사한 동작을 보입니다.
6. GraphSAGE 알고리즘
- GraphSAGE 알고리즘의 슈도코드와 작동 방식은 아래와 같이 정의할 수 있습니다:
- 입력:
- 그래프 G, 노드 특성 X, 깊이 K, 이웃 샘플 크기 S, 가중치 매트릭스 W, 집계 함수 AGGREGATE
- 각 노드 v에 대해:
- hv0=Xv (초기 노드 특성)
- For k = 1 to K:
- 각 노드 v에 대해:
a. Nv=SampleNeighbors(v,S) (v의 이웃 중 S개 샘플링)
b. hNk=AGGREGATE({huk−1 for u∈Nv}) (이웃 특성 집계)
c. hvk=σ(Wk⋅CONCAT(hvk−1,hNk)) (자신과 이웃 특성 결합 후 변환)
- 최종 노드 임베딩 반환:
- zv=hvK
- GraphSAGE의 작동 방식:
- 초기화: 각 노드의 초기 특성을 설정합니다.
- 이웃 샘플링: 각 노드에 대해 고정된 수(S)의 이웃을 무작위로 샘플링합니다. 이는 대규모 그래프에서의 계산 효율성을 위한 핵심 단계입니다.
- 정보 집계: 샘플링된 이웃의 특성을 AGGREGATE 함수를 사용하여 집계합니다. 이 함수는 평균, 최대값, LSTM 등 다양한 방식으로 구현될 수 있습니다.
- 특성 업데이트: 현재 노드의 특성과 집계된 이웃 특성을 결합하고, 가중치 매트릭스를 통해 변환합니다. 이 과정에서 비선형 활성화 함수(σ)를 적용합니다.
- 반복: 위 과정을 K번 반복하여 더 넓은 범위의 이웃 정보를 포함시킵니다.
- 최종 임베딩: K번의 반복 후, 각 노드의 최종 임베딩을 얻습니다.
- GraphSAGE의 핵심은 이웃 샘플링과 집계 과정입니다.
- 이를 통해 대규모 그래프에서도 효율적으로 노드 임베딩을 학습할 수 있으며, 새로운 노드에 대해서도 임베딩을 생성할 수 있는 귀납적 학습이 가능합니다.