RecSys Paper Review: AutoRec

jisu825·2021년 3월 15일
0

Recommendation System

목록 보기
2/5

AutoRec: Autoencoders Meet Collaborative Filtering paper review

본 paper는 애초에 길이가 2페이지 정도로 매우 짧은 편에 속합니다.
따라서 이번 review도 매우 짧을 예정입니다!

Before Reading

제목에서 핵심이 되는 keyword는

  1. AutoEncoder
  2. Collaborative Filtering

의 두가지입니다.

Collaborative Filtering은 워낙 중요한 내용이니 후에 독립적인 포스트로 다루도록 하겠습니다.
AutoEncoder가 무엇인 지도 역시 시간이 되면 독립적인 포스트로 다루겠으나, CF보다는 익숙하지 않은 개념이기 때문에 최대한 간단히 개념만 정리해보겠습니다.

참고로 저는 Excelsior님의 AutoEncoder 포스트를 참고하였습니다.

AutoEncoder란?

AutoEncoder란, input data를 같은 차원의 output data로 재구성하는 비지도학습의 일종입니다.
예를 들어 input으로 [$x_1, x_2, x_3$]의 data가 들어갔다면, output으로는 input data가 변환된 [$\acute{x_1}, \acute{x_2}, \acute{x_3}$]이 반환되는 구조인데요, 이 반환 과정에서 데이터들의 차원이 축소되었다가 복원된다는 것이 핵심입니다.

input 데이터가 output 데이터로 재구성되기 위해서는 중간 단계인 hidden layer가 필요합니다. AutoEncoder는 input data를 hidden layer로 보내 정보를 우선 압축시킵니다. 이를 통해 더 낮은 차원에서 데이터를 처리 할 수 있습니다. 또한 그림에서처럼 곧바로 하나의 hidden layer로 보내는 것이 아닌, 여러 층을 거쳐 차례차례 차원을 줄여나갈 수 있습니다. hidden layer에 도착했다면, 이를 다시 input data와 같은 차원의 output data로 복원합니다.

즉, AutoEncoder는

  1. Input layer 차원의 데이터를 Hidden layer 차원으로 축소(Encoding)
  2. 변환된 Hidden layer 차원의 데이터를 다시 Output layer 차원(=Input layer 차원)의 데이터로 복원(Decoding)

이라는 2가지 과정으로 이루어집니다.

Paper Summary

본 논문을 이해하기 위해 AutoEncoder의 구조에 대해서도 간단히 알아봤으니, 이제 본격적으로 논문 내용에 대한 이야기를 하겠습니다.

Introduction

본 논문의 목적은 단순합니다. Recommendation System의 근간이 되는 Collaborative Filtering을 (논문이 쓰인 시점에서) 가장 핫한 기법인 AutoEncoder를 통해 구현하겠다는 것입니다.

Latent Factor

Collaborative Filtering에서 가장 중요한 개념 중 하나는 latent space입니다. latent space란, user(혹은 item)의 취향과 특성이 반영되는 잠재적인 요소들이 분포한 공간을 일컫습니다.

말이 조금 어려우니 예시를 들어서 생각해보겠습니다.
user에게 취향에 맞는 영화(item)를 추천해준다고 생각해보겠습니다. 영화는 장르, 배우, 감독, 런닝타임 등 다양한 속성을 가지고 있을 것입니다. 우리가 각각의 영화에 대해 그의 속성을 일일히 알려준다면, 그를 이용해 영화의 속성 각각이 i번째 user의 선택에 어떻게 영향을 미치는 지 파악 할 수 있을 것입니다. 하지만 이 방법을 사용한다면 매번 모든 item의 속성을 구해 기록해야 한다는 단점이 있습니다.

따라서 등장하는 개념이 latent factor인데요, user와 item 사이의 관계를 설명해주는 잠재적인 요인이 있을 것이라는 아이디어입니다.
그러니까 영화의 입장에서는, 각각의 영화들은 여러 특성을 가지고 있고, 그 특성들은 몇개의 latent factor로 표현될 수 있습니다.
반대로 user의 입장에서는, 각각의 user는 취향을 가지고 있고, 그 취향은 몇개의 latent factor로 설명될 수 있다는 것입니다.

user가 3명, 영화가 5편이 있다고 생각해볼게요. user 1, 2는 영화 1번~3번(액션 영화)에 높은 평점을 주었고, 4번과 5번(코미디 영화)에 낮은 평점을 주었습니다. 그리고 user 3은 반대로 영화 1번~3번에는 낮은 평점을, 4번과 5번에는 높은 평점을 주었습니다.

이를 우리의 모델이 학습한다면, 영화 1번, 2번 그리고 3번은 무언가 유사한 특성을 가지고 있고, user 1번과 2번은 그 특성에 대해 좋은 반응을 보인다고 생각 할 것입니다. 따라서 새로운 user 4번이 등장했을 때, 영화 1번과 2번에 좋은 반응을 보였다면 '아, 이 user도 영화 1번~3번이 공유하고 있는 특성에 대해 좋은 반응을 보이는구나!'를 깨닫고 영화 3번을 추천해줄 것입니다(그리고 4번과 5번은 추천하지 않을 것입니다).

