https://arxiv.org/pdf/1802.05814

생성 모델은 대표적으로 학습 데이터의 분포를 기반으로 샘플링하는 Explicit density 방식과 분포를 모른 상태로 샘플링하는 Implicit density 방식으로 나뉨.

이 논문은 Explicit density 기반의 VAE를 넷플릭스가 추천시스템에서 활용한 논문.
전반적으로 VAE와 유사하나 디코더 부분에서 어느 분포를 가정하는 정도의 차이를 보임.


Abstract

본 논문은 VAEs를 implicit feedback에 기반한 협업 필터링에 확장하여 적용하였음.

implicit feedback
ex ) 좋아요 버튼을 누르지 않았지만, 여러 번 본 콘텐츠

  • 기존의 협업 필터링은 선형 모델에 의존했는데, 이는 복잡한 데이터 구조를 잘 반영하지 못하는 한계가 존재. 변분 오토인코더는 비선형 모델로, 복잡한 상호작용을 잘 반영.

  • 추천을 생성하는 과정에서 데이터를 다항 분포로 가정하고, 베이지안 추론을 통해
    모델의 파라미터를 추정.

  • 목적 함수를 학습할 때, 기존 VAEs는 과도하게 정규화 되었다고 판단하고
    anneling 기법을 통해 개선한 regularization parameter를 사용하였음.


Introduction

기존 추천 시스템은 평균 정밀도 (mAP) 등의 순위 기반 척도를 활용하여 평가되었음.

그러나, Top-N ranking loss는 최적화하기 어렵기 때문에 이전에는 근사치를 사용.
이후 넷플릭스 팀은 multinomial likelihood이 암시적 피드백 데이터 모델링에 적합하며 가우시안, 로지스틱보다 ranking loss를 줄이는데 효과적임을 주장.

추천 시스템은 보통 수많은 사용자와 아이템이 존재하기 때문에 big data problem으로 여겨짐.
그러나 대부분의 사용자는 전체 아이템 중 극히 일부만 상호작용하기 때문에
우리가 필요한 상호작용 데이터는 매우 적어 small-data problem으로 봐야함.

따라서, sparse signals로부터 오버피팅을 방지하고자 본 논문에서는 확률적 잠재 변수 모델
(probabilistic latent-variable)을 구축하고 베이지안 접근법을 사용.

추천시스템에서 VAEs의 SOTA 성능을 달성하기 위해서는 아래와 같음.

1. multinomial likelihood 데이터 분포 사용
2. 기존 VAEs 목적함수의 regularization term 개선


Method

  • 𝑈 : 총 사용자 수
  • 𝐼 : 총 아이템 수
  • 𝑢 :개별 사용자
  • 𝑖 : 개별 아이템
  • 𝑋 : 사용자와 아이템 간의 상호작용 행렬

행렬 𝑋는 총 𝑈 명의 사용자가 총 𝐼 개의 아이템을 클릭한 횟수를 말하며 그 크기는 𝑈×𝐼.

uu의 클릭 데이터 xux_u는 Bag-of-Words 방식으로 각 아이템 𝑖에 대한 클릭 횟수를 요소로 가짐.

암시적 피드백 데이터를 다루기 위해 행렬 𝑋는 이진화.

( 이런 식으로 )

Model

변분 오토 인코더를 활용한 추천 시스템에서 사용자의 클릭 데이터를 생성하는 과정

zuN(0,IK)\mathbf{z}_u \sim \mathcal{N}(0, \mathbf{I}_K)

여기서 생성 과정은 사용자 uu에 대해 KK개의 차원을 가진 잠재 표현 zuz_u에서 샘플링 됨.
이때 zuz_u는 기존 VAE와 같이 인코더를 거쳐 표준 정규 분포 (Standard Gaussian)를 겟또.

π(zu)exp(fθ(zu))\pi(\mathbf{z}_u) \propto \exp(f_{\theta}(\mathbf{z}_u))

