본문 바로가기
추천 시스템/Paper

[논문 리뷰] Neural Collaborative Filtering (2017)

Abstract

본 논문은 implicit feedback을 기반으로 하는 collaborative filtering이라는 추천 알고리즘을 신경망(neural networks) 을 기반으로 하는 기술을 개발하기 위해 노력한다.

2017년 일부 연구는 추천을 위해 딥러닝을 사용했지만 주로 항목에 대한 텍스트 설명 및 음악의 음향적 특징과 같은 보조 정보를 모델링하는 데 사용했습니다.

collaborative filtering의 핵심 요소인 user–item interaction을 모델링할 때 그들은 여전히 matrix factoriziation에 의존하고 user-item latent features내적을 적용했습니다.

Network-based Collaborative Filtering (NCF) : 내적을 데이터에서 임의의 기능을 학습할 수 있는 neural architecture로 대체한다.

  • 일반적이며 matrix factorization을 표현하고 일반화할 수 있습니다.
  • 비선형성으로 NCF 모델링을 강화하기 위해 multi-layer perceptron(MLP) 을 활용하여 user–item interaction function을 학습하는 것을 제안한다.

1. Introduction

개인화된 추천 시스템의 핵심은 collaborative filtering으로 알려진 과거 상호 작용(예: 평점 및 클릭)을 기반으로 항목에 대한 사용자의 선호도를 모델링한다.

  • 다양한 collaborative filtering 기술 중에서 Matrix Factorization(MF)이 가장 널리 사용되며, user와 item을 나타내기 위해 latent features의 vector를 사용하여 user와 item을 공유된 잠재 공간(shared latent space)으로 투영한다.

Netflix Prize에 의해 대중화된 MF는 잠재 요인 모델 기반의 추천에 대한 사실상의 표준(defacto) 접근 방식이 되었습니다.

latent features를 단순히 선형적으로 곱하여 결합하는 내적은 user interaction 데이터의 복잡한 관계를 학습하기에 충분하지 않을 수 있다.

본 논문은 noisy implicit feedback을 모델링하기 위해 DNN을 활용하는 방법의 중심 주제를 탐구한다.

잡음이 있는 암시적 피드백 신호를 모델링하기 위해 DNN을 활용하는 방법의 중심 주제를 탐구한다.

Contribution

user-item latent features을 모델링하기 위한 neural network architecture를 제시하고, neural network 기반의 collaborative filtering을 위한 일반 프레임워크 NCF를 고안한다.

MF는 NCF의 전문화로 해석될 수 있고, MLP를 활용하여 NCF 모델링에 고차원의 비선형적인 특징을 학습할 수 있다.

2개의 실제 데이터를 통해 NCF의 효율성과 collaborative filtering을 위한 딥러닝의 가능성을 보여준다.

2. PRELIMINARIES

2.1 Learning from Implicit Data

implicit feedback으로 부터 user-item interaction $y_{ui}$ 는 다음과 같이 binary하게 나타낸다.

$$
Y_{m,n} =
\begin{pmatrix}
y_{1,1} & y_{1,2} & \cdots & y_{1,n} \\
y_{2,1} & y_{2,2} & \cdots & y_{2,n} \\
\vdots & \vdots & \ddots & \vdots \\
y_{m,1} & y_{m,2} & \cdots & y_{m,n}
\end{pmatrix}
$$

$$
y_{u,i}=
\begin{cases}
1, & \mbox{if interation (user}u \mbox{, item }i)\mbox{
is observed;} \\
0, & \mbox{otherwise.}
\end{cases}
$$

$y_{ui}$ 값이 1이면 user $u$ 와 item $i$ 사이에 interaction이 있음을 나타낸다. 하지만 해당 interaction이 $u$ 와 item $i$의 선호 관계를 의미하지는 않는다.

반대로, $y_{ui}$ 값이 0이라도, user가 해당 item을 비선호하는 것이 아니라 단순히 interaction이 발생하지 않았다는 것을 의미한다.

이처럼 사용자의 선호도에 대한 noise 신호만 제공하기 때문에 implicit data로부터 학습하는 데 어려움이 있다.

