- 논문 링크(663회 인용)
Summary
- cf에 temporal dynamics을 lstm으로 섞은 알고리즘을 제안한다.
- 유저와 아이템에 대한 sequential state을 가정하고 이를 통해 과거의 유저와 아이템의 상태가 현재 평점에 영향을 주도록 모델을 설계한다.
- 뿐만 아니라 stationary effect도 여전히 존재한다고 가정한다. 시간에 따라 변화하는 요인도 평점에 영향을 주지만 유저나 아이템이 가지고 있는 정적인 특징도 평점에 영향을 준다고 가정하는 것이다.
- 이 논문에서 강조하는 것은 현재 관측치를 기반으로 future bahavior을 예측할 수 있다는 것이다. 이는 timeSVD++가 가지고 있지 않은 기능이다.
Motivation
- 기존에 제안되었던 probabilistic mf나 nearest approach는 데이터에 존재하는 temporal, causal 효과를 모델링하기에는 한계가 있다.
- 예를 들어, 영화에 대한 인식이 특정 이벤트에 의해 변한다든가 계절적인 요인에 의해 크리스마스 영화가 더 많이 소비되기도 한다. 또는 유저의 흥미 자체가 변할 수도 있다.
- 또한 미래 시점에 유저가 영화 A에 대해 남긴 좋은 평점 데이터는 현재 시점에서 영화 A와 연관된 영화 B의 평점을 예측하는데 영향을 주어서는 안 된다. 이렇게 모델링을 하면 미래의 데이터를 사용해서 현재 상태를 예측하는 것이기 때문에 causality을 위반하는 결과가 나온다.
- 논문에서는 미래 데이터를 사용하여 현재 평점을 추정하는 것을 benefit of hindsight라고 표현한다.
- hindsight는 일이 다 벌어진 뒤에 사정을 알게된다는 뜻인데, 미래에 이 사람이 매긴 점수를 다 안 상태에서 이를 사용하는 이점을 누린다는 맥락인 것 같다.
- recurrent recommender network은 기존 모델이 가지고 있는 취약점을 극복하기 위해 모델에 temporal effect을 포함한다.
- 기존에 temporal 효과를 모델에 반영하기 위해 TimeSVD++가 제안되었다. 하지만 이 모형은 피쳐를 직접 만들어야했기 때문에 데이터에 대한 지식이 어느정도 필요했고 무엇보다 future behavior을 추정하지 못했다.
- 반면, 본 논문에서 제안하는 방법은 피쳐엔지니어링이 필요없고 미래의 평점을 예측할 수 있다는 장점이 있다.
Approach
Recurrent Deep Networks
그림 3과 같은 graphical model은 관측치가 주어졌을 때, 미래 상태를 추론해야한다. 여러 방법이 있는데 최근에는 nonparametric state update을 하는 것이 인기가 있는데, 이 중에 하나가 RNN이다. 핵심은 latent variable autoregressive 모델을 사용하는 것이다.
- $z_t$: t 시점의 관측치
- $\hat{z}_t$: t시점의 추정치
- $h_t$: t 시점의 latent state
- $f,g$: stability와 vanishing gradient을 해결하기 위해 여러 형태의 함수를 쓰는데, LSTM이 인기가 있다.
$f_t, i_t, o_t$는 forget gate, input gate, output gate을 의미한다.
Model
그림 4를 보면 유저 단계에서 temporal evolution이 있고 아이템 단계에서 temporal evolution이 있다. 이 두개의 evolution은 rnn 네트워크로 정의되고 최종 단계의 hidden state가 $r_{ij}$을 예측하는데 사용된다. 정확히는 $t$ 시점의 $r_{ij}$일 것이다. 또한, 시간에 의존하지 않은 유저 벡터와 아이템 벡터인 $u_i, m_j$도 $r_{ij}$을 예측하는데 사용되는 것을 알 수 있다. 그러면 이제 user/item state rnn에 대해 자세히 살펴보자.
User and Movie state
논문에서는 user-state rnn만 설명하는데 movie-staet rnn도 동일한 방식으로 정의되기 때문이다. M개의 영화가 있을 때 t시점의 유저에 대한 벡터를 $x_t \in \mathbb{R}^M$라 하자. 만약에 유저가 영화 j에 대해 k점으로 평점을 매겼으면 $x_{tj} = k$이고 그렇지 않다면 $x_{tj} = 0$일 것이다. 또한 $\tau_t$을 t시점의 wallclock이라고 하고 $1_{newbiew} = 1$은 새로운 유저를 의미하는 값으로 정의하자.
- $W_{embed}$: 정보를 임베딩 공간으로 projection하는 변환 행렬
- $y_t$: t 시점의 LSTM의 input
이를 이용하여 t 시점의 유저에 대한 벡터는 아래와 같이 정의한다.
- t시점에 유저가 어떤 영화를 봤는지에 대한 정보가 LSTM Layer을 통해 들어간다.
- 또한 t시점의 유저 벡터는 t-1 시점의 유저 벡터에 의존한다. LSTM으로 이를 sequential하게 모델링한다.
- 유저별로 개인화된 벡터를 생성해야하기 때문에 이후로는 $u_{it}$로 표기하고 영화에 대한 t시점 벡터도 $m_{jt}$로 표기한다.
Rating emission
user state와 movie state을 시간에 따라 변화하도록 정의하였다. 그렇지만 논문에서는 여전히 시간에 관계없이 stationary한 요소가 유저나 영화의 속성에 존재한다고 가정한다. 예를 들어, 유저가 나이가 들수록 감성적인 마음을 더욱 울리는 영화를 좋아하지만, 동일한 배우가 나오는 영화를 공통적으로 좋아할 수 있다. 이런 상황에서는 유저의 취향에 temporal 요소도 있고 stationary 요소도 있다. 그렇기 때문에 t 시점에서 유저 i의 영화 j에 대한 평점 예측식을 아래와 같이 가정한다.
여기서 $\tilde{u}_{it}, \tilde{m}_{jt}$는 affine transformation으로 정의된다.
한마디로 stationary component는 시간에 의존하지 않은 유저, 아이템에 대한 벡터의 내적으로 계산하고 LSTM을 활용하여 longer-range dynamic updates을 모델링한다.
Inference
가능한 모든 $(i,j,t)$ 쌍에 대해 최적화를 진행한다. 문제가 되는 부분은 각 평점별로 두 개의 RNN state (user-state, movie-state)가 존재한다는 것이다. 모든 평점에 대해 두 sequence에 대한 backpropagation을 진행한다면 너무 heavy computation이 될 수 있다. 이를 보완하기 위한 방법으로 한 유저의 모든 평점에 대해 한번에 back-propagating을 진행하는 근사를 사용할 수 있다.
논문에서는 이 방법보다 subspace descent을 제안한다. 이는 한 유저의 모든 평점에 대한 그라디언트를 한번에 back-propagate 하는 것은 동일하지만 movie sequence에 대한 그라디언트는 계산하지 않고 고정한다. 반대로, movie state의 gradient을 back-propagate할 때는 user-state에 대한 업데이트는 하지 않는다. 이런 방식으로 번갈아 가면서 업데이트를 진행한다. 마치 alternating least squares 같은 느낌이다.
Results
Compared models
- PMF: temporal dynamics을 모델링하지는 않지만 꽤나 표준적인 모델
- timeSVD++: netflix 대회에서 좋은 성적을 거둔 모델. temporal dynamics을 모델링한다.
- AutoRec: 많은 데이터에서 SOTA를 기록한 모델
Quantitative results
모든 데이터에서 RRN의 RMSE가 작게 나타났다.
Qualitative results: Exogenous dynamics on movies
모델이 평점에 영향을 주는 외부 요인을 잘 캐치하는지 알아보는 실험을 진행했다. 위 그림은 각 영화별, 시간의 흐름에 따른 예측된 평점의 변화이다. 각 영화가 외부 상을 받기 이전에 평점 예측값이 올라가는 트렌드를 보임을 확인할 수 있다. 이를 통해 RRN이 외부 변화를 자동으로 감지하고 예측값을 이에 따라 조정하는 능력이 있음을 확인할 수 있다.
Endogenous dynamics on movies
exogenous뿐만 아니라 endogenous 이유에 의해서도 선호도가 바뀔 수 있는데 RRN이 이를 어떻게 모델링하는지 알아보자. 이를 알아보기 위해 논문에서는 age effect을 측정했다.
영화 초반 1.5년까지는 평점 예측값이 꺾이다가 그 이후에는 꾸준하게 상승하는 모습이다. 즉, 영화가 오래될수록 평점을 높게 받는 것으로 해석할 수 있다.
- oscar best picture과 golden raspberry nominees의 영화들이 그룹별로 비슷한 모습을 보인다.
- 특히나 raspberry은 평균 평점이 하락했다가 다시 증가하는 추세이다.
- 그룹별로 이런 temporal dynamics을 잘 모델링했다는 뜻일까
Conclusion
- temporal dynamics을 모형에 통합한 또 다른 논문을 읽었는데 gru, lstm을 사용하는 부분이 인상적이었다.
- t시점에 대해서 각각 유저, 아이템의 벡터를 가정하기 때문에 학습하는데 시간이 오래걸릴 것 같았다. 여기서는 subsecent descent을 통해 해결하고자 하는데 이게 말로 설명되어 있어서.. 정확히 이해가 가지는 않는다.
- 또한 이 논문에서 강조하는게 future behavior을 예측할 수 있다는 것인데 timeSVD++는 이를 왜 못하는지 이해가 잘 가지 않는다. 최적화한 알고리즘을 기반으로 미래의 상태를 예측하는 것은 당연히 할 수 있는 것 아닌가?.. 하는 생각이 들었다.
댓글