zuz_u는 디코더에 해당하는 비선형 함수 fθ()RIf_{\theta}( \cdot ) \in \mathbb{R}^I를 지나 변환되고, 이 값에 softmax를 적용하여 normalization을 진행. 이때 softmax output 값은 π(zu)\pi(\mathbf{z}_u)로 아이템 II에 대한
유저 uu의 확률 분포가 됨.

xuMult(Nu,π(zu))\mathbf{x}_u \sim \text{Mult}(N_u, \pi(\mathbf{z}_u))

사용자 𝑢의 아이템 총 클릭 수 𝑁𝑢𝑁_𝑢가 주어졌을 때, 클릭 데이터 𝑥𝑢𝑥_𝑢는 확률 π(zu)\pi(\mathbf{z}_u)를 가지는 다항 분포에서 샘플링되었다고 가정.

logpθ(xuzu)=ixuilogπi(zu)\log p_{\theta}(x_u | z_u) = \sum_{i} x_{ui} \log \pi_{i}(z_u)

위 식은 잠재 요인 관점에서 유저 uu에 대한 log-likelihood로 다중 클래스 분류의 Cross Entopy와 동일.

우변을 보면 logπi(zu)\log \pi_{i}(z_u)를 통해 0이 아닌 xux_u (실제로 클릭된 아이템)에 대해 확률 질량을 분배.
그러나 다항 분포는 softmax로 인해 π(zu)\pi(\mathbf{z}_u)의 합이 언제나 1이어야하기 때문에
모델은 상대적으로 높은 선호도를 가진 아이템에 더 많은 확률을 할당함.

: 이는 평가 지표인 Top-N Ranking Loss에서 좋은 성능을 내는 데 기여.


VAEs vs MultVAE

[ 기존 VAEs ]

  • 이진 분류 : 이항분포 (Bernoulli) → Sigmoid → Binary Cross Entropy
  • 회귀 : 정규분포 (Gaussian) → MSE

[ MultVAE ]

  • 다중 클래스 분류 : 다항 분포 → Softmax → Cross Entropy

Variational inference

생성 모델을 학습하기 위해 MultVAE도 VAEs처럼 변분 추론를 이용하여 파라미터 θ{\theta}를 추정.

q(zu)=N(μu,diag(σu2))q(z_u) = \mathcal{N}(\mu_u, \text{diag}(\sigma_u^2))

변분 추론은 계산하기 어려운 후방 분포 p(zuxu)p(z_u | x_u)를 가우시안 분포 q(zu)q(z_u)로 근사하여 학습.

결과적으로는 KL 발산을 최소화하여 q(zu)q(z_u)가 실제 후방 분포에 최대한 가까워지도록
{μu,σu2}\{ \mu_u, \sigma_u^2 \}를 최적화하는 것이 목표!

Amortized inference & the variational autoencoder

데이터셋에서 유저와 아이템의 수가 많을수록 최적화 해야하는 {μu,σu2}\{ \mu_u, \sigma_u^2 \}의 개수도 증가.
이는 수백만 명의 유저와 아이템이 있는 현실 세계에서 병목 현상을 초래함.

따라서 VAE에서는 개별 매개변수를 계산하는 대신 data-dependent 함수 (추론 모델) gϕg_ϕ를 사용.

gϕ(xu)[ μϕ(xu),σϕ(xu) ]R2Kg_{\phi}(x_u) \equiv [ \ \mu_{\phi}(x_u), \sigma_{\phi}(x_u) \ ] \in \mathbb{R}^{2K}

이는 MultVAE의 인코더이며 posterior에 근사하는 변분 분포 qϕ(zuxu)q_ϕ(z_u | x_u)는 아래와 같음.

qϕ(zuxu)=N(μϕ(xu),diag(σϕ2(xu)))q_{\phi}(z_u | x_u) = \mathcal{N}(\mu_{\phi}(x_u), \text{diag}(\sigma_{\phi}^2(x_u)))