interaction이 있을 경우 item에 대한 user의 관심이 반영되지만, interaction이 없을 경우 missing data로 처리하기 때문에 부정적인 feedback이 부족하게 된다.

Implicit feedback의 추천 문제는 항목의 순위를 매기는 데 사용되는 Y에서 관찰되지 않은 항목의 점수를 추정하는 문제로 다음과 같이 공식화된다.
$$
\hat{y}_{u,i} = f(u,i|\Theta)
$$

  • $\hat{y}_ {u,i} : y_ {u,i}$ 의 예측값
  • $f, :$ 모델 매개변수를 예측된 점수에 매핑하는 함수
  • $\Theta , :$ 모델 매개변수(user, item)

일반적으로 매개변수 $\Theta$ 를 추정하기 위해 목적 함수(objectiver functoin)를 최적하는데 다음에 제시되는 2개의 목적 함수가 가장 일반적이다.

  • $L_1 = min \frac{1}{2}(\hat{y}_ {u,i}-y_ {u,i})^2$
  • $L_2 = max(0,f(y_{unobs}-f(y_{obs})+\alpha) ; s.t ; rank(y_{obs}) > rank(y_{unobs})$

$L_1$은 point wise loss function으로, regression문제에 많이 사용되며 실제값($y_{u,i}$)과 예측값($\hat{y}_{u,i}$)의 차이를 최소화하며 된다.

$L_2$는 pairwise loss function으로, 관측값($y_{obs}$)이 관측되지 않은 값($y_{unobs}$)보다 큰 값을 갖도록 하여 실제값과 예측값의 차이가 아닌 관측값과 관측되지 않은 값의 차이를 최대화한다.

2.2 Matrix Factorization

MF(Matrix Factorization)는 Y를 저차원의 행렬 2개($P,Q$) 로 분해하는 것으로, 반복적인 내적을 통해 $y_{u,i}$를 예측할 수 있다.

[출처: Source: data-artisans.com]
$$
\hat{y}_ {u,i}=f(u,i|p_ u,q_ i)=p_ uq_ i^T=\sum_ {k=1}^K{p_ {uk}q_ {ki}}
$$

MF의 한계 : MF의 내적과 같은 linear 모델은 user와 item의 복잡한 관계를 표현하는데 한계가 있다.

왼쪽의 user-item matrix (a)가 있을 때, 두 유저간의 유사도를 오른쪽의 user latent space (b)와 같이 나타낼 수 있다.
$$
s_{23}(0.66) > s_{12}(0.50) > s_{13}(0.40)
$$

먼저 user-item matrix의 $u_1,u_2,u_3$ 을 통해 user latent space의 $p_1,p_2,p_3$ 를 나타낼 수 있다.
$$
s_{41}(0.60 > s_{43}(0.40) > s_{42}(20)
$$
하지만, 새로운 $u_4$ 를 고려하면 기존의 user latent space에서 $p_4$ 를 표현할 수 없다.

즉, Matrix Factorization의 단순하고 고정된 내적 과정은 저차원의 latent space에서 user와 item의 복잡한 관계를 추정하는 것에 한계를 가진다.

이러한 문제를 해결하는 한 가지 방법은 매우 큰 $K$ 차원의 latent factor를 사용하는 것이다. 그러나 이 방법은 모델의 generalization에 부정적인 영향을 미칠 수 있다.

따라서 본 논문은 해당 문제를 DNN을 이용하여 문제를 해결한다.

3. NEURAL COLLABORATIVE FILTERING

3.1 General Framework

한 층의 output이 다른 층의 input으로 이루어져 user-item interaction을 추정하는 MLP 구조를 적용한다.

input Layer (sparse)

user와 item을 one-hot-encoding를 통해 binarized sparse vector로 변환한다.

Embedding Layer

embedding layer란 input 단계의 sparse vector를 dense vector로 맵핑하는 단계를 의미한다. 보통 dense vector를 얻기 위해 임의로 가중치를 초기화 하지만, 별도의 fully connected layer를 사용할 수 있다.

Embedding layer에서는 Fully-connected layer를 통해 input Layer의 sparse vector를 dense vector로 맵핑한다.

이 때 얻은 dense vector를 흔히 말하는 user-item의 latent vector라고 할 수 있으며, latent vecotr를 neural collaborative filtering layers라고 할 수 있는 MLP 구조에 입력하여 score를 예측하는 과정을 가지게 된다.

Fully-connected layer를 통해 dense vector를 얻는 과정은 hidden layer의 weight(가중치)가 업데이트되는 결과물이라고 생각하면 된다.

Neural CF Layers

user latent vector와 item latent vector를 concatenation한 vector를 input으로 받아 deep neural network를 통과하는 단계다.

각 레이어는 user–item interaction의 특정 잠재 구조를 발견하도록 커스터마이징할 수 있다.

  • user latent vector = $P^Tv_u^U$ (이때, $v_u^U$ 는 user $u$ 를 나타내는 one-hot 벡터)
  • item latent vector = $Q^Tv_i^I$ (이때, $v_i^I$는 item $i$를 나타내는 one-hot 벡터)
  • deep neural network = $\phi_X(\dots\phi_2(\phi_1(P^Tv_u^U,Q^Tv_i^I))\dots), , where , \phi(.) = x$ 번째 neural network

Output Layers

$y_{u,i}$ 의 예측 점수 $\hat{y}_ {u,i}$ 이며 , $\hat{y}_ {u,i}$ 와 목표값 $y_{u,i}$ 간의 pointwise loss를 최소화하여 학습을 수행한다.

본 논문은 신경망 모델링 부분에 초점을 두기 때문에 다른 모델 훈련 방법들(Bayesian Personalized Ranking, margin-based loss)은 고려하지 않는다.
$$
\hat{y}_ {u,i} = f(P^Tv_ u^U,Q^Tv_ i^I|P,Q,\Theta_ f)=\phi_ {out}(\phi_ X(\dots\phi_ 2(\phi_ 1(P^Tv_ u^U,Q^Tv_ i^I))\dots)), \quad 0 \leqq \hat{y}_ {u,i} \leqq 1
$$

3.1.1 Learning NCF

본 논문은, implicit data가 $y_{u,i}=1 , or , 0$ 과 같은 이진 속성을 고려하여 Gaussian distribution에 의해 관측값이 생성된는 Squared loss가 아닌 bernoulli distribution을 이용하여 likelihood function을 다음과 같다.
$$
p(\mathcal{Y},\mathcal{Y}^-|P,Q,\Theta_ f) = \prod_ {(u,i)\in\mathcal{Y}} {\hat{y}_ {u,i}}\prod_ {(u,j)\in\mathcal{Y}^-} {(1-\hat{y}_ {u,j})}
$$
여기서 $\mathcal{Y}$ 는interaction이 관측 데이터이고, $\mathcal{Y}^-$ 는 interaction이 관측되지 않은 데이터이다.

objective function으로 사용하기 위한 Negative log likelihood의 형태는 다음과 같다. (binary cross-entropy loss와 동일)
$$
L=-\sum_ {(u,i)\in\mathcal{Y}}\log\hat{y}_ {ui} - \sum_ {(u,i)\in\mathcal{Y}^-}\log(1-\hat{y}_ {uj})\\
\qquad \qquad =-\sum_ {(u,i)\in\mathcal{Y}\cup\mathcal{Y}^-}y_ {ui}\log\hat{y}_ {ui}+(1-y_ {ui})\log(1-\hat{y}_ {ui}).
$$

3.2 Generalized Matrix Factorization (GMF)

MF는 NCF의 특수한 경우로 해석될 수 있다.

첫번째 NCF layer의 mapping function은 다음과 같다.
$$
\phi_1(p_u,q_i)=p_u \odot q_i
$$

  • $p_i : P^Tv_u^U$
  • $q_i : Q^Tv_i^I$
  • $\odot : $ element-wise product of vectors

그런 다음 벡터를 output layer에 project하면 다음과 같다.
$$
\hat{y}_ {ui} = a_ {out}(h^T(p_ u\odot q_ i))
$$

  • $a_{out} : $ activation function
  • $h : $ weight

만약 $a_{out}$ 이 identity function(항등함수)이고, $h$ 를 [1,1,1,....] 형태의 uniform vector라면, NCF framework는 MF와 동일하다. GMF는 NCF framework에서 일반화한 경우로 $a_{out}$ 은 sigmoid function이고, $h$ 를 non-uniform weight로 하여 latent feature 사이의 중요도를 고려할 수 있도록 하였다.

3.3 Multi-Layer Perceptron (MLP)

단순히 vector를 concatenation하는 것은 user와 item의 latent features를 고려하지 못하므로 Collaborative Filtering 효과를 모델링하기에는 충분하지 않다.

이 문제를 해결하기 위해 표준 MLP를 사용하여 user와 item의 latent features의 interaction을 학습한다.

즉, GMF는 linear하고 fixed한 특징으로 인해 user와 item간의 복잡한 관계를 표현하지 못하는 반면 MLP는 non-linear하고 flexible하기 때문에 보다 복잡한 관계를 표현할 수 있다.

NCF framework에서 MLP 모델은 다음과 같이 정의된다.
$$
z_ 1 = \phi_ 1(p_ u,q_ i) = \begin{bmatrix}p_ u\\q_ i\end{bmatrix},\\
\phi_2(z_ 1) = a_ 2(W_ 2^Tz_ 1+b_ 2),\\
.....\\
\phi_ L(z_ {L-1}) = a_ L(W_ L^Tz_ {L-1}+b_ L)\\
\hat{y}_ ui = \sigma(h^T\phi_ L(z_ {L-1}))
$$

  • $\phi_1 :$ concatenation function ($\phi_l , (l\ge2)$ 은 Neural Network)
  • $W_x : $ x번째 layer의 Weight matrix
  • $b_x :$ x번째 layer의 bias vector
  • $a_x :$ x번째 layer의 activation function

이때 차이점은 GMF는 $\phi_1(.)$ 가 linear구조인 반면, MLP는 $\phi_L(.)$ 가 non-linear 구조이다. 따라서 MLP는 GMF에 비해 여러 층의 신경망을 사용하여 더욱 비선형적이며 복잡한 관계를 학습할 수 있다.

3.4 Fusion of GMF and MLP

본 논문은 복잡한 user-item interaction을 더 잘 모델링하기 위해 GMF와 MLP를 융합한 모델을 제시한다.

  • GMF : linear kernel을 적용하여 latent feature interactions을 모델링한다.
  • MLP : non-linear kernel을 사용하여 데이터로부터 interaction function을 학습한다.

GMF와 MLP를 융합한 가장 간단한 모델은 GMF와 MLP 모두 같은 embedding layer를 공유하고 각 모델의 결과값을 결합하여 확률값을 추정한다.

  • embedding layer를 공유한다는 것은 같은 embedding vector를 사용한다는 것이다.
  • 하지만 embedding layer를 공유하면, 임베딩 차원이 같아야 하기 때문에 각 모델에 적합한 임베딩 차원(embedding size)을 택할 수 없어 최적의 앙상블(ensemble) 결과를 얻지 못할 수 있다.

GMF와 MLP를 별도의 임베딩을 학습하고 last hidden layrer를 연결하여 두 모델을 결합하여 확률값을 추정할 수 있다.

$$
\phi^{GMF} = p_{u}^{G} \odot q_{i}^{G},\\
\phi^{MLP} = a_{L}(W_{L}^{T}(a_{L-1}(...a_{2}(W_{2}^{T} \begin{bmatrix} p_{u}^{M} \\ q_{i}^{M} \end{bmatrix}+b_{2})...))+b_{L}),\\
\hat{y}_{u,i} = \sigma(h^{T} \begin{bmatrix}\phi^{GMF} \\ \phi^{MLP} \end{bmatrix})
$$

  • $p_u^G$ : User embedding for GMF
  • $p_u^M$ : User embedding for MLP
  • $q_i^G$ : Item embedding for GMF
  • $q_i^M$ : Item embedding for MLP

이 모델은 user–item latent structures를 모델링하기 위해 MF의 선형성과 DNN의 비선형성을 결합한 모델로 NeuMF, Neural Matrix Factorization 이라고 정의한다.

3.4.1 Pre-training

NeuMF는 GMF와 MLP의 앙상블이기 때문에 GMF와 MLP의 Pre-trained 모델을 사용하여 NeuMF를 초기화한다.

구현

 

References

 


🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!!  🏋

댓글