GNN과 Graph 자료구조의 특성

2022. 12. 10. 20:00·Data Engineering
728x90

1. Graph 자료 구조

Vertice와 edge들을 가지고 구성되어있는 자료구조이다. edge들은 vertices 간의 연결된것을 의미힌다.

 

 

2. 그래프 자료구조를 처리하기 어려운 이유

  • Graph Data는 복잡하다. : 전통적인 ML, DL 도구들은 simple data types에 특화되어 있다.
          ex) 이미지 데이터는 같은 구조와 사이즈여서 fixed-size grid graph로 생각할 수 있음 , 순차적인 text or speech 데이터
  • 그래프는 유클리드 공간에 있지 않다. 즉, 좌표계로 표현할 수 없다. 시계열 데이터, 음성, 이미지 데이터가 2차원 및 3차원 유클리드 공간에 매핑을 할 수 있는 것과 달리 그래프 데이터는 매핑하기 어렵다.
  • 그래프는 고정된 형태가 아니다. : 가변적인 크기의 정렬되지 않은 node들로 이루어져 있다. Graph 데이터의 이웃 노드들 크기가 각각 다르다. 순서가 없기 때문에, 데이터의 시작점과 끝점이 없다.
  • DL 툴들은 간단한 순서나 형식에 특정되어 있다.
  • 전통적인 ML 알고리즘은 각각을 독립적인 인스턴스로 보고 있다. 하지만 실제 그래프 데이터는 다양한 타입들의 link에 의해 표현되는 다른 이웃 노드들과의 연관성을 가지고 있다.

  • 인접 그래프 구조에서, n개의 nodes 가 있다면, 그 인접그래프는 (n*n) 크기이다.
  • node 가 f 개의 features를 가지고 있다면, node feature matrix X는 (n*f) 크기이다.

 

3. 그럼에도 그래프 자료구조가 필요한 이유 

  • 노드와 노드간의 ‘관계’, ‘상호 작용’ 같은 추상적 개념을 다룰 수 있다.
  • SNS, 바이러스 확산 등을 표현하기 적합하다.

4. GNN 의 개념

  • Graph Neural Network : 그래프 구조에 기반하여 작동하는 뉴럴 네트워크 
  • node와 그 node로 부터 생성되는 numeric 한 값의 관계를 모델링할 수 있다. 
  • node-level, edge-level, graph-level에서 예측한다.
  • 각 노드는 인접 노드의 feature vector를 집계하여 새로운 feature vector를 계산한다.

5. Recurrent GNN

  • GNN은 주로 연결관계와 이웃 node들의 상태를 이용하여, 각 node들의 상태를 업데이트하고, 마지막 상태들을 통해 예측한다. 마지막 상태는 node embedding이라고 한다.
  • Graph node는 recurrent unit이고, node에 있는 information은 embedding에 해당되는데, unit들이 모두 반복되어서, node가 가진 information이 손실되지 않는다.


6. GNN 의 표기 



h
v (k) 는 k 번째 반복 혹은 k번째 layer에서 node v의 feature vector이다. 
N (v) 는 node v에서 인접한 node들의 집합이다. 

GNN은 이웃 노드들을 aggregation 하는 작업을 반복적으로 수행하여 상태를 업데이트한다. 

7. Node Embedding 
node 를 vector 형태로 표현하는 것이다. 
이 embedding 방식에는 두가지가 있다. 

1) Transductive method (변환식 방법)
     ex) Node2Vec, Deepwalk 


2) Inductive method (귀납식 방법)
     ex) GNN

 

참고 유투브 영상 :

https://www.youtube.com/watch?v=cWIeTMklzNg

 

728x90

'Data Engineering' 카테고리의 다른 글

데이터 인프라 이해하기, Spark + HDFS + Hive  (0) 2024.02.17
[LLM] OpenSearch 로 챗봇의 RAG 개발하기  (0) 2023.12.10
[Apache Airflow] Airflow 설치하기  (0) 2023.10.22
[Colab] 코랩 런타임 연결 끊김 방지하기  (0) 2023.07.23
빅데이터로 성공하기 (서가명강 조성준 교수님 강의) 요약  (0) 2023.04.02
'Data Engineering' 카테고리의 다른 글
  • [LLM] OpenSearch 로 챗봇의 RAG 개발하기
  • [Apache Airflow] Airflow 설치하기
  • [Colab] 코랩 런타임 연결 끊김 방지하기
  • 빅데이터로 성공하기 (서가명강 조성준 교수님 강의) 요약
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minji's engineering noteData Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • Swift
  • linux
  • 스파크
  • 프로그래머스
  • 빅데이터
  • Leetcode
  • dp
  • EC2
  • 데이터브릭스
  • Databricks
  • 리눅스
  • Kubernetes
  • 파이썬
  • 알고리즘
  • dfs
  • 운영체제
  • SPARK
  • python
  • AWS
  • 백준
  • 코딩테스트
  • 쿠버네티스
  • docker
  • 클라우드
  • BFS
  • 데이터엔지니어링
  • 카카오코딩테스트
  • ansible
  • 백트래킹
  • 데이터엔지니어

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
GNN과 Graph 자료구조의 특성
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.