by Yngie

Introduction to Graph ML

|

해당 포스트는 스탠포드 대학교의 cs224w 를 바탕으로 작성하였습니다.

Introduction to Graph ML

앞으로 그래프를 사용한 머신러닝 방법에 대해서 배워볼 것입니다. 그래프를 알아야 하는 이유는 무엇일까요?

Why Graph?

그래프는 노드(Node)엣지(Edge)의 형태로 구성되어 있는데요. 이와 같은 구조는 개체, 그리고 개체 사이에 상호작용을 묘사하고 분석하는 데 효과적입니다. 그래프로 나타내어지는 정보는 굉장히 많은데요. 대표적으로는 아래와 같은 것이 있습니다. 모두 해당 도메인 내에 있는 개체, 그리고 개체 사이에 일어나는 상호작용을 나타내고 있습니다.

graph1

graph2

graph2

이미지 출처 : web.stanford.edu/class/cs224w/slides/01-intro.pdf

작게는 원자와 원자 사이의 상호작용을 통해 형성되는 분자(Molecule)부터, 크게는 우주에서 별과 별, 별과 행성 등 다양한 개체가 이루는 상호작용을 그래프로 나타낼 수 있습니다. 소셜 네트워크를 나타내는 그래프는 우리에게 상당히 친숙한 그래프 구조 중 하나입니다.

크게는 두 가지 형태로 나누어 볼 수 있습니다. 첫 번째는 자연스럽게 그래프로 표현되는 것들입니다. 이를 Network라고 부르며 Natural Graph라고 부르기도 합니다. 소셜 네트워크, 커뮤니케이션 네트워크, 뉴런의 네트워크 등이 있습니다. 두 번째는 그래프로 표현 지어진 것들입니다. 대표적으로 지식 그래프나 3D shape가 이에 속합니다. 물론 둘 사이의 경계가 희미하기 때문에 모든 그래프 구조를 두 범주 내에 굳이 넣어야 하는 것은 아닙니다.

그렇다면 그래프 구조를 바탕으로 학습을 진행했을 때 얻을 수 있는 이점은 무엇이 있을까요? 가장 큰 이점은 관계가 명시적으로 드러나 있기 때문에 모델의 성능을 더욱 높일 수 있다는 것입니다. 하지만 그래프 형태의 단점 역시 존재하는데요. 기존 딥러닝이 잘 처리하는 텍스트나 이미지와는 다른 특성 때문에 모델에 집어넣기가 힘들다는 단점이 있습니다. 기존 딥러닝 모델은 텍스트-음성과 같은 선형 구조의 데이터나 이미지와 같은 그리드 형태의 데이터 처리에 특화되어 있지요. 하지만 그래프는 크기와 위상이 모호하며 공간적 지역성이 없기 때문에 딥러닝 모델에 바로 학습시키기 어렵다는 단점이 있습니다.

Application of Graph ML

머신 러닝은 무언가를 예측(Prediction)하는 일을 수행합니다. 그렇다면 Graph ML은 어떤 것을 예측할까요? Graph ML의 예측 범위는 다양합니다. 간단하게는 노드 혹은 엣지 수준의 예측을 수행할 수 있습니다. 하지만 이를 넘어 노드 쌍, 서브 그래프(Subgraph), 그리고 그래프 전체 수준의 예측이나 생성을 하기도 합니다.

노드 수준의 분류 태스크의 예시로는 추천 시스템에서 특정 유저에게 추천할 아이템의 범주를 예측하는 것이 있겠습니다. 다음으로 링크 수준의 예측은 지식 그래프에서 두 노드 사이에 어떤 관계가 있는 지를 예측할 때 사용됩니다. 복잡한 분자의 성질(Molecule property)을 예측할 때에는 그래프 수준의 분류가 사용됩니다. 특정 노드들이 집단을 형성하는지 알고 싶을 때에는 군집(Clustering) 태스크를 하기도 합니다. 또한 신약을 발견하기 위한 연구에서는 그래프 생성(Graph generation)이 사용되기도 합니다. 각각에 대해 조금 더 자세한 예시를 통해 알아보겠습니다.

Node-level Tasks

노드 레벨의 예측 태스크 중 주목할 만한 사례는 단백질의 3D 접힘 구조 예측입니다. 지난 2020년, DeepMind 팀은 알파폴드2를 발표했습니다. 해당 블로그 에서 알 수 있는 것처럼 연구진은 단백질 구조 예측에 Graph ML 방법론을 적용하였습니다. 단백질은 각각의 아미노산의 배열(Sequence)로 이루어지지만 어떤 배열을 가지는지에 따라 지역적으로 서로가 상호작용하는 정도가 달라집니다. 그래서 3차원 공간 상에서 각 단백질은 매우 다른 구조를 띠게 되고 이에 따라 단백질의 성질이 결정됩니다. 아래는 단백질 구조가 바뀌는 것을 잘 나타낸 그림입니다.

protein_folding

이미지 출처 : deepmind.com

그렇기 때문에 특정 아미노산 배열로 이루어진 단백질의 3차원 구조를 예측하는 것은 생물학에서 굉장히 중요한 연구 주제였는데요. 알파폴드는 이를 공간상에서의 그래프(Spatial graph)로 해석하면서 풀어낼 수 있었습니다.

Edge-level Tasks

추천 시스템을 만들 때 특정 유저가 아직 만나지 않은 특정 상품에 대해 어떤 반응을 보일 지 예측하는 것은 중요합니다. 예를 들어 서비스에 새로 등록된 상품이 있을 때, 굳이 이 상품을 좋아할 것 같지 않은 유저에게 먼저 보여줄 필요는 없겠지요. 그렇기 때문에 아직 연결고리가 없는 유저-상품에 대해 어떤 상호작용을 배정할지는 추천 시스템에서 중요한 문제입니다. 이런 문제를 풀기 위해서 유저라는 노드와 상품이라는 노드를 잇는 엣지를 예측하는 태스크가 사용됩니다.

약물의 부작용을 예측하고자 할 때에도 엣지 레벨의 예측 방법이 적용됩니다. 예를 들어, 2가지 약물을 동시에 복용했을 때 두 약물 이 몸 속 단백질과 특정 상호작용을 일으켜 부작용을 일으킬 수 있습니다. 따라서 두 약물이 동시에 복용하여도 아무런 문제가 없을지에 대해서 약물과 단백질을 노드로 설정한 다음, 약물-약물, 약물-단백질, 단백질-단백질 사이의 상호작용 중에서 아무런 문제가 발생하지 않는 지를 엣지 레벨 수준에서 예측합니다.

Subgraph-Level, Graph Level Tasks

도심의 교통 체증을 예측하는 태스크는 서브 그래프 수준의 예측을 수행합니다. 도로 사이의 특정 지점을 노드로 설정한 뒤에 해당 지점 사이의 도로를 링크로 연결합니다. 그리고 어떤 부분에서 정체가 발생할 지, 추후 교통 상황이 어떻게 변할 지를 서브 그래프 수준에서 예측하게 됩니다.

신약 개발에서는 그래프 전체 수준의 예측을 수행합니다. 각 원자를 노드로 설정하고 원자 사이의 화학 결합을 링크로 설정하여 원하는 성질을 가지기 위한 분자 구조를 예측하는 등의 태스크를 수행합니다. 이외에도 입자가 공간 상에서 어떻게 움직이는지에 대해 물리 시뮬레이션하는 태스크에서도 그래프 수준의 태스크가 사용됩니다.



Comments