qϕ(zuxu)q_ϕ(z_u | x_u)는 유저의 클릭 데이터 xux_u를 기반으로 잠재 변수 zuz_u의 가우시안 분포를 근사함.

즉, xux_u 데이터를 입력하면 추론 모델이 평균 μϕ(xu)\mu_{\phi}(x_u)과 분산 σϕ2(xu)\sigma_{\phi}^2(x_u)으로 정의된 변분 분포 qϕ(zuxu)q_ϕ(z_u | x_u)
매개변수 ϕ{\phi}를 출력하고 이 분포를 최적화하면 계산하기 어려운 posterior p(zuxu)p(z_u | x_u)를 근사 !

이때 qϕ(zuxu)q_ϕ(z_u | x_u)와 생성 모델 pθ(xuzu)p_{\theta}(x_u | z_u)를 함께 사용하면
오토인코더와 유사한 구조가 되어 변분 오토인코더 (VAE)라는 이름이 붙었음

Learning VAEs

VAE는 주변 우도 (marginal likelihood)를 통해 lower bound를 최대화하고자 함.

logp(xu;θ)Eqϕ(zuxu)[ logpθ(xuzu) ]KL(qϕ(zuxu)p(zu))L(xu;θ,ϕ)\log p(x_u ; \theta) \geq \mathbb{E}_{q_{\phi}(z_u | x_u)}[\ \log p_{\theta}(x_u | z_u)\ ] - \text{KL}(q_{\phi}(z_u | x_u) \parallel p(z_u)) \equiv L(x_u ; \theta, \phi)

이때 p(x)p(x)는 베이즈 정리에서 이름이 evidence로 붙여졌기 때문에 위의 부등식의 우변을
Evidene Lower Bound, 이른바 ELBO라 함.

다시 말해, VAE는 ELBO를 최대화하는 방식으로 학습되며
우변의 KL Divergence를 최소화할 때, zuz_uqϕq_{\phi}에서 샘플링하여 파라미터를 추정해야 함.

그러나 샘플링은 ϕ{\phi}에 대해 미분이 안되기 때문에 reparametrization trick을 사용.
ϵN(0,IK)\epsilon \sim \mathcal{N}(0, \mathbf{I}_K) 에서 샘플링하여 zu=μϕ(xu)+ϵσϕ(xu)z_u = \mu_{\phi}(x_u) + \epsilon \odot \sigma_{\phi}(x_u) 로 다시 재파라미터화 시킴.

이를 통해 샘플링 과정의 확률성이 분리되어 샘플링 되어진 zuz_u에 대해 역전파가 가능해짐.

Alternative interpretation of ELBO

사실 본 논문은 기존과 달리, ELBO를 아래와 같은 시각에서 해석하였음

첫번째 항은 모델이 데이터를 얼마나 잘 재구성하는지 (reconstruction error)를 나타내며
두번재 항인 KL divergence는 모델의 정규화 (regularization) 역할을 한다고 해석.

두 항은 trade-off 관계이며 정규화를 제어하는 β{\beta}를 도입하여 ELBO를 확장한 새로운 목적 함수를 제시.

Lβ(xu;θ,ϕ)Eqϕ(zuxu)[logpθ(xuzu)]βKL(qϕ(zuxu)p(zu))L_{\beta}(x_u ; \theta, \phi) \equiv \mathbb{E}_{q_{\phi}(z_u | x_u)}[\log p_{\theta}(x_u | z_u)] - \beta \cdot \text{KL}(q_{\phi}(z_u | x_u) \parallel p(z_u))

기존 VAE는 생성 모델로서 데이터를 생성하는 데 초점을 맞추고 있지만,
추천 시스템에서는 데이터를 생성하기보다는 정확한 추천을 제공하는 것이 더 중요함.

따라서 MultVAE는 데이터 생성 능력을 너프시키더라도 추천 성능을 높이는 방향으로 β{\beta}를 선택.

