NGCF은 유저-아이템 상호작용(Collaborative Signal)을 GNN으로 임베딩 과정에서 인코딩하는 접근법을 제시한 논문으로 처음으로 GCN이 추천문제를 잘 풀 수 있다는 공헌을 한 논문이다.
이전의 학습가능한 CF 모델(MF같은)은 유저와 아이템의 임베딩, 상호작용의 선형적 모델링의 특징을 가지고 있었다.
신경망을 적용한 기존 CF모델들을 유저-아이템의 상호작용을 임베딩 단계에서 접근하지 못하였는데 Latent Factor 추출을 interaction function에만 의존하기 때문에 sub-optimal한 임베딩을 사용하였기 때문이다.
이는 부정확한 추천의 원인이 될 수 있다.
NGCF의 기본적인 아이디어는 GCN을 통해 High-order Connectivity(경로가 1보다 큰 연결)를 임베딩 하는 것이다. 이는 유저 아이템 개수가 많아질수록 모든 상호작용을 표현하기엔 한계가 존재하였기 때문이다.
그림예시를 통해 이해해 보도록 하자.
위 그림은 단순히 유저와 아이템의 상호작용 그래프를 나타낸 것으로 u1은 i1,i2,i3을 소비한 것을 알 수 있다.(Node : 유저 or 아이템 / Edge : 소비함을 의미)
이런식으로 자료구조를 생성하게 되면 유저와 아이템이 많아질 수록 모든 상호작용을 표현하기 어렵다는 한계점이 존재한다.
첫번째 그래프의 문제점을 해결하기 위해 다음과 같이 High-order Connectivity로 구성한다.
그림은 u1이 소비한 아이템이 i1,i2,i3 일 때 High-order Connectivity를 나타낸 것으로 l은 길이를 나타낸다. l=1 은 다이렉트로 연결된 edge가 1개 l=2 은 i1,i2,i3 를 소비한 u2,u3로 확장 l=3 은 u2,u3 가 소비한 i4,i5로 확장 함을 보여준다.
그림에서 표시한 번호는 다음과 같은 의미를 가진다.
u1,u2는 i2를 가지고 상호작용 -> u1와 u2 높은 유사도를 가짐
u2가 소비한 i4,i5의 signal이 u1에게 전달되어 i4,i5 가 추천될 확률이 높아짐
u2,u3 모두 i4를 가지고 있으므로 u1에는 최종적으로 i4가 2번 전달되어 i4의 추천확률이 높아짐
임베딩 전파 레이어(Embedding Propagation Layer)
: (★가장 중요★) high-order connectivity 학습
유저-아이템 선호도 예측 레이어(Prediction Layer)
:서로 다른 전파 레이어에서 refine된 임베딩 concat
각 레이어 별로 어떤 일을 하는지 자세히 알아보자.
임베딩 레이어(Embedding Layer)
임베딩 레이어에서는 다음과 같이 각 유저와 아이템에 대한 임베딩을 생성한다.
E=[users embeddings eu1,⋯,euN,item embeddings ei1,⋯,eiM]
( eu : 유저 u 에 대한 임베딩, ei : 아이템 i 에 대한 임베딩)
MF, NCF 같은 기존의 CF 모델에서는 임베딩을 곧바로 interaction function에 입력되었지만, NGCF에서는 이 임베딩을 바로 사용하지 않고 GNN 상에서 전파시켜 refine한다.
이는 Collaborative Signal을 명시적으로 임베딩 레이어에서 주입하기 위한 과정이다.
임베딩 전파 레이어(Embedding Propagation Layer)
임베딩 전파 레이어는 생성된 임베딩을 전파시키는 레이어로 유저-아이템의 Collaborative signal을 담을 message를 구성하고 결합하는 단계이다.
수식으로 어떻게 전개되는지 살펴보자.
Message Construction
: 유저-아이템 간 affinity를 고려할 수 있도록 메시지를 구성 (weight sharing)
mu←i=∣Nu∣∣Ni∣1(W1ei+W2(ei⊙eu))
( W1,W2 : weight matrix / ⊙ : element-wise production Nu,Ni : 유저, 아이템의 이웃한 유저,아이템 집합 )
mu←i 는 i(아이템) 에서 u(유저)로 전달되는 메시지를 의미한다 (mu←i 은 Message Aggregation에서 합쳐저 최종 유저 임베딩을 구함). ∣Nu∣∣Ni∣1 은 이웃노드(유저,아이템)의 갯수로 나눠주는 것을 의미하는데 유저 u를 기준으로 연결된 아이템이 많을수록 시그널은 점점 커지기 때문에 Normalization 하는 것이다.
Message Aggregation
: u 의 이웃 노드로부터 전파된 message들을 결합하면 1-hop 전파를 통한 임베딩 완료
eu(1)=LeakyReLU(mu←u+i∈Nu∑mu←i)
유저기준으로 유저는 여러개 아이템과 상호작용 하기 때문에 Message(mu←i)는 여러개가 되어 eu(1)로 Aggregation된다. Aggregation은 자기자신으로부터 전달되는 메시지mu←u 와 위에서 계산한 인접 노드들의 메시지의 합 ∑i∈Numu←i을 더한 것에 LeakyReLU를 통과시킨 형태이다.
이때 eu(1) 에서 1이 뜻하는 것은 첫번째 전파 layer라는 뜻이다.
이번엔 eu(1) 의 1을 l로 바꿔서 생각해보자(Layer를 쌓아보자)
l개의 임베딩 전파레이어를 쌓으면, 유저 노드는 l-차 이웃으로부터 전파된 메시지를 이용 가능하다.
이때 l 단계에서 유저 u의 임베딩은 (l−1)단계의 임베딩을 통해 재귀적으로 형성한다(임배딩이 여러개 쌓이기 때문에 High Order Conectivity이다).
LightGCN은 GCN의 가장 핵심적인 부분만 사용하여 더 정확하고 가벼운 추천모델을 제시한 논문이다.
LightGCN의 아이디어는 두가지이다.
Light Graph Convolution
: 이웃 노드의 임베딩을 가중합 하는 것이 Conv의 전부 -> 학습 파라미터 , 연산량 대폭 감소
<-> NGCG : 임베딩 전파 레이어에서 Conv시 매번 학습파라미터 W를 임베딩에 곱하고 LeakyReLU 사용
Layer Combination
: 레이어가 깊어질수록 강도가 약해질 것이라는 아이디어를 적용해 모델을 단순화
Light GCN 구조 (vs NGCF)
그림으로 비교해보면 다음과 같다.
집중적으로 봐야할 곳은 임베딩 전파 레이어인데 LightGCN은 단순 가중합으로 Convolution을 진행하고 있다.
또한 Prediction Layer에서는 NGCF가 concat을 하여 내적한 것과 다르게 단순 weighted sum을 하였다.
이 두가지를 통해 Light GCN은 연산량을 크게 줄일 수 있었다.
수식에서 볼 수 있듯이 LightGCN 임베딩 벡터는 Feature transformation이나 nonlinear activation function을 제거하고 가중합으로 GCN을 적용한다.
이때 단순히 연결된 노드만 사용하였기 때문에 self-connection이 없는 것을 볼 수 있다 (eu 를 구할 때 eu를 사용하지 않고 ei만을 이용; 유저의 경우 연결된 아이템만 사용).
LightGCN 최종 임베딩 벡터는 k-층으로 된 레이어의 임베딩을 각각 αk배 하여 가중합으로 최종 임베딩 벡터를 계산한다.
이때 αk는 임베딩 벡터의 가중치인데, 학습파라미터로 설정해도 되고 하이퍼파라미터로 설정해도 괜찮다.(별차이는 없기 때문에 학습파라미터를 최대한 줄이는 의미에서 하이퍼파라미터로 설정한다.)
논문에서는 αk=(k+1)−1로 설정 하였는데 이는 깊어질수록(멀어질수록) 가중치는 작아진다는 의미이다.
결과 및 요약
학습을 통한 손실함수와 추천성능 모두 NGCF보다 뛰어나다.
training loss가 낮으면서 추천성능이 좋기 때문에 모델의 generalization power가 크다는 것을 나타낸다.
모델구조를 단순화 하였지만 Convolution이라는 핵심 아이디어는 놓치지 않았기 때문에 정보를 잘 압축하여 성능을 향상 시킨 것으로 볼 수 있다.