본문 바로가기
ML&DL/Recommender System

[Recommender System / Paper review] #16 Collaborative Deep Learning for Recommender Systems

by 거북이주인장 2023. 4. 14.

Summary

  • content-based 방법과 cf 방법을 섞은 hybrid rs의 한 종류이다.
  • 이때, content-based을 stacked denoising autoencoder (SDAE)로 구현한다.
  • 영화의 컨텐츠를 bag of words로 표현하고, 이를 SDAE에 통과시켜 input을 잘 표현하는 dense vector을 만든다. 그리고 이를 item vector로 사용한다.
  • SDAE뿐만 아니라 rating matrix의 generation process도 베이지안 계층모형을 사용하여 정의한다. 
  • MAP 추정치를 구하기 위해서 EM 방식의 최적화를 진행한다.

Motivation

  • RS의 목적은 rating matrix의 결측치를 채워 넣는 것인데, 대부분의 경우 이 행렬은 매우 sparse하다. 즉, 관측된 rating이 희소한 경우가 많다.
  • 이를 극복하기 위해 collaborative topic regression이 제안되었는데, 이또한 부가적인 정보가 매우 희소하다면, CTR에 의해 학습된 latent representation도 효과적이지 못하다.
  • 이를 해결하기 위해, 본 논문에서는 부가적인 정보를 SDAE를 통해 dense하게 표현하기 위한 방법을 제안한다.
  • content-based 방법을 혼용하여, 컨텐츠를 딥러닝 네트워크를 통해 dense vector로 표현하고자하는 방식이며 hybrid-rs에서도 발생하는 sparse한 문제를 풀고자 하는 것이 목적이다.

Approach

Notation

  • $\mathbf{X}_c$: J개의 아이템은 $J \times S$ 행렬로 나타낸다. 여기서 j번째 행은 bag-of-words 벡터 $\mathbf{X}_{c,j*}$을 의미한다.
    • SDAE의 clean input 역할을 한다.
  • $\mathbf{X}_0$: SDAE에서 noise-corrupted 행렬 역할을 한다.
  • $\mathbf{R} = [\mathbf{R}_{ij}]_{I \times J}$: I명의 유저에 대한 유저x아이템 행렬이다.
    • $\mathbf{R}_{ij} = 1$: 유저 i가 기사 j를 관심목록에 추가했다는 것을 의미한다.
  • $\mathbf{X}_l$: $l$ 레이어의 $J \times K_l$ 행렬을 나타낸다. j번째 행은 $\mathbf{X}_{l, j*}$이다.
  • $\mathbf{W}_l, \mathbf{b}_l$: $l$ 레이어의 가중치 행렬과 편향 벡터로, $\mathbf{W}_l$ 행렬의 n번째 칼럼은 $\mathbf{W}_{l, *n}$이다.

Stacked denoising autoencoders

  • $\mathbf{X}_0$은 noise-corrupted 행렬이고 $\mathbf{X}_c$는 clean input이다.
  • noise-corrupted 입력값이 clean 입력값과 닮아가도록 네트워크를 학습시킨다.
  • 중간의 $\mathbf{X}_2$는 bottleneck 벡터이다.

SDAE는 아래의 최적호 문제를 풀어서 clean 입력값인 $\mathbf{X}_c$와 비슷한 행렬을 얻는 것이 목적이다.

Generalized bayesian SDAE

clean 입력값인 $\mathbf{X}_c$와 corrupted 입력값인 $\mathbf{X}_0$가 관측된다고 가정해보면, 아래의 generative process을 가정해볼 수 있다.

  • 최종적으로 clean 입력값에 대한 generative process을 만들기 위한 계층 모형이다.
  • 마지막 clean 입력값은 직전의 L 레이어의 아이템x피쳐 행렬인 $\mathbf{X}_L$에 의존한다.
  • l번째 레이어의 아이템x피쳐 행렬인 $\mathbf{X}_{l, j*}$은 그 이전 레이어의 $\mathbf{X}_{l-1, j*}$와 l번째 레이어의 가중치 행렬, 편향 벡터인 $\mathbf{W}_l, \mathbf{b}_l$에 의존한다.
  • $\lambda_s$를 positive infinity로 두어서 계산상의 이점을 누릴 수 있다. 이러면 가우시안 분포에서 dirac delta 분포로 가정하는 것과 동일하다.

Collaborative deep learning