우리의 모델은 영화 1번과 2번, 그리고 3번이 액션 영화라는 것은 알지 못하지만, 어떠한 특성을 공유한다는 것은 알 수 있습니다. 그 특성이 바로 latent factor입니다. 물론 latent factor는 영화의 장르나 배우처럼 사람이 쉽게 이해할 수 있는 속성이 아닐 수도 있습니다. 따라서 모델의 설명력이 부족하다는 단점은 있습니다만, 아주 강력하기 때문에 실전에서 자주 쓰이는 개념입니다.

AutoRec Model

드디어 논문의 모델 얘기입니다.

AutoRec 모델이란, 위에서 언급한 latent factor를 AutoEncoder를 이용해서 찾는 모델입니다. 즉, AutoEncoder의 hidden space를 latent factor가 나타나는 latent space로 생각하겠다는 것이 핵심 아이디어입니다.

본 논문에 실린 것 처럼 item 입장에서 생각해보겠습니다. m명의 user와 n개의 item을 가진 rating-based model의 경우 각각의 item은 partially observed vector $r^i=(R_{1i},....R_{mi})$를 갖습니다. $r^i$가 input으로 Encoder를 통과하여 hidden space로 보내지면(project), 결국 이 벡터는 latent factor를 나타내게 됩니다(hidden space = latent space). 그리고 이벡터가 다시 Decoder를 통과하여 재구성(reconstruct)되면 아직 item을 평가하지 않은(non-observed) user의 rating을 예상 할 수 있을 것입니다.

이 과정을 그림으로 표현하면 다음과 같습니다.

Model

위 그림은 partially observed vector $r^i$가 hidden space로 project되고, 이 벡터가 다시 reconstruct되는 과정을 보여줍니다. 이 과정을 식으로 정리하면 다음과 같습니다.
$$
h(r;\theta) = f(W*g(Vr+\mu)+b)
$$

  • $V \in R^{d \times k}$, $W \in R^{k \times d}$ 는 각각 Encoder와 Decoder의 weight에 해당합니다.
  • $\mu \in R^k, b \in R^d$ 는 각각 Encoder와 Decoder의 bias에 해당합니다.

Update Rule

대부분의 rating-based CF model이 그러하듯, 본 모델 역시 observed data만을 학습할 수 있다는 특성을 가지고 있습니다. 즉, user-item rating matrix는 빈칸이 많습니다. 따라서 model의 back propagation 과정에서, observed input에 대한 parameter만 update 되어야합니다.

Loss Funciton

AutoRec model은 RMSE를 loss function으로 삼습니다.
$$
min_\theta \sum_{r \in S} ||r - h(r;\theta)||_2^2
$$

하지만 본 model은 앞서 언급했듯 observed data에 대해서만 학습이 이루어지고, 특정 item/user에 대한 data가 많다면, model 전체가 해당 item/user에 대해 overfitting될 가능성이 있습니다. 따라서 이를 방지하기위해, regularisation을 추가해주어야 합니다.
$$
min_\theta \sum_{r \in S} ||r - h(r;\theta)||_O^2 \hspace{0.2cm} + \hspace{0.2cm} {\lambda \over 2} (||W||_F^2+||V||_F^2)
$$

$|| . ||_O$ 는 observed rating만 고려하겠다는 의미입니다.
위 loss function을 통해 우리는

  • observed rating의 parameter만 고려하고
  • 적절한 regularisaiton을 적용 할 수 있습니다.

Prediction

user u의 item i에 대한 rating은 다음과 같이 예측됩니다.
$$
\hat{R}_{ui} = (h(r^i, \hat{\theta}))_u
$$

Outro

Evaluation

기존에 유명했던 RBM을 이용한 Model들보다 훨씬 더 좋은 성능을 보이고 있습니다(Movielens Datasets 기준)

또한 본 model은 겨우 2mk + m + k개의 parameter를 갖고있습니다(RBM model은 mkr). 따라서 더 적은 memory와 빠른 속도를 보여줍니다.

의의

본 논문의 의의는 다른 Deep Learning 분야에서 아주 핫한 AutoEncoder를 RecSys로 데려왔다는 것에 있는 것 같습니다.
실제로 본 논문의 idea를 응용하여 후에 GCMC라는 저명한 논문이 발간되기도 했습니다.

또한 공부하는 입장에서, 이해하기 쉽다는 것도 엄청난 장점이었습니다! AutoEncoder의 개념만 이해하고 있다면 대부분의 내용을 쉽게 받아들일 수 있습니다.


profile
서울대학교 산업공학과 1년차 딥러닝 개발자 insta: @jisu_fassyzino & @via_ad_astra98

0개의 댓글