[Graph 9강] 그래프 신경망이란 무엇일까? (기본)
그래프 신경망 기본
그래프 신경망(GNN)은 정점 표현 학습의 일부이다. 마찬가지로 정점의 유사도를 보존한 채 벡터로 변환시키는 것을 목표로 한다. 단, 앞서 배웠던 변환식 정점 표현 학습과는 다르게, 귀납식 정점 표현 학습의 일부로 Encoder 자체를 반환하는 정점 표현 학습이다. 귀납식 임베딩 방법은 다음과 같은 장점을 가진다.
그래프 신경망은 그래프와 각 정점의 속성 정보를입력으로 받는다. 각 정점 의 속성 벡터를 라고 하고, 는 개의 속성을 같는 차원 벡터로 생각할 수 있다. 예를 들어, 정점의 속성은 정점의 중심성이나 군집계수나 Page Rank Score등이 될 수 있다.
그래프 신경망은 이웃 정점들의 정보를 집계하는 과정을 반복하여 최종 임베딩을 얻는다.
각 집계 단계를 층(Layer)라고 부르며, 각 층마다 임베딩을 얻는다. 각 층은 이전 층의 임베딩을 집계하여 생성되며, 0번 층에서는 정점의 속성 벡터를 사용해 임베딩을 시작한다.
각 정점은 이웃의 수에따라 집계되는 정보의 갯수가 상이하다.
GNN은 층 별로 사용되는 집계함수를 공유한다. CNN에서의 Filter나, RNN에서의 Encoder처럼, 각 층의 집계함수는 동일하게 사용된다.
다른 갯수의 입력이 들어와도 일정하게 계산할 수 있도록, 정보들을 취합한 후에 신경망에 적용하는 형태로 구현되어 있다.
집계함수를 수식으로 표현하면 아래와 같다.
그래프 신경망을 학습하기 위해서 손실함수를 정의해야 하는데, 이 과정은 유사도를 정의하는 것과 깊은 상관관계가 있다. 예를 들어, 인접성을 기반으로 유사도를 정의한다면, 다음과 같은 손실함수를 사용할 수 있다.
이외에도, 후속과제의 손실함수를 이용해 학습시킬수도 있다. 예를 들어, 그래프 신경망을 통해 정점의 임베딩을 얻고, 이를 분류기의 입력으로 사용하여 각 정점을 분류하고자 한다면, 분류 알고리즘의 손실함수를 사용할 수 있는 것이다.
그래프 신경망은 각 층별로 같은 유닛을 공유하기 때문에, 학습 시 일부 정점만 사용해서 학습을 진행할 수 있다. 일부 정점으로만 학습한 GNN은 학습에 사용되지 않은 정점에도 사용하여, 임베딩을 얻어낼 수 있다. 더 나아가서 학습 이후에 추가된 정점에 대한 임베딩도 얻을 수 있으며, 새로운 그래프에도 신경망을 적용할 수도 있다.
그래프 신경망 변형
위의 집계함수 형태 외에도 다양한 형태가 존재한다.
그래프 합성곱 신경망(GCN)은 GNN과 다른 집계함수를 사용함으로써 큰 성능의 향상을 이뤄냈다. 가장 큰 차이점은 를 줄이고, 정규화 방법을 변경한 점이다.
GraphSAGE는 이웃들의 임베딩을 AGG함수로 이용해 합치고, 더하지 않고 Concatenate하는 형태로 구현되어 있다. 특이한 점은 다양한 AGG함수를 사용해 결과를 얻을수 있다는 점이다.
합성곱 신경망과의 비교
GCN은 CNN과 인접한 이웃의 정보를 집계한다는 점에서는 유사하다.
CNN은 집계하는 이웃의 수가 균일하지만, GCN은 정점별로 집계하는 이웃의 수가 다르다.
그래프의 인접행렬에 대해서 CNN을 적용하는 것은 문제가 생길 수 있다. 왜냐하면, 인접행렬은 이미지의 픽셀처럼 인접 셀과 관계가 없을 수 있기 때문이다. 각 행과 열의 순서는 임의로 배정될 수 있기 때문이다.
실습 코드
[Graph 10강] 그래프 신경망이란 무엇일까? (심화)
그래프 신경망에서의 어텐션
위에서 살펴본 GNN은 이웃들의 정보를 동일한 가중치로 평균을 내며, GCN도 단순히 연결성만을 고려해 동등한 가중치를 부여한다.
이는 모든 이웃이 동일한 관계를 갖는 것으로만 표현할 수 있는 한계를 가진다. 실제 그래프에서는 이웃별로 미치는 영향이 다를 수 있기 떄문에, 각 이웃에 대해 가중치를 다르게 판단할 필요가 있다.
그래프 어텐션 신경망(GAT)는 가중치 자체도 학습하는 형태로 구성된다. 이 가중치를 학습하기 위해서 Self-Attention이 사용된다.
각 층에서 정점 로부터 로의 가중치를 라고 할 때, 이는 다음과 같은 계산을 통해 구해진다.
Transformer에서 보았듯, 여러 개의 헤드로부터 어텐션을 구해 Concatenate하는 Multi-Head Attention도 수행할 수 있다.
여러 Task에서 어텐션을 사용한 GAT은 기존의 GCN보다 더 나은 성능을 보였다.
그래프 표현 학습과 그래프 풀링
그래프 표현 학습은 그래프 전체를 벡터의 형태로 표현하는 것이다. 각각의 정점뿐만 아니라, 그래프 전체를 벡터로 표현하고자 하는 시도이다. 이는 다양한 그래프가 있을 때 그래프를 분류 하는 문제 등에 사용될 수 있다.
그래프 풀링이란, 정점 임베딩으로부터 그래프 임베딩을 얻는 과정을 의미한다. 각 정점들의 평균을 구하는 등의 간단한 방법보다 그래프의 구조를 고려하는 방법을 사용할 경우 더 좋은 성능을 보이는 것으로 알려져있다.
위 사진처럼 각 정점 임베딩으로부터 GCN으로 군집구조를 파악하고, 각 군집을 하나의 정점으로 표현하는 식으로 집계를 해나간다. 최종적으로 하나의 정점으로 표현되는 그래프를 벡터로 표현하여 후속 과제를 수행할 수 있다.
지나친 획일화 문제
지나친 획일화(Over-Smoothing) 문제는 그래프 신경망의 층이 증가하면서 정점의 임베딩이 과하게 유사해지는 현상을 의미한다. 이는 작은 세상 효과와 관련이 있다. 수 많은 정점이 존재하는 그래프더라도, 몇번의 간선을 거치면 서로 이웃이 되는 성질을 때문이다.
이는 후속과제에서도 문제가 된다. 그래프 신경망의 층이 2~3개를 넘어가게 되면 정확도가 현저히 낮아지는 현상을 보인다. 이를 극복하기 위해 다른 신경망에서는 잔차항을 사용하나, 그래프 신경망에서는 큰 효과를 얻지 못한다.
그래프 신경망에서는 이를 극복하기 위해 새로운 개념을 도입한다. Jumping Knowledge Network는 마지막 층의 임베딩 뿐만 아니라, 모든 층의 임베딩을 함께 사용하는 것으로 획일화의 문제를 해결하고자 했고, APPNP는 0번째 층을 제외하고 다른 모든 집계함수에 신경망을 제거해 집계함수를 단순화 하였다. 특히 APPNP는 층의 증가에 따른 정확도 감소효과가 없는 성과를 거뒀다.
그래프 데이터 증강
데이터 증강(Data Augmentation)은 다양한 머신러닝에서 효과적인 방법이다. 그래프에서도 누락되거나 부정확한 간선이 있을 수 있는데, 이를 보완하는 방법으로 사용될 수 있다. 이 방법은, 임의 보행을 통해 정점간 유사도를 계산하고, 유사도가 높은 정점간의 간선을 추가하는 방법으로 제시되었다.
이런 데이터 증강의 결과로 후속 과제의 정확도가 개선되는 효과를 얻을 수 있었다.
실습 코드
Reference
'네이버 부스트캠프 AI Tech' 카테고리의 다른 글
[U] Day 27 - 서비스향 AI 모델 개발 & AI 시대의 커리어 빌딩 (0) | 2021.03.26 |
---|---|
[U] Day 26 - 삼일절 휴강 (0) | 2021.03.26 |
[U] Day 24 - 정점 표현 & 추천시스템 (심화) (0) | 2021.03.26 |
[U] Day 23 - 군집 탐색 & 추천시스템 (기초) (0) | 2021.03.26 |
[U] Day 22 - 페이지 랭크 & 전파 모델 (0) | 2021.03.26 |
Uploaded by Notion2Tistory v1.1.0