Neural Graph Collaborative Filtering
유저-아이템 상호작용을 GNN으로 임베딩 과정에서 인코딩하는 접근법을 제시한 논문
Collaborative Signal(상호 작용)
유저-아이템의 상호작용을 임베딩 학습과정에 반영한다.
유저, 아이템 개수가 많아지면 모든 상호작용을 1대1로 표현하기엔 한계가 존재한다.
High-order Connectivity를 임베딩하여 해결한다.
**High-Order Connectivity(**경로가 1보다 큰 연결)
아이템과 유저의 상호작용을 GNN을 활용하여 그래프로 표현한 것.
유저와 아이템간의 상호작용 정도를 거리를 통해 파악할 수 있다.
NGCF 전체 구조
임베딩 레이어(Embedding Layer)
유저-아이템의 초기 임베딩을 제공한다.
$$ \mathbf{E}=[\underbrace{\mathbf{e}{u_1}, \cdots, \mathbf{e}{u_N}}{\text {users embeddings }}, \underbrace{\mathbf{e}{i_1}, \cdots, \mathbf{e}{i_M}}{\text {item embeddings }}] . $$
기존의 CF와 동일하다.
기존의 CF모델은 임베딩이 곧바로 interaction function에 입력된다.
NGCF에서는 이 임베딩을 GNN 상에서 전파시켜 refine한다.
⇒ Collaborative Signal을 명시적으로 임베딩 레이어에서 주입하기 위한 과정
임베딩 전파 레이어(Embedding Propagation Layer)
high-order connectivity 학습
Message를 구성하고 결합하는 단계
Message
유저-아이템의 collaborative signal을 담은 것.
Message Construction
가중치 공유 — 유저-아이템 간 관계를 고려할 수 있도록 메시지를 구성한다.
user 노드 기준으로 수식이 설명된다.
$$ \mathbf{m}_{u \leftarrow i}=\frac{1}{\sqrt{\left|\mathcal{N}_u\right|\left|\mathcal{N}_i\right|}}\left(\mathbf{W}_1 \mathbf{e}_i+\mathbf{W}_2\left(\mathbf{e}_i \odot \mathbf{e}_u\right)\right) $$
$\mathbf{m}_{u \leftarrow i}:$ 아이템 $i$에서 $u$로 전달되는 메시지
아이템 $i$의 임베딩 + 아이템 $i$와 유저 $u$의 상호작용$(\mathbf{e}_i \odot \mathbf{e}_u)$
signal의 크기에 대한 Normalization.
유저 $u$와 연결된 아이템이 많을수록 signal이 커진다.
개별 메시지를 이웃한 노드의 개수로 나누어준다.
$W_1, W_2:$ weight matrix
$\odot:$ element-wise production
$N_u, N_i:$ 유저, 아이템의 이웃한 유저,아이템 집합
Message Aggregation
$$ \mathbf{e}u^{(1)}=\operatorname{LeakyReLU}\left(\mathbf{m}{u \leftarrow u}+\sum_{i \in \mathcal{N}u} \mathbf{m}{u \leftarrow i}\right) $$
$u$의 이웃 노드로부터 전파된 message$(\mathbf{m}_{u \leftarrow i})$들을 모두 결합한 후, 활성함수를 적용한다.
$l$개의 임베딩 전파 레이어를 쌓으면, 유저 노드는 $l$차 이웃으로부터 전파된 메시지 이용 가능
$$ \mathbf{e}u^{(l)}=\operatorname{LeakyReLU}\left(\mathbf{m}{u \leftarrow u}^{(l)}+\sum_{i \in \mathcal{N}u} \mathbf{m}{u \leftarrow i}^{(l)}\right),
$$
$l$ 단계에서 유저 $u$의 임베딩은 $(l-1)$ 단계의 임베딩을 통해 재귀적으로 형성
이를 Higher order propagation라고 한다.
$$ \left\{\begin{array} {l}\mathbf{m}{u \leftarrow i}^{(l)}=p{u i}\left(\mathbf{W}_1^{(l)} \mathbf{e}_i^{(l-1)}+\mathbf{W}_2^{(l)}\left(\mathbf{e}_i^{(l-1)} \odot \mathbf{e}u^{(l-1)}\right)\right), \\\mathbf{m}{u \leftarrow u}^{(l)}=\mathbf{W}_1^{(l)} \mathbf{e}_u^{(l-1)},\end{array}\right. $$
결과적으로 $L+1$개의 User Embedding과, $L+1$개의 Item Embedding이 생성된다.
유저-아이템 선호도 예측 레이어(Prediction Layer)
서로 다른 전파 레이어에서 refine된 임베딩을 concat한다.
$L$차 까지의 임베딩 벡터를 concatenate하여 최종 임베딩 벡터를 계산한다.
$$ \mathbf{e}_u^=\mathbf{e}_u^{(0)}\|\cdots\| \mathbf{e}_u^{(L)}, \quad \mathbf{e}_i^=\mathbf{e}_i^{(0)}\|\cdots\| \mathbf{e}_i^{(L)} $$
유저-아이템 벡터를 내적하여 최종 선호도 예측값을 계산한다.
$$ \hat{y}_{\mathrm{NGCF}}(u, i)=\mathbf{e}_u^{\top} \mathbf{e}_i^ $$
임베딩 전파 레이어가 많아질수록 모델의 추천 성능이 향상된다.
실험 결과, 대략 $L=3 \sim 4$일 때 가장 좋은 성능
레이어가 너무 많이 쌓이면 overfiting이 발생할 수 있다.
MF 보다 더 빠르게 수렴하고 recall 도 높다.
Model Capacity가 크고 임베딩 전파를 통해 representation power가 좋아졌다.
MF와 비교하여 유저-아이템이 임베딩 공간에서 더 명확하게 구분된다.
레이어가 많아질수록 명확해진다.