스탠포드 강의를 듣고 정리한 내용입니다.
그래프 Task의 종류
앞의 포스팅에서 그래프 신경망을 다양한 방법으로 활용할 수 있다고 언급했습니다.
이번 포스팅에서는 그 방법들이 무엇인지 자세히 살펴보겠습니다.
큰 카테고리로 나누면 총 4개의 작업으로 요약할 수 있습니다.
- Node Level
- Node classification : 노드의 속성을 예측하는 작업
- ex) 온라인 사용자나 아이템을 분류함
- Edge Level
- Link prediction : 두 노드 사이에 누락된 관계는 없는지 예측
- ex) 지식 그래프의 완성
- Community(subgraph) Level
- Clustering : 커뮤니티를 형성하는지 탐지
- ex) 사회 집단 탐지
- Graph Level
- Graph classification : 다양한 그래프의 분류
- ex) 분자 특성을 예측
자 이제 각 작업에 대해 조금더 자세하게 알아봅시다.
Node level Task
노드 레벨 작업은 노드를 예측하는 작업입니다.
가장 대표적인 작업으로는 단백질 폴딩입니다. 단백질 폴딩은 말 그대로 단백질이 어떻게 접혀지는지를 뜻합니다.
먼저 단백질에 대해서 잠시 설명을 해보겠습니다.
모든 단백질은 시퀀셜하게 아미노산들의 결합으로 이루어져있습니다. 이러한 아미노산은 서로 상호작용을 통해서 나선 또는 넓은 판 모양을 형성합니다. 이 모양은 더 큰 규모로 접혀 완전한 다차원 단백질 구조를 형성합니다. 여기서 단백질은 다른 단백질과 상호작용하여 신호 전달 및 DNA 전사와 같은 기능을 수행할 수 있습니다.
여기서 우리가 예측해야할 포인트는 단백질의 구조를 3D로 예측하는 것입니다.
이 '단백질 폴딩' 그래프의 노드와 간선은 다음과 같이 정의할 수 있습니다.
- Nodes : 단백질 시퀀스 내에 있는 아미노산
- Edges : 아미노산 사이의 근접성
Edge level Task
간선 레벨 작업은 두 노드 사이에 간선이 있을지 없을지 예측하는 작업입니다.
여기서는 두 개의 예를 들어보겠습니다.
첫 번째 예는 추천시스템입니다.
추천시스템에서 유저가 물건을 사면 그 물건과 상호작용이 있기 때문에 간선으로 연결됩니다. 그렇게 유저는 많은 물건과 묶이게 되죠!
여기서 그래프 신경망은 유저는 어떤 물건에 관심을 가질지 새로운 물건과의 관계를 예측해 주는 방법으로 사용됩니다.
그렇다면 어떤 방향으로 학습을 하느냐!
바로 위와 같이 관계가 있는 두 노드의 거리는 가깝게, 관계가 없는 두 노드 사이의 거리는 멀게 학습을 합니다.
여기서 노드와 간선은 다음과 같이 정의할 수 있습니다.
- Nodes : 유저, 상품
- Edges : 유저와 상품 사이의 상호작용(구매, 클릭 등등)
두 번째는 약물 부작용 체크입니다.
우리는 살면서 정말 다양한 약을 먹죠. 나이가 들수록 건강을 지키기 위해 다양한 약물을 함께 먹는 경우가 많습니다. 실제로 미국의 70~79세인 사람의 46%가 하루에 5개 이상의 약을 먹습니다. 때문에 이 약들을 함께 먹어도 부작용이 없는지 체크하는 것이 중요해졌습니다.
따라서 위와 같이 우리 몸의 단백질과 약물로 이루어진 그래프를 생성할 수 있습니다. 각 단백질과 약물이 모두 만났을 경우 어떤 부작용이 생길지 예측을 할 수 있게 됩니다.
여기서 노드와 간선은 다음과 같이 정의할 수 있습니다.
- Nodes : 약, 단백질
- Edges : 서로간의 상호작용
※ 노드가 여러 종류여도 되나요?
위의 예시들을 보시면 사람, 아이템 또는 단백질, 약물입니다. 즉, 노드는 한 가지 데이터를 표현하지 않습니다.
이러한 그래프를 이종 그래프(heterogeneous graph)라고 하며 현재 아주 널리 쓰이고 있습니다.
Subgraph level Task
서브 그래프는 주어진 그래프 내에 있는 서브 그래프를 예측하는 것이죠.
이게 뭔소리지? 싶으실 수 있는데, 예를 보면 바로 이해하실 수 있습니다.
바로 최단경로 찾기입니다. 우리는 네비게이션을 사용하면 현재 위치에서 목적지로 갈 수 있는 가장 최단 경로를 추천받을 수 있습니다.
이러한 경우 그래프 네트워크를 사용할 수 있습니다.
여기서 노드와 간선은 다음과 같이 정의할 수 있습니다.
- Nodes : 도로의 세그먼트
- Edges : 도로 세그먼트 사이의 연결성
Graph level Task
그래프 레벨의 작업은 말 그대로 그래프 자체를 출력해 내는 작업입니다.
그래프 레벨 작업은 크게 2가지 예시가 있습니다.
첫 번째 예시는 바로 신약 개발입니다.
그래프로 각 원자들을 표현할 수 있는데요. 이 원자들 사이의 화학적 결합을 잘 이용한다면, 신약 개발에 사용할 수 있습니다.
여기서 노드와 간선은 다음과 같이 정의할 수 있습니다.
- Nodes : 원자
- Edges : 원자 간의 화학적 결합
두 번째 예시는 물리 기반의 시뮬레이션입니다.
우리는 액체 또는 고체들의 재료들이 움직일때 어떻게 변형되는지 예측할 수 있습니다.
위의 물체들이 움직이는 경로들을 미리 알아내는 것이죠.
처음에는 입자들을 그래프로 표현해 줍니다. 여기서 각 노드의 관계는 근접성, 상호작용을 기반으로 정의를 해줍니다. 이후 현재의 속성, 위치 등등을 파악하고, 속도를 파악하여 어디로 갈지 예측을 해주고, 그 부분으로 이동을 해줍니다. 이후 다시 처음으로 돌아가서 파악하고 예측하고 옮기고를 반복하다보면 위의 영상처럼 물체들이 어떻게 변형되는지 예측할 수 있게 되죠!
여기서 노드와 간선은 다음과 같이 정의할 수 있습니다.
- Nodes : 입자들
- Edges : 입자들 간의 상호작용
'인공지능공부 > 그래프' 카테고리의 다른 글
[Stanford/CS224W] 2. tradition-ml(2) : 전통적인 링크 레벨 작업과 피쳐 (0) | 2023.02.28 |
---|---|
[Stanford/CS224W] 2. tradition-ml(1) : 전통적인 노드 레벨 작업과 피쳐 (0) | 2023.02.25 |
[Stanford/CS224W] 1. intro(3) : 그래프 표현의 선택 (0) | 2023.02.25 |
[Stanford/CS224W] 1. intro(1) : 그래프가 필요한 이유 (1) | 2023.02.23 |
그래프의 정의 (1) | 2023.02.17 |