1.1 - Why Graphs
그래프란?
⇒ a general language for describing and analyzing entities with relations/interactions
⇒ 서로 관계/상호작용하는 entity들을 설명하고 분석하기 위한 언어라고 할 수 있음 (여기서 entity란 정보의 세계에서 의미있는 하나의 정보 단위)
- 그래프 예시
- event graphs
- computer networks
- disease pathways
- food webs
- particle networks
- underground networks
- social networks
- economic networks
- communication networks
- citation networks
- internet
- networks of neurons
- knowledge graphs
- regulatory networks
- scene graphs
- code graphs
- molecules
- 3D shapes
⇒ 그래프로 세상에 일어나는 모든 현상과 구조들을 설명할 수 있다(broadly applicable).
(관심있는 분야의 현상을 그래프로 표현하여 딥러닝 모델 구조로 변환할 수 있는 능력이 있다면…)
e.g) 분자 구조, 3D 이미지 모형(voxel), 먹이사슬, 소셜 네트워크 등
(graph와 network의 차이?)
그래프에서 얻을 수 있는 정보 유형
- 데이터 포인트 간의 구성(organization)과 연결
- 유사한 데이터 포인트 간의 밀접성(similarity)
- 데이터 포인트 간의 연결들이 이루는 그래프 구조
그래프가 갖는 구조를 어떻게 활용해 나은 예측을 할 수 있을까?
⇒ 현상을 명시적(explicitly)으로 잘 반영한 그래프 모델링이 중요하다!
그래프 ML이 더 어려운 이유?
⇒ arbitrary size and complex topology
⇒ spatial locality(공간 지역성)가 없다
⇒ 이미지나 텍스트 인풋의 경우 어느 한 데이터포인트로부터 다른 데이터 포인트 간 상대적 위치가 정해져있다(e.g 상하좌우). 하지만, 그래프의 경우 축이 되는 데이터 포인트가 존재하지 않는다.
그래프를 사용한 딥러닝
⇒ 인풋으로는 그래프를 받고, 아웃풋으로는 아래와 같은 형식(ground truth도 동일한 형식)이 가능하다. >
- node-level
- edge-level
- graph/subgraph generation
- graph/subgraph classification
그래프 딥러닝 모델에서 우리가 바라는 플로우
위 플로우를 거친 좋은 성능의 모델을 만들기 위해서는, 인풋이 현상을 잘 반영한 embedding vector로 변환될 수 있도록 학습하는 것이 중요하다.(Representation Learning)
- 코스 과정동안 배울 그래프 방법들
- traditional methods : graphlets, graph kernels
- node embeddings : DeepWalk, Node2Vec
- Graph Neural Networks : GCN, GraphSAGE, GAT, Theory of GNNs
- Knowledge graphs and reasoning : TransE, BetaE
- Deep Generative Models for graphs
- Applications
1.2 - Applications of Graph ML
그래프 ML은 다양한 태스크 커버가 가능하다
- Node Level(node classification)
example1) protein folding (구글의 알파폴드)
- 배경 : 단백질은 아미노산으로 이루어져있는데, 복잡한 3D 입체 구조의 아미노산 연결 때문에 단백질 구조를 파악하는 태스크는 많게는 1-2년까지 걸린다고 함.
- key idea : spatial graph
- graph : 단백질
- nodes : 아미노산
- edges : 사슬구조
- Edge Level
example1) Recommender system (PinSage)
nodes : users and items
edges : user-item interactions
example2) drugs and side effects
- nodes : drugs & proteins
- edges : interaction
using 2 heterogeneous graphs(drugs & proteins)
⇒ drug A와 B를 함께 썼을 때, 생길 수 있는 interaction(edge)는 무엇인가?
- Community(subgraph) level
example1) Traffic Prediction
- nodes : Road Segments(도로 구간)
- edges : 도로 구간 교차점
⇒ 아웃풋 : 도착 예정 시간
- Graph-level prediction
4-1) graph classification
example1) drug discovery
- nodes : atoms
- edges : chemical bonds
- graph : molecules
⇒ 노드와 에지 정보를 통해 그래프(분자) 예측
4-2) Graph-level generation
example1) drug generation
- nodes : atoms
- edges : chemical bonds
- graph : moelcules
⇒ 새로운 그래프(분자) 생성
example2) physics simulation (graph evolution)
- nodes : particles
- edges : interaction between particles
⇒ t시점 전의 정보로 t시점 이후의 그래프 생성
1.3 - Choice of Graph
그래프 구성요소
objects : nodes, vertices
Interactions : links, edges
system : network, graph
**object와 interactions로 이루어진 데이터 구조 ⇒ graph
그래프로 세상에 일어나는 모든 현상과 구조들을 설명할 수 있다(broadly applicable).
- 표현법에 따라 그래프의 활용방법은 무궁무진하다. 중요한 것은 적절한 표현을 선택하는 것.
- 설명하고자하는 현상을 그래프로 정의하고 싶다면, 먼저 아래 두가지 질문을 하자.
- what are nodes?
- what are edges?
Directed vs Undirected Graphs
’페이스북의 친구와 인스타그램의 팔로우’는 directed와 undirected graph를 이해하기에 좋은 예이다.
Node Degrees (차수)
- undirected graph
- undirected graph의 경우, node degree는 해당 노드에 연결된 에지의 총 갯수
- average degree는 연결된 에지의 총 갯수 곱하기 2(쌍방향 연결이기 때문)를 그래프를 이루는 전체 노드 수로 나눈 값
- directed graph
- directed graph의 경우, 해당 노드로 향하는 in-degree와 해당 노드로부터 뻗어나가는 out-degree로 나눌 수 있다. node degree는 이 in-degree와 out-degree의 합.
Bipartite Graph
- 자주 등장하는 또다른 그래프의 종류는 bipartite graph(이분 그래프)이다.
- 이분 그래프는 2개의 집합 U와 V의 interaction을 나타낸 그래프이다. U와 V는 서로 독립적인 집합이며, 같은 집합의 원소끼리는 연관되지 않는다. e.g) A와 B 간 연결X
- 이분 그래프의 예로는 구매자-구매 아이템 관계 등이 있다.
Folded/Projected Bipartite Graph
- Bipartite 그래프에서 집합 간의 요소들 간의 상관관계가 명시되어있다면 Folded 또는 Projected Bipartite Graph라고 부른다.
(정보에 depth가 생긴다는 의미에서 folded라고 붙인듯하다.)
Adjacency Matrix
- 그래프의 노드 간 연결관계(edge)를 나타낸 매트릭스이다.
- 각 행과 열은 노드의 번수를 의미하고, 0은 연결되지 않음, 1은 연결됨을 의미한다. 만약 3번째 행에 4번째 열이 1이라면, 3번 노드와 4번 노드는 연결되어있음을 의미한다.
- undirect graph라면, 주대각선을 기준으로 adj matrix는 대칭이고, directed graph라면, 대칭이 아닐 수도 있다.
- adjacency matrix는 컴퓨터가 그래프를 이해할 수 있는 형태이지만, 문제는 노드의 수가 수백개에서 수십만개로 늘어나고, 많은 노드들의 연결이 몇 개 없을 때, 메모리 사이즈에 비해 0인 값이 너무 많게되는 문제(sparse)가 발생한다.
Edge List
- Edge List는 그래프를 엣지들의 리스트로 나타낸 값이다.
- 서로 연결된 노드를 짝지어 리스트에 배열한다.
- 그래프가 크고 sparse할 때 유용하다.
Node and Edge Attributes
⇒ 노드와 엣지로 나타낼 수 있는 값들은 어떤 것들이 있을까?
⇒ 그래프에서 어떤 정보들을 얻을 수 있을까?
weight (e.g., frequency of communication)
- 엣지가 0과 1 이외의 값을 갖는다면?
ranking (best friend, second best friend, …)
type (friend, relative, co-worker)
sign (+ / - )
properties depending on the structure of the rest of the graph : Number of common friends
More Types of Graphs
- Connected(undirected) graph
**연결이 부분적으로만 되어 있어도, 그래프는 adjacency matrix에 표현 가능하다.
Connectivity of Driected Graphs
Strongly connected directed graph
- 모든 노드들이 다른 모든 노드들로 방향 상관없이 다다르는 path가 항상 있다면, strongly connected directed graph이다.
Weakly connected directed graph
- 에지 방향을 무시했을 때, 노드 간 전부 연결되어있다면, weakly connected directed graph이다.
Strongly connected components(SCC)
- 그래프에 속한 다른 노드들 전부는 아니지만, 해당 그룹 간의 연결이 한 노드에서 다른 노드로 항상 도달할 수 있다면(strong connection)한다면, 그 그룹을 strongly connected components라고 지칭한다.