베이지안 SDAE를 이용하여 CDL의 generative process을 아래와 같이 정의한다.

  • 평점 데이터인 $\mathbf{R}_{ij}$는 유저벡터와 아이템벡터인 $\mathbf{u}_i, \mathbf{v}_j$을 파라미터로 하여 생성된다.
  • 유저벡터는 가우시안 분포에서 생성된다.
  • 아이템벡터는 SDAE를 통해 생성한 latent bottleneck vector($\mathbf{X}^T_{\dfrac{1}{2}, j*}$)로부터 생성된다.
  • $\lambda_w, \lambda_n, \lambda_u, \lambda_s, \lambda_v, \mathbf{C}_{ij}$는 하이퍼파라미터이다.

Maximum a posteriori estimates

베이지안 계층 모형을 가정했으므로 MCMC나 variational inference 방법을 통해 파라미터를 추정할 수 있으나 시간이 오래걸리므로 Collaborative topic regression에서 제안한 방법을 사용하여 EM 스타일의 파라미터 최적화 방법을 사용한다.

CTR에서와 비슷하게 posterior 확률을 최대화하는 것은 파라미터의 joint likelihood을 최대화하는 것과 동일하다.

$\lambda_s$가 infinity로 간다면, likelihood는 아래와 같다.

  • $f_e(\mathbf{X}_{0, j*}, \mathbf{W}^+)$
    • corrupted content vector을 입력값으로 받고 인코딩을 하는 함수이다.
    • 최적화 관점에서 본다면, 이 함수가 포함된 항은 latent vectors인 $\mathbf{v}_j$을 타겟으로 하여 학습을 진행하는 multi-layer perceptron과 동일하다.
  • $f_r(\mathbf{X}_{0, j*}, \mathbf{W}^+)$
    • corrupted vector을 받고 인코딩을 계산한 다음에 아이템 j에 대한 reconstructed content vector을 생성하는 함수이다.
    • 최적화 관점에서 본다면 reconstruction error을 최소화하는 SDAE와 동일하다.

  • 만약에 위와 같이 $\lambda_s$를 infinity로 보낸다면, 동일한 corrupted vector을 받고 동시에 두개의 뉴럴네트워크를 학습하는 것으로 볼 수 있다. 

여태까지 SDAE와 관련된 파라미터를 학습 전략에 대해 알아보았다. 이제 핵심인 유저벡터, 아이템 벡터를 어떻게 학습할지 알아보자. 방법은 CTR에서 제안한 방법과 유사하게 따라간다. likelihood에서 유저벡터, 아이템벡터인 $\mathbf{u}_i, \mathbf{v}_j$에 대한 그라디언트를 계산해보면 아래와 같다.

이렇게 $\mathbf{u}_i, \mathbf{v}_j$을 구하고 SDAE의 파라미터를 back-propagation을 통해 구한다.

이와 같이 $\mathbf{U, V}, \mathbf{W}_l$에 대한 업데이트를 번갈아 가면서 하며 local optimum을 찾는 것이 본 논문에서 제안한 EM-style 최적화 방법이다.

Prediction

평점에 대한 예측은 유저 벡터와 아이템 벡터의 내적으로 근사한다. 즉,

Results

  • 세개의 데이터 세트인 citeulike-a, citeulike-t, netflix에 대해 실험을 진행했고 평가 메트릭은 recall@M으로 계산했다.
  • 모든 데이터 세트에 대해, CDL이 CTR에 비해 우수한 성능을 보임을 알 수 있다.

  • citeulike-t 데이터가 citeulike-a보다 훨씬 더 sparse하다.
  • 그렇기 때문에 citeulike-a 데이터에서 레이어를 늘릴수록 recall 값이 더 높게 나타난 것이다.

Conclusion

  • content-based 방법과 cf을 섞은 hybrid 방법인데, 컨텐츠의 벡터를 SDAE를 통해 학습한다는게 인상적이었다.
  • 슬쩍 찾아보니, SDAE를 학습할 때 bag-of-words을 넣는게 아니라 버트 임베딩 등을 사용하는 것을 제안한 사람도 있었다.
  • 기본적으로 hybrid rs인데, 베이지안 계층 모형을 쌓으면서 아이템을 SDAE을 통해 나타내려고 한게 인상적이었다.
  • 이 논문은 cold-start을 해결하고자하는 시도로 볼 수도 있고 rs에서 sparse problem은 풀고자 하는 노력으로 볼 수도 있을 것 같다.

댓글