Graphs are a general language for describing and analyzing entities with relations/interactions
: 그래프는 객체의 관계 및 상호작용을 기술하고 분석하기 위한 언어
그래픽 구조로 나타낼 수 있는 다양한 도메인
관계형 구조를 갖는 도메인은 두가지로 표현됨
다양한 네트워크 및 자연그래프는 관계구조를 캡쳐하기 위해 그래프로 모델링됨
관계형 구조의 이점 : 복잡한 도메인을 관계형 구조로 표현, 이는 모델이 더욱 좋은 성능과 예측을 가능하게 함
일반적인 딥러닝의 데이터구조는 두가지
그래프(네트워크 구조)의 특징
1. 임의의 크기와 임의의 복잡한 토폴로지 구조
2. 그리드, 텍스트에서의 공간적 국소성(기준점) 없음
ex) 그리드는 위, 아래 / 텍스트는 왼쪽, 오른쪽
3. 기준점(고정적인 노드의 순서)이 없음
그래프를 입력으로 하는 신경망 구조로 예측하기
이러한 신경망 구조를 구축하는 방법
그동안 머신러닝에서는 사람이 feature engineering 단계에 많은 노력을 기울임.
Representation Learning(표현 학습) 은 feature Engineering 단계가 없음
이는 그래프에서 특징을 자동으로 추출하거나 학습하는 것. 그래프가 입력으로 들어오면 알아서 좋은 표현을 학습하여 다음 용도로 사용
-> 다운스트림 머신러닝 알고리즘
Representation Learning 의 방법은 그래프의 노드를 d차원의 벡터로 Embedding 하는 것.
네트워크에서 가깝게 위치한 노드는 임베딩 공간에 가깝게 매핑됨.
목표는 이 매핑함수 F 를 배우는 것.
앞으로 배울것
그래프를 나타내는 전통적인 방법 : Graphlets, Graph Kernels
노드 임베딩 : DeepWalk, Node2Vec
Graph neural Network : GCN, GraphSAGE, GAT, Theory of GNNs
Knowledge Graph and reasoning : TransE, BrtaE
Deep Generative model 구축 방법
생물의학, 과학, 산업에서의 응용
그래프내의 다양한 level에서 수행할 수 있는 작업
생물학에서 아미노산의 서열을 가지고 기본 단백질의 3D 구조를 예측할 수 있느냐 를 해결
"DeepMind의 AlphaFold"
핵심 아이디어는 단백질의 아미노산 서열을 그래프구조로 나타낸 것.
노드 : 아미노산 서열
링크 : 각 서열의 공간적 근접성
모든 아미노산과 각 근접성을 그래프로 나타내서 단백질 접힘을 시뮬레이션 해보고 분자릐 최종 위치를 찾아냄
노드 : 사용자와 아이템
링크 : 사용자와 아이템의 상호작용
그래프 구조로 나타내어 사용자가 미래에 관심을 가질만한 아이템을 추천
핵심 아이디어는 각 노드와 관련된 다른 노드를 관련되지 않은 노드보다 가깝게 Embedding하는 것.
노드 : 약물(삼각형), 단백질(원)
링크 : 상호작용
C, M을 함께 복용하면 r의 부작용이 일어나는 것이 알려져있을 때의 그래프.
부작용 그래프에서 누락된 edge를 예측할 수 있는지
-> 과거에 알려지지 않은 부작용 예측 가능
Traffic Prediction : 이동시간 예측
노드 : 도로 세그먼트
링크 : 도로 간 연결
출발지와 목적지 사이 각 도로 구간의 교통패턴을 학습
이전에 합성되거나 사용한 적 없는 분자 구조 발견. 분자를 그래프로 생성
객체 : 노드 = N
상호작용 : 링크 = E
시스템 : 그래프 = G(N,E)
노드가 무엇인지, 링크가 무엇인지 선택하는 것은 매우 중요
주어진 문제에 따라 적절한 네트워크를 선택해야 함
객체들 사이에 링크를 할당하는 방식
무방향 그래프
방향 그래프
단순 노드의 차수 : 해당 노드에 연결된 edge의 갯수
평균 노드 차수 : 네트워크에 있는 모든 노드의 차수의 평균 == edge의 수의 두배를 노드로 나눈 값 (노드의 차수 계산시 edge가 두번씩 계산되므로)
이분 그래프 : 두가지 다른 유형의 노드에 대한 그래프
노드는 자신과 다른 유형의 노드와만 상호작용 함
이분 그래프를 한쪽으로 투영한 그래프
서로 같은 인접한 노드가 있을 때 두 노드를 이웃으로 만듬
ex ) 1의 인접 노드 : A
2의 인접 노드 : A, B
1과 2의 인접노드중 같은 노드가 있으므로 1과 2를 연결.
인접행렬 : 노드 갯수와 같은 크기의 정방행렬을 만들고 = 각 노드가 인접해있으면 1, 아니면 0
무방향 그래프의 특징
방향 그래프의 특징
네트워크는 매우 희박하여 인접행렬 생성시 희소행렬 얻을 수 있음
항상 희소행렬로 표현함.
list of Edge
단점 : 그래프 조작 및 분석 어려움
Adjacency list
주어진 노드의 이웃 목록 저장하여 빠르게 탐색 가능
그래프 노드, 링크는 속성을 가질 수 있음
Unweigeted vs Weighted
Self-edges , Multigraph
연결성 : 그래프가 연결되어 있는지 , 끊어져 있는지의 여부
edge를 따라 연결되는 노드의 집합이 하나의 component
strong connect
노드가 양방향으로 모두 연결 된 그래프
Weakly connect
방향을 무시하고 단순 연결 그래프
노드끼리 사이클을 구성하는 경우에도 강하게 연결되었다고 말함