이번에는 convolutional filter를 활용하여 추천시스템의 Top-N sequential 문제를 해결한 Convolutional Sequence Embedding Recommendation Model(Caser) 논문을 리뷰하고자 합니다. 논문의 제목은 "Personalized Top-N Sequential Recommendation viaConvolutional Sequence Embedding"로 이곳에서 확인 가능합니다.
Introduction
대부분의 추천시스템은 사용자의 최신 아이템에 집중을 하는 대신 사용자의 전반적인 선호도를 활용하여 top-N 추천을 진행했다. Top-N sequential 추천시스템은 사용자의 general preference와 sequential pattern을 모두 고려해 미래에 사용자의 요구를 최대로 만족시키는 아이템을 추천하는 것을 목표로 한다. 이전 연구에서는 markov chain based model을 활용해 해결하고자 했으나 2가지 문제점이 존재했다. 첫번째는 모델의 union-level sequential pattern을 파악하는데 실패한다는 것이다. Markov chain model은 이전의 action이 다음 target action에 각가가 영향을 주는 point-level sequential pattern을 가지고 있다. 그렇기 때문에 여러 이전의 action들이 함께 다음 action에 영향을 주는 union-level sequential pattern을 만족시킬 수 없다. 그리고 다음 문제점으로는 skip behavior를 고려하지 못한다. 과거의 behavior는 몇 단계 뒤의 behavior에도 영향을 주기 때문에 skip behavior를 고려할 수 있어야 한다. 각 point-level, union-level, skip behavior에 대한 그림은 아래와 같다.
본 논문에서는 위와 같은 문제점을 해결하기 위해 Convolutional Sequence Embedding Recommendation Model(Caser) 모델을 제안한다. 이는 embedding matrix를 L item의 image로 여기고 sequential pattern을 image의 local feature로 간주한다. 그리고 point-level, union-level의 sequential pattern과 skip behavior를 파악하기 위해 horizontal, vertical convolutional filter를 사용한다. 이 모델은 기존의 SOTA 모델 대비 좋은 성능을 보인다.
Proposed Methodology
제안하는 모델은 sequential feature를 학습하기 위해 Convolutional Neural Network(CNN)을 활용하고 사용자의 specifice feature를 학습하기 위해서는 Latent Factor Model(LFM)을 사용한다. 모델의 목표는 사용자의 general preference와 sequential pattern을 모두 파악하는 것이다. 모델은 Embedding Look-up, Convolutional Layers, Fully-connected Layers 총 3가지 부분으로 구성되어 있다.
위 그림은 모델의 architecture로 각 사용자 u에 대해 CNN을 학습하기 위해 input으로 연속된 L개의 아이템을 입력하고 다음 T개의 아이템을 target으로 한다.
1. Embedding Look-up
Latent space에서의 sequence feature를 파악하기 위해 neural network에 L개의 아이템의 embedding을 입력으로 한다. 각 embedding $Q_i$는 아이템의 latent factor와 유사한 의미다. 여기서 d는 latent dimension의 수다. 이렇게 각 L개의 아이템에 대한 embedding을 모두 쌓으면 $E^{(u,t)}$ matrix가 된다. 수식으로 표현하면 아래와 같다.
\[
E^{(u,t)} = \begin{bmatrix}
Q S_{t-L}^u \\
\vdots \\
Q S_{t-2}^u \\
Q S_{t-1}^u
\end{bmatrix}
\]
그리고 $P_u$는 사용자 u에 대한 embedding으로 latent space에서의 user feature를 의미한다. 위 그림에서 각각 파란색과 보라색 원으로 확인 가능하다.
2. Convolutional Layers
위 그림은 convolutional layers 부분에서의 horizontal filter에 대한 것이다. 이 필터는 위에서 아래로 움직이면서 matrix $E^{(u,t)}$의 sequential pattern의 특징을 파악한다. 모델의 architecture 그림을 보면 h는 filter의 height를 의미하며 각 convolution이 가지는 값은 다음 수식과 같이 계산된다.
\[
c_i^k = \phi_c(E_{i:i+h-1} \odot \mathbf{F}^k)
\]
각 필터와 해당되는 sub-matrix와 inner product를 진행한 후 activation function을 통해 값이 도출된다. 최종 convolution 값 $F^k$는 다음과 같다.
\[
\mathbf{c}^k = \left[\mathbf{c}_1^k \ \mathbf{c}_2^k \ \cdots \ \mathbf{c}_{L-h+1}^k\right]
\]
그 후 max pooling을 진행해 가장 큰 값을 뽑아낸다. 최종 output 값은 다음과 같다.
\[
o = \left\{\max(\mathbf{c}^1), \max(\mathbf{c}^2), \dots, \max(\mathbf{c}^n)\right\}
\]
이렇게 horizontal filter는 union-level pattern을 파악할 수 있다. 여기서 말하는 union-level pattern은 sequence에서 여러 아이템들이 함께 나타나면서 형성되는 pattern을 말하며 연속된 구간에서 발생하는 관계를 파악하는데 유용하다.
다음은 vertical convolutional layer다. 위와 비슷하게 vertical convolutional layer의 경우 왼쪽에서 오른쪽으로 이동하며 수식에서는 tilde(~) 기호를 활용하며 표기된다. 수식은 아래와 같다.
\[
\tilde{\mathbf{c}}^k = \left[\tilde{\mathbf{c}}_1^k \ \tilde{\mathbf{c}}_2^k \ \cdots \ \tilde{\mathbf{c}}_d^k\right]
\]
이 filter의 경우 E matrix의 L row에 대한 가중합과 같기 때문에 아래와 같이 표현한다.
\[
\tilde{\mathbf{c}}^k = \sum_{l=1}^{L} \tilde{\mathbf{F}}_l^k \cdot \mathbf{E}_l
\]
\[
\tilde{\mathbf{o}} = \left[\tilde{\mathbf{c}}^1 \ \tilde{\mathbf{c}}^2 \ \cdots \ \tilde{\mathbf{c}}^{\tilde{n}}\right]
\]
이는 point-level sequential pattern을 파악할 수 있다. Sequence의 개별 시점에서 중요하 특징을 나타내는 pattern을 말하며 각 지점에서 발생하는 특정한 sequential한 관게성을 파악하는데 유용하다.
3. Fully-connected Layers
마지막 단계인 fully-connected layers에서는 앞선 2개의 filter에서 나온 결과값을 concat해 input 값으로 한다. 수식은 아래와 같으며 여기서 나온 결과값인 z는 convolutional sequence embedding이라고 부른다. 이는 L개의 아이템의 sequential feature를 모두 담고있다.
\[
\mathbf{z} = \phi_a\left(\mathbf{W} \begin{bmatrix} \mathbf{o} \\ \tilde{\mathbf{o}} \end{bmatrix} + \mathbf{b}\right)
\]
그 다음은 사용자의 general preference를 파악하기 위해 앞서 첫번째 단계에서 구한 user embedding $P_u$를 z와 concat하여 input값으로 사용한다. 수식은 다음과 같으며 결과값인 $\mathbf{y}^{(u,t)}$는 사용자 u가 아이템 i와 t 시간에 상호작용할 가능성을 의미한다.
\[
\mathbf{y}^{(u,t)} = \mathbf{W}' \begin{bmatrix} \mathbf{z} \\ \mathbf{P}_u \end{bmatrix} + \mathbf{b}'
\]
4. Network Training
마지막으로 학습하기 위해서는 output layer의 값인 $\mathbf{y}^{(u,t)}$를 확률로 바꿔야한다. 확률로 변환하기 위해서는 Sigmoid function을 사용한다. 모든 sequence에 대한 likelihood는 아래와 같다.
\[
p(\mathbf{S} | \Theta) = \prod_u \prod_{t \in \mathcal{C}^u} \sigma(y_{S_t^u}^{(u,t)}) \prod_{j \neq S_t^u} (1 - \sigma(y_j^{(u,t)}))
\]
마지막으로는 앞서 이전 연구들의 문제점이라고했던 skip behavior를 해결하기 위해 target 아이템의 수인 T를 고려했다.
Experiments
1. Datasets
Sequential 추천시스템을 하기 위해서는 데이터셋이 sequential pattern을 포함하고 있어야한다. 그렇기 때문에 본 논문에서는 그에 해당하는 데이터셋을 선정하기 위해 sequential intensity를 계산했다. Sequential intensity(SI)의 수식은 아래와 같다.
\[
\text{Sequential Intensity (SI)} = \frac{\#\text{rules}}{\#\text{users}}
\]
모든 rule의 수는 support와 confidence의 수를 고려하여 계산되었다. 이를 통해 선정된 데이터셋은 MovieLens, Gowalla, Foursquare, Tmall이다. Train, valid, test set은 7:1:2의 비율로 분리되었다.
2. Performance Comparison
실험 비교를 위한 베이스라인은 POP, BPR, FMC, FPMC, Fossil, GRU4Rec이다. 실험 결과 본 논문에서 제안하는 Caser 모델이 대부분의 경우에서 가장 좋은 성능을 보였지만 한가지 예외로는 sequential signal을 많이 포함한 MovieLens 데이터셋에서 GRU4Rec 모델이 좋은 성능을 보였다. 전반적인 실험 결과는 아래와 같다.
추후 논문에서는 latent dimension의 수인 d, markov order L, target number T, 각 요소에 따른 성능 비교 등을 진행하였다. 이에 대한 내용은 논문을 통해 확인할 수 있다.
Conclusion
본 논문은 convolutional filter를 활용해 top-N sequential recommendation 문제를 해결하는 새로운 방법을 제안했으며 point-level, union-level sequential pattern, skip behavior, long term user preference 방면에서 모두 만족시켰다.
'논문 리뷰&구현 > RecSys | Recommender System' 카테고리의 다른 글
[논문 리뷰] Neural Collaborative Filtering (5) | 2024.07.25 |
---|---|
[논문 리뷰] AutoRec: Autoencoders Meet Collaborative Filtering (0) | 2024.07.17 |
[논문 리뷰] Matrix Factorization Techniques For Recommender Systems (0) | 2024.07.11 |