[RecSys] Recommender System with GNN 1 (GNN 기본개념)

mincheol2·2022년 3월 14일
0

RecSys

목록 보기
16/23

이 글은 부스트캠프 AI Tech 3기 강의를 듣고 정리한 글입니다.

Graph Neural Network

그래프란?

Graph Neural Network 를 알아보기 전에 Graph란 무엇인지 간단하게 알아보자.

Graph란 꼭지점(Node)들과 그 노드들을 잇는 변(Edge)들을 모아 구성한 자료구조로 연결되어 있는 데이터를 표현하기 좋다.

일반적인으로 그래프는 G=(A,E)G = (A,E)로 정의한다.

예를 들어 위 그림은 G=({A,B,C,D},{{A,B},{A,C},{A,D},{C,D}})G = (\{A,B,C,D\}, \{\{A,B\},\{A,C\},\{A,D\},\{C,D\}\})로 표현할 수 있다.
{A,B,C,D}의 Node들로 이루어져 있고, 각 Node들은 Edge{{A,B},{A,C},{A,D},{C,D}}을 통해 연결되어 있음을 나타낸다.



그래프를 사용하는 이유

  1. 관계나 상호작용 같은 추상적인 개념을 다루기에 적합
    복잡한 문제를 더 간단하게 표현 가능하고 다른 관점으로 표현이 가능하기 때문에 SNS에서 친구관계, 바이러스의 확산, User-item의 소비관계(유저,아이템은 Node 소비행동은 Edge) 등으로 모델링이 가능하다.

    2. Non-Euclidean Space의 표현 및 학습 가능
    Euclidean Space란 우리가 흔히 다루는 이미지, 텍스트, 정형데이터로 격자 형태로 표현이 가능한 것이다
    Non-Euclidean Space는 SNS 데이터, 분자(molecule) 데이터 같은 격자로 표현 할 수 없는 형태를 뜻한다.



GNN(Graph Neural Network; 그래프 신경망)

GNN이란 그래프 데이터에 적용 가능한 신경망을 뜻한다.
이웃 노드들 간의 정보를 이용하여 특정 노드를 잘 표현할 수 있는 특징(벡터)를 잘 찾아내는 것이 목적이고,
이를 위해 밑에 그림과 같은 Task를 실행한다.

  • 그래프 및 피쳐 데이터를 인접행렬로 변환
  • MLP등을 사용

이는 Naive Approach라고 부르며 이를 그대로 활용하기에는 한계점이 존재한다.

  • 노드가 많아질수록 연산량은 기하급수적 증가

  • 노드의 순서가 바뀌면 의미가 달라질 수 있음
    - 인접행력에서는 순서가 그대로 입력값이 되기 때문에 치명적인 문제가 발생한다.


따라서 GNN을 할 때는

  • local connectivity : 바로 옆에 있는 노드의 정보를 이용
  • shared weights : CNN의 커널 처럼 동일한 weigh를 사용하녀 Convolution
  • multi-layer : 2개이상의 layer를 쌓음

을 이용하여 Convolution 효과를 주고 연산량을 줄이면서 깊은 네트워크로 간접적인 관계 특징까지 추출한다.
즉 노드끼리 연결된 관계, 더 멀리있는 간접관계 특징 추출이 가능하다.

profile
옹오옹오오오옹ㅇㅇ

0개의 댓글