TensorFlow의 Recommenders library를 이해하기 위한 논문.
Recommenders에서는 이 논문의 알고리즘을 중심으로 'retrieval using a sequential model'이라는 guide & Tutorials를 설명해 두었다.
-TensorFlow recommenders
https://www.tensorflow.org/recommenders/examples/sequential_retrieval
영화 추천: 순차 모델을 이용한 검색 | TensorFlow Recommenders
이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 영화 추천: 순차 모델을 이용한 검색 이 튜토리얼에서는 순차 검색 모델을 만들 것입니다. 순차 추천은 사용자가 이전에 상호
www.tensorflow.org
- 논문링크
https://arxiv.org/abs/1511.06939
Session-based Recommendations with Recurrent Neural Networks
We apply recurrent neural networks (RNN) on a new domain, namely recommender systems. Real-life recommender systems often face the problem of having to base recommendations only on short session-based data (e.g. a small sportsware website) instead of long
arxiv.org
0. what is RNN?
1) 순환 신경망(Recurrent Neural Network, RNN)
RNN(Recurrent Neural Network)은 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델입니다. 번역기를 생각해보면 입력은 번역하고자 하는 ...
wikidocs.net
RNN(Recurrent Neural Network, 순환신경망)는 입력과 출력을 시퀀스(sequence) 단위로 처리하는 모델이다.
원래의 다층 퍼셉트론과 같은 딥러닝 모델은 은닉층에서 활성화 함수를 지닌 값은 오직 출력층 방향으로만 향한다.
하지만 RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로도 보내는 특징을 가지고 있다.
메모리 셀이 출력층 방향 또는 다음 시점인 t+1의 자신에게 보내는 값을 은닉 상태(hidden state) 라고 한다.
다시 말해 t 시점의 메모리 셀은 t-1 시점의 메모리 셀이 보낸 은닉 상태값을 t 시점의 은닉 상태 계산을 위한 입력값으로 사용되는 것이다.
그러므로 RNN에 대한 수식은 다음과 같다.
이때 ht를 계산하기 위한 활성화 함수로는 주로 하이퍼볼릭탄젠트 함수(tanh)가 사용된다.
그리고 출력층은 결과값인 yt를 계산하기 위한 활성화 함수로는 푸는 문제에 따라서 다를텐데, 예를 들어서 이진 분류를 해야하는 경우라면 출력층에 로지스틱 회귀를 사용하여 시그모이드 함수를 사용할 수 있고 다중 클래스 분류를 해야하는 경우라면 출력층에 소프트맥스 회귀를 사용하여로 소프트맥스 함수를 사용할 수 있다.
배치 크기가 1이고, d와 Dh 두 값 모두를 4로 가정하였을 때, RNN의 은닉층 연산을 그림으로 표현하면 아래와 같다.
1. Introduction
과거의 추천시스템은 한 사용자의 수많은 구매이력을 따로따로 보았다.
그래서 session-based recommendation system은 비슷한 아이템들을 추천하는 방법을 많이 사용하였다.
그래서 마지막으로 클릭한 것만 추천하는데 고려하고, 과거에 클릭한 상품에 대해서는 무시하는 방법이었다.
이 논문에서는 RNN이 session-based recommendation system에 사용될 수 있다고 말한다.
사용자의 클릭 이력인 sequential data를 RNN model에 적용하여 추천시스템을 만들었다.
2. Recommendations with RNNs
여기서는 RNN중 가장 정교한 모인 Gated Recurrent Unit(GRU)를 사용했다.
GRU는 hidden state of unit을 업데이트 하는 정도에 따라 학습된다.
그래서 ht를 계산하는 식이 이전의 RNN과 살짝 다르다.
여기서의 zt는 이렇게,
candidate activation function은 이렇게,
rest gate는 이렇게 계산된다.
기존 RNN에서 Rt, Zt와 같은 변수를 더해서 더 정교하게 만든 모델이다.
- Customizing the GRU model
이 GRU model을 session-based recommendations을 위해 customizing 해준다.
Input은 실제 state of the session, output은 그 다음 event에서의 item으로 준다.
여기서 state of the session은 실제 구매한 item이 될수도 있고 클릭한 item이 될수도 있고 whatever~
그리고 1-of-N encoding을 사용했다고 한다.(이게 제일 퍼포먼스도 좋았음)
GRU layer은 중간에 겹겹이 쌓일 수 있다.
- Session-parallel mini-batches
session의 길이는 사람마다 다르므로, mini-batches를 만들때 session-parallel이라는 방법을 사용했다.
우선 sessions를 순서에 따라 만들고, 첫번째 사건을 첫번째 mini-batch에 사용한다.
두번째 mini-batch에는 두번째 사건을 사용한다.
만약 session이 끝났다면 그다음 session을 사용한다.
output은 그 session의 다음에 일어날 일로 사용한다.
- Ranking Loss
recommender systems에서는 performance를 측정하는 방법이 다르다.
그래서 이 논문에서는 BPR(Bayesian Personalized Ranking), TOP1방법을 사용해서 performance를 측정했다고 한다.
3. Experiments
데이터는 총 2가지를 사용했다.
첫번째는 RecSys Challenge 2015, e-commerce site에서의 click streams 나타낸 데이터
두번째는 Youtube-like OTT video service platform, 일정시간 이상 시청한 비디오를 나타낸 데이터
4. Results
RNN사용한게 더 outperform했다... 굳굳

'Data Science > Recommendation' 카테고리의 다른 글
Autoencoder, 오토인코더란? (0) | 2022.06.27 |
---|---|
[Paper review] GLocal-K: Global and Local Kernels for Recommender Systems (0) | 2022.03.21 |
Deep Learning Recommendation Model for Personalization and Recommendation Systems 논문정리/코드구현 (0) | 2021.09.13 |
Factorization Machine 논문정리/코딩구현 (0) | 2021.09.13 |