Selecting

β=0{\beta}=0에서 시작하여 β=1{\beta}=1까지 점진적으로 증가시켜 KL을 늘리며 최적의 β{\beta} 값을 선택.
이러한 탐색 과정을 KL annealing 이라 함.

  • annealing 없는 경우 성능이 낮으며 (파랑)
  • β=1{\beta}=1까지 annealing 하면 1에 가까워질수록 성능이 하락함 (초록)
  • 최적의 지점까지 annealing을 하고 멈춘 경우에 성능이 가장 높았음 (빨강)

KL annealing은 VAE를 학슴함에 있어 추가적인 runtime을 초래하지 않기 때문에 효율적.

A taxonomy of autoencoders

변분 오토인코더 (VAE) vs 오토인코더 (AE)

AE 관점에서의 최대 우도 추정은 아래와 같고

AE와 DAE는 지금까지의 VAE와는 구분되는 특징을 갖는데

AE와 DAE는 qϕ(zuxu)=δ(zugϕ(xu))q_{\phi}(z_u | x_u) = \delta(z_u - g_{\phi}(x_u)) 을 통해 (1)을 최적화 시킴. 즉, 생성 데이터와 원본의 차이를 줄이는 식으로 학습한다는 것. 그래서 VAE처럼 qϕ(zuxu)q_ϕ(z_u | x_u)를 prior에 맞출 필요가 없음 !

그러나 0이 아닌 xux_u에만 확률을 분배하기 때문에 오버피팅 가능성이 높아진다는 문제가 존재.

따라서 DAE (Denoising AutoEncoder)는 입력 데이터에 dropout 같은 노이즈를 추가하여 이를 해결

  • (a) : 입력을 재구성하는 데 집중
  • (b) : 입력에 노이즈 ϵ\epsilon를 추가하여 학습
  • (c) : VAE 묘사. 앞에서 이미 설명했으므로 pass

+) 참고로 Mult-DAE는 다항 분포 가능성을 사용하는 DAE의 변형 모델.

Prediction

훈련된 생성 모델을 바탕으로 Mult-VAE와 Mult-DAE는 동일한 매커니즘으로 예측을 수행.

유저의 과거 클릭 데이터 xux_u가 주어지면 정규화되지 않은 다항 확률 fθ(z)f_{\theta}(z)을 통해
모든 아이템을 순위화시킴.

  • Mult-VAE : 변분 분포의 평균값 μϕ(x)\mu_{\phi}(x)를 잠재 표현 zz로 사용
  • Mult-DAE : 인코더의 출력 gϕ(xu)g_{\phi}(x_u)을 그대로 zz로 사용

이때 zz는 사용자의 클릭 데이터를 기반으로 생성된 확률을 예측하는 데 사용됨.

VAE는 평균과 분산 2개를 생성하고 DAE는 하나의 파라미터만 생성하기 때문에 실무에서 빠른 추론이 필요하다면 DAE 계열을 사용하는 것이 나을 수 있음. 그러나 두 모델의 성능 차이가 그리 큰 편은 아님 !


Related works

VAEs on sparse data
최근 연구에 의하면 VAE는 large, sparse, high-dimensional 데이터를 모델링 할 때 underfitting 됨.
해당 논문에서도 annealing을 수행하지 않거나 β = 1로 설정할 경우, 유사한 이슈 발생.
따라서 β ≤ 1 로 설정하면 collaborative filtering 관점에서 항상 유저의 click history에 기반하여 예측.

Information-theoretic connection with VAE
VAE 모델은 유저의 click history를 기반으로 최대 엔트로피를 가지는 분포를 찾는 것이며,
위에서 정의한 ELBO의 regularization term은 이 때 β를 통해 prior를 얼마나 반영할지를 조절할지를 결정하는 파라미터. 더불어 β는 모델의 discriminative와 generative의 부분을 조절하는 역할.

