[논문이야기] NGCF의 소개 ④

그래프 반영을 통해 미처 발견하지 못했던 데이터 속 ‘관계’ 찾아내는 NGCF 다층의 레이어를 재귀적으로 구성한 아키텍쳐로 ‘High-order Connectivity’ 찾아내는게 NGCF의 핵심 이 때 message construction으로 그래프 데이터 표현된다

3
pabii research

[논문이야기] NGCF의 소개 ③에서 이어집니다

본 [논문이야기]는 NCF에 그래프 관계형 데이터를 반영한 계산법인 NGCF를 설명하기 위해 ‘Neural Graph Collaborative Filtering(Xiang Wang 등, 2020)‘을 참고했음을 밝힙니다.

NGCF는 어떻게 ‘관계형 데이터’를 표현하는가?

먼저 논문 초반 내용인 NCF와 NGCF의 차이점을 간단한 다이어그램으로 소개해보겠습니다.

NCF와 NGCF의 차이

위 그림처럼 NCF는 $l=1$, 즉 엣지(Edge)가 1개인 관계만 설명할 수 있는 반면, NGCF는 $l=1$ 이상의 고차원 데이터 관계까지 설명할 수 있습니다. 특히 위 다이어그램에서의 NGCF는 엣지의 갯수가 총 3개인 관계까지 설명합니다.

다시 말해 위 그림에서 NCF는 $u_1$(1번 유저)가 $i_1$(1번 아이템)을 선택하면 ‘단 1번’으로 유저-아이템간 관계 설정이 끝나게 됩니다. 그러나 NGCF는 유저와 아이템의 관계를 그래프적으로 풀어냄으로써, 3번 엣지까지 커버 가능한 재귀적(recursive)인 방식으로 표현할 수 있게 됩니다. 이를 논문에서는 ‘High-order Connectivity(고차 연결성)’라고 표현합니다.

위 NGCF의 다이어그램에 대해 더 구체적으로 설명해보겠습니다. $u_1$, $u_2$, $i_2$의 관계를 살펴봅시다. 여기서 $i_2$는 $u_1$ 및 $u_2$에 모두 연결 관계가 있습니다. 이를 통해 $u_1$과 $u_2$는 $i_2$ 관점에서 서로 유사성(similarity)이 있다고 볼 수 있습니다. 또한 위 다이어그램에서 $i_4$는 $u_2$와 연결돼있는데, 이때 앞서 확인한 바와 같이 $u_2$는 $u_1$과 유사성이 있으므로, $l=3$ 관점에서 결국 $i_4$는 $u_1$과 연결 관계가 있다고 볼 수 있는 것입니다.

이같은 방식을 통해 기존의 NCF에서는 아무 관계도 나타낼 수 없었던 $i_4$와 $u_1$의 관계를 NGCF에서는 정의할 수 있게 됩니다. 즉 이전 글에서 넌지시 언급한 ‘1차적인 관계밖에 설명하지 못한다’는 NCF의 한계는 NGCF에서 ‘그래프 구조’를 추가적으로 반영해 데이터의 새로운 ‘관계’를 발견함으로써 해결되는 것입니다. 이것이 앞에서 설명했던 High-order Connectivity의 개념이 되겠습니다.

NGCF의 구조

이제 구체적으로 NGCF가 어떻게 구성되는지 살펴보겠습니다. 전체적인 구조는 아래 다이어그램과 같습니다.

NGCF 아키텍쳐

임베딩 레이어(Embedding Layer)는 전파 레이어(Propagation Layer)의 입력을 위한 유저 데이터와 아이템 데이터 각각의 임베딩을 담당합니다.

임베딩 전파 레이어(Embedding Propagation Layer)는 입력된 Embedding 정보를 그래프 형태가 반영된 연결 정보로 변환하기 위한 propagation 계산을 맡습니다. 이 때 message construction을 이용합니다(후술됩니다).

예측 레이어(Prediction Layer)는 message construction을 합치는(aggregation) 과정을 통해 해당 유저나 아이템 각각의 Embedding을 하나의 값으로 통합합니다.

연쇄 레이어(Concatenation Layer)는 앞에서 통합된 해당 유저와 아이템 행렬의 곱 연산을 통해 최종 유저와 아이템 간 연결 값(interaction value)를 산출합니다.

NGCF의 Embedding Layer 구성

앞에서 간단히 정리한 단계별 내용을 좀더 자세히 기술해 보겠습니다. 먼저 Embedding Layer부터 시작하겠습니다. 앞서 살펴본 NCF와 마찬가지로, NGCF는 유저와 아이템의 관계를 수치적으로 표현하기 위해 아래 형식으로 희소 행렬(Sparse Matrix)을 임베딩합니다.

NGCF의 Embedding에 대한 정의

