[Recommender System / Paper review] #29 Variational Autoencoders for Collaborative Filtering
- 논문 링크(873회 인용)
Summary
- vae 모형을 cf 알고리즘에 적용한다. 유저와 아이템간의 interaction을 관측된 데이터로 보고 여기에 내재하는 multinomial 분포를 추정하고자 한다.
- latent variable을 샘플링하고 확률의 의미를 가지도록 1로 정규화한다. 이를 multinomial 분포의 파라미터로 사용하여 유저가 아이템과 interaction하는 여부를 샘플링한다. 즉, 유저와 아이템간의 interaction 관계를 generative model로 가정하는 것이다.
- 파라미터 추론은 vae 논문에서 나온 reparametrization trick을 사용한다. 이를 통해 elbo에 대한 gradient estimator을 구하고 파라미터 최적화를 진행한다.
Motivation
- cf에 관한 많은 연구가 진행되었으나 대부분의 모델 형태가 linear하기 때문에 여기서 오는 한계점이 분명히 존재한다.
- 반면에 vae는 non-linear probabilistic latent-variable models이기 때문에 비선형 관계를 모델링할 수 있다. 따라서 cf에 vae을 적용하여 cf가 가지는 단점을 극복하고자 한다.
- 특히, multinomial likelihood을 사용하여 유저별가 내재적으로 가지고 있는 각 아이템에 대한 확률을 추정한다. 이전가지는 multinomial likelihood가 cf에서 많이 사용되지 않았다.
- gaussian, logistic likelihood을 사용한 것과도 비교를 해볼텐데 multinomial likelihood을 사용하는 것이 cf 문제 상황에서 조금 더 자연스럽기도 하고 실험 결과, 성능도 더 좋게 나왔다. 따라서 본 논문에서는 multinomial likelihood을 사용한다.
Approach
Notation
- u,i: user index, item index
- $\mathbf{X} \in \mathbb{N}^{U \times I}$: 유저x아이템 클릭 행렬
- $\mathbf{x}_u = [x_{u1}, \cdots, x_{uI}]^T \in \mathbb{N}^I$: 유저 u의 각 아이템에 대한 클릭 횟수를 의미하는 벡터. 논문에서는 이를 binarize 한다.
Model
- $\mathbf{z}_u$: gaussian으로부터 K차원의 latent vector을 샘플링한다.
- $f_\theta \in \mathbb{R}^I$: non-linear function으로 $\mathbf{z}_u$을 확률의 형태로 변환한다.
- $Mult(N_u, \pi (\mathbf{z}_u))$: 유저 u의 모든 클릭 수인 $N_u = \sum_i x_{ui}$가 주어졌을 때 $\mathbf{x}_u$는 $\pi(\mathbf{z}_u)$의 확률을 가지는 multinomial 분포에서 샘플링 됐을 것이라고 가정한다.
- 유저 u의 클릭 이력이 multinomial 분포에서 생성되었다고 가정하기 때문에, 논문 서두에서도 vae을 cf에 적용하되 multinomial likelihood을 사용한다고 말한 것이다.
유저 u에 대한 log-likelihood는 아래와 같다.
논문의 저자는 클릭 데이터를 모델링하기에 multinomial 분포는 적절하다고 말한다. multinomial likelihood는 non-zero entries인 $\mathbf{x}_u$에 probability mass을 준다. 하지만 $\pi (mathbf{z}_u)$는 합이 1이 되어야 하기 때문에 limited budget을 가지게 되고 따라서 더 클릭할 것 같은 아이템에 더 많은 확률을 준다.
비교를 위해 gaussian, logistic likelihood을 cf에 접목한 모형을 제시한다. generative function인 $f_\theta (\cdot)$의 output을 $f_\theta (\mathbf{z}_u) = [ f_{u1}, \cdots, f_{uI}]^T$이라고 하자. gaussian log likelihood는 아래와 같다.
logistic log loglikelihood는 아래와 같다.
logistic likelihood와 multinomial likelihood의 차이점은 무엇일까?
Variational inference
generative 모델을 학습하기 위해 $\theta$을 추정해야한다. 이를 위해 intractable posterior distribution $p(z_u | x_u)$을 근사해야하는데 이때 variational inference을 사용한다. posterior distribution에 대한 근사 분포로 variational distribution을 아래와 같이 정의한다.
variational inference의 목표는 free variational parameters인 $\{ \mu_u, \sigma^2_u \}$을 최적화하여 $KL (q(z_u) || p(z_u | x_u))$을 최소화하는 것이다.
Amortized inference and the variational autoencoder
유저 u의 variational distribution은 평균, 분산 파라미터를 가지며 유저의 수가 증가할수록 파라미터의 수도 선형적으로 증가한다. vae에서는 이로인해 발생하는 계산적인 부담을 막기 위해서 데이터에 의존하는 variational parameters을 설정한다.
이 식을 보면 데이터에 대한 함수로 $\mu_\phi, \sigma^2_\phi$을 가정하고, 최적화도 $\phi$에 대해 진행한다. 최적화가 진행될수록 $q_\phi (z_u | x_u)$는 posterior distribution인 $p(z_u | x_u)$에 가까워진다. 데이터를 입력으로 latent variable을 샘플링하는 모습이 마치 autoencoder와 비슷하여 vae라는 이름을 얻은 것을 알 수 있다.
Learning VAE
marginal log likelihoodd을 lower bound한 elbo 값을 최적화한다.
vae 논문에서는 elbo에 대한 gradient estimator을 얻기 위해 monte carlo estimator을 사용하는데, 이때 더 안정적인 estimator을 얻기 위해 reparametrization trick을 사용한다. $\mathbf{\epsilon} \sim \mathcal{N}(0, \mathbf{I}_K)$로 샘플링하고 $\mathbf{z}_u$을 아래와 같이 reparametrize 한다.
gradient update는 아래와 같이 진행한다.
Alternative interpretation of ELBO
VAE 논문에서는 ELBO의 첫번째 항을 reconstruction error, 두번째 항인 KL 값을 regularization으로 보기도 한다. 본 논문에서는 이 관점을 사용하여 하이퍼파라미터 $\beta$을 통해 regularization의 정도를 조정하는 것을 제안한다.
$\beta$에 따라서 데이터에 잘 맞춰지는 정도 (likelihood, $p_\theta (x_u | z_u)$와 posterior가 prior에 가까워지는 정도 (KL)의 trade-off가 결정된다. 논문에서는 $\beta$을 1에 가깝게 증가시키며 학습을 진행할 것을 권장한다.
Computational burden
유저별로 아이템에 대한 multinomial 분포를 가정하기 때문에 만약 아이템의 수가 매우 많다면 multinomial 확률을 구할 때 합해서 1을 만드는 과정에서 computation burden이 발생할 수 있다. 논문에서 이는 Botev et al.을 참고하여 normalization factor을 근사할 것을 제시한다.
Prediction
VAE와 DAE 모두 동일한 방식으로 예측을 진행한다. 유저의 클릭 이력인 $\mathbf{x}$가 주어졌을 때 un-normalized predicted multinomial probability인 $f_\theta (\mathbf{z})$에 따라 아이템의 순위를 나열한다. VAE에서는 $\mathbf{z}$가 variational distribution의 평균 $\mathbf{z} = \mu_\phi (\mathbf{x})$으로 하고 DAE에서는 $\mathbf{z} = g_\phi (x)$로 한다.
이와 같이 autoencoder을 사용하면 예측시에 $g_\phi, f_\theta$ 함수만 통과시키면 된다. 만약에 mf와 같은 cf 계열에서 훈련 데이터에 존재하지 않은 유저의 클릭 이력이 주어졌다면 어떤 형태의 최적화를 진행해야한다. 다시 말해, autoencoder가 더 빠른 시간 안에 prediction을 할 수 있다는 것이다.
Results
Datasets
- movielens: 4점 이상인 평점만 binarize 하였다.
- netflix prize: 데이터를 binarize하였다.
- million song dataset
Baselines models
- weighted matrix factorization
- SLIM
- Collaborative denoising autoencoder
- Neural collaborative filtering
- 모든 대용량 데이터에서 VAE 모형이 높은 성능을 보였다.
- 데이터 크기가 작은 상황에서도 DAE가 높은 성능을 보였다.
- multinomial likelihood을 이용한 vae가 모두 좋은 성능을 보였다.
- 다만, multinomial이랑 logistic likelihood을 이용한 결과가 비슷한데, 이는 두 분포가 사실 유사한 특징을 공유하기 때문이다.
- 대부분의 경우에 VAE가 더 좋은 성능을 보이지만, 특히 데이터의 수가 적은 유저에 대해 예측을 하는 경우에 VAE가 더 좋은 성능을 보였다.
- 아무래도 VAE는 더 강한 모델링 가정을 부여하기 때문에 유저x아이템의 interaction 데이터가 적을 수록 더 robust한 모습을 보이는 것으로 해석할 수 있을 것 같다.
Conclusion
- vae부터 시작해서 cf에 vae를 적용하는 과정까지 공부해보았다.
- 한가지 의문점이 드는 것은, mult-vae에서 $\mu_\phi, \sigma^2_\phi$를 어떻게 정하는지이다. 이는 곧 reparameterization trick을 어떻게 사용했는지에 대한 얘기인데 논문에서는 정확히 어떤 함수를 사용했는지 명시적으로 나와있는 것 같지 않아서 아쉬웠다. 이 부분은 저자가 코드를 공개해두었으니 코드를 분석하며 살펴봐야할 것 같다.
- autoencoder 틀 안에서 유저의 아이템에 대한 선호도를 generative model로 가정하고 vae을 통해 추론하는 과정은 흥미로웠다. 나중에 denoising autoencoder까지 같이 공부해봐야겠다.