Neural networks for collaborative filtering
신경망 기반 협업 필터링 초기 연구는 explicit feedback와 순위를 예측하는 것에 집중,
최근 연구는 implicit feedback에 중점을 둠.

본 연구와 가장 관련이 깊은 논문은 CDAE & NCF


Empirical Study

데이터셋은 옛날 것이고 성능은 아무튼 좋을거니까 관심있는 부분만 정리.

Metrics

Recall@RRecall@R & NDCG@RNDCG@R 두 개의 ranking 평가 지표 사용.
두 지표 모두 유저의 테스트 아이템의 예측 순위를 실제 순위와 비교하는 방식으로 계산.

Recall@RRecall@R

Recall@R(u,ω):=r=1RI[ω(r)Iu]min(R,Iu)Recall@R(u, \omega) := \frac{\sum_{r=1}^{R} I[\omega(r) \in I_u]}{\min(R, |I_u|)}

  • 사용자가 관심있는 아이템 중, 추천한 아이템 K개가 얼마나 포함되는지의 비율
  • ω(r)\omega(r)는 순위 rr에 있는 아이템을 나타냄
  • I[]I[\cdot]는 indicator 함수
  • 분모는 RR 과 사용자가 클릭한 아이템 수 Iu|I_u| 중 더 작은 값을 취함
  • Recall@RRecall@R의 최대값은 1, 이는 관련된 모든 아이템이 상위 R개의 순위에 있는 경우를 의미

NDCG@RNDCG@R

DCG@R(u,ω):=r=1R2I[ω(r)Iu]1log(r+1)DCG@R(u, \omega) := \sum_{r=1}^{R} \frac{2^{I[\omega(r) \in I_u]} - 1}{\log(r+1)}

  • 상위 R개의 추천에 대한 순위 품질을 평가
  • 추천 항목이 얼마나 중요한 순서대로 잘 배치되었는지를 반영
  • log(r+1)\log(r+1)는 순위 rr에 따른 가중치를 주기 위해 사용됨
  • NDCG@RDCG@R을 이상적인 DCG 값으로 나누어 0에서 1 사이로 정규화한 값
  • 사용자의 클릭 아이템들이 모두 상위에 위치할 때 최댓값 1을 가짐

Experimental setup

strong generalization 하에 모든 유저를 training / validation / test 셋으로 분할.

training
전체 클릭 기록을 기반으로 모델을 학습.

validation & test
일부 클릭 기록을 통해 모델이 user-level representation을 학습하고
사용하지 않은 나머지 클릭 기록에 대해 성능을 평가.

훈련과 평가에서 동일한 사용자가 포함될 경우 일반화 평가가 쉬워지므로,
이를 해결하기 위해 훈련에 포함되지 않은 사용자 ( held-out user )들의 클릭 기록 80%를
랜덤하게 선택하여 fold-in set을 구성해 학습하고 나머지 20%로 예측 성능 평가.

VAE & DAE에 대해

[ 공통점 ]

  • input layer에 대해 dropout(p=0.5) 적용
  • batch_size= 500
  • opimizer = Adam
  • ML-20M 데이터셋의 경우, 200 epoch 동안 train

[ 차이점 ]

  • Mult-DAE : input layer에 대해 활성화 함수로 tanh을 적용하고 L2 regularization 수행
  • Mult-VAE : 인코더의 output이 가우시안 분포로 사용되기 때문에 0-hidden-layer MLP 구조 사용


참고 자료

https://huidea.tistory.com/297

https://pyy0715.github.io/VAE_CF/#222-alternative-interpretation-of-elbo

https://velog.io/@nochesita/%EC%B6%94%EC%B2%9C%EC%8B%9C%EC%8A%A4%ED%85%9C-Variational-Autoencoders-for-Collaborative-Filtering-MultVAE

profile
아좌아좌 어리버리 내 인생 ><

0개의 댓글