이 때 데이터 입력은 유저에 대한 Embedding과 아이템에 대한 Embedding으로 구성돼 있습니다. 이를 통해 그래프 데이터를 수학적으로 표현 가능한 인접행렬(adjacency matrix)로 구성할 수 있습니다.

NGCF의 Embedding Propagation Layer 구성

앞 단계에서 만들어낸 유저와 아이템에 대한 embedding을 입력으로 이용해 embedding Propagation을 커버 가능한 엣지 수만큼의 레이어 수로 아래와 같이 만들게 됩니다. 이 때 다층의 레이어를 재귀적(Recursive)으로 구성함으로써 High-order Connectivity 구조를 만들고, 그래프 데이터가 신경망에 표현돼 계산할 수 있도록 설계합니다.

엣지의 갯수만큼 구성된 레이어들로 재귀적(Recursive)하게 구성하기 때문에 해당 특정 유저나 아이템에 연관된 모든 노드에 대한 계산이 진행됩니다. 재귀적인 부분을 펼쳐서 살펴보면 아래 그림과 같습니다.

NGCF Message Function

한편 이 논문에서는 그래프 데이터를 표현하기 위한 핵심 개념인 ‘Message’를 도입합니다. 즉 논문에서는 다층의 엣지를 거치는 Propagation에 대한 단계적 감가상각을 나타내는 변수인 $P_{ui}$라는 계수(coefficient)를 정의해 아래와 같이 ‘Message embedding(메세지 임베딩)’을 표현합니다.

$P_{ui}$에 대해 추가적으로 부연하면, 이는 매 Propagation마다 전파되는 메시지를 유저의 총 수와 아이템의 총 수의 절댓값으로 나눠줌으로써 단계적 감가상각을 반영해주는 계수라고 할 수 있습니다.

NGCF의 message function. $e_i$: 아이템의 embedding, $e_u$ : 유저의 embedding, $p_{ui}$ : decay factor

f 함수의 구체적인 수식은 아래와 같습니다.

$|N_u|$: 유저u의 이웃 수, $|N_i|$: 아이템i의 이웃 수, $W$: trainable matrix(전파 과정을 학습하기 위한 Matrix)

간단한 개론만 설명 드리면 $W_1$는 자기 자신과의 관계를 학습하기 위한 행렬이며 $W_2$는 관계를 구성하는 Message를 정의하는 유저와 아이템 간의 관계를 학습하는데 사용합니다.

NGCF의 Prediction Layer 구성

앞의 과정을 통해 Message Construction까지 진행이 완료되면 이를 통합하는 Aggregation 과정이 필요합니다. 유저에 대한 첫번째 Embedding Layer에서 이웃노드에서 전파된 Message embedding을 모아 정제하는 함수를 표현하면 아래와 같습니다.

아이템에도 동일한 계산이 적용이 되며 이 때 Leaky ReLU를 사용하는 이유는 ReLU 함수의 0인 부분을 음수로 처리하여 생략되는 Message가 없도록 하기 위함입니다.

Aggregation 과정이 완료되면 각 노드의 유저와 아이템의 Aggregation Value를 곱하여 유저-아이템 관계 행렬을 구성하게 되며 NGCF의 계산이 마무리가 됩니다.

글을 마치며

이번에 NGCF에 대한 소개글을 쓰면서, 이전에 학교에서 공부한 추천 알고리즘 내용과 논문만 공부해서 습득했던 파편적인 지식들이 정리되면서 하나의 선으로 이해됐습니다.

하지만 추천 알고리즘을 처음 접하는 독자분들은 CF의 기본 개념과 계층적으로 어떻게 구성되는지 이해하시기 쉽지 않을 것 같다는 생각이 들었습니다. 따라서 그래프 데이터가 어떤 이점이 있는지 설명을 먼저 드려야 NCF에 대해 이야기 할 수 있을 것 같았습니다. 또한 독자분들이 조금이라도 쉽게 이해하셨으면 하는 마음에서 NCF와 그래프 데이터에 대한 사전 지식을 충분히 설명 드리고, 이후 해당 지식과 NGCF를 하나로 엮어보고자 했습니다.

이에 따라 [논문이야기]의 구성은 이해에 필요한 기본 개념들을 (1,2)2개의 절로 나누어 설명 하고 마지막 3절에 본론인 NGCF의 논문 내용을 설명하면서, 좀 더 잘 정리된 하나의 이야기로 이해될 수 있도록 구성했습니다.

또한 쉽게 내용을 전달하기 위해 고민 하면서 필자인 저 자신도 알고 있는 지식들을 좀더 체계적으로 정리할 수 있는 기회가 된 것 같습니다.

마지막으로 이 글을 쓸 수 있게 기회를 준 학교인 SIAI와 교수님께 감사의 말씀을 드립니다. 다음에는 제 논문의 주제가 정해지면 진행된 내용에 관련해서 글 쓸 수 있도록 해보겠습니다.

감사합니다.

Similar Posts