본 포스팅은 Fastcampus 강의를 수강하며 일부 내용을 정리한 글임을 밝힙니다. 보다 자세한 내용은 아래 강의를 통해 확인해주세요.
참고 : Fastcampus 딥러닝을 활용한 추천시스템 구현 올인원 패키지 Online
Ch 08. Recommender System with Deep Learning
📑 Paper Review
- 평점에 대한 평가(review)를 함께 합쳐서 학습시키면 더 나은 성능을 얻을 수 있지 않을까, 더 나은 성능을 얻기 위해 latent factor를 찾는 것이 목적 ➡️ rating + review
| Abstract
-
평점과 리뷰 데이터 모두 활용하여 추천시스템 구축
-
Recurrent 모델 구조를 활용하여 user와 item의 다양한 component를 얻어내고자 함
- temporal patterns: 시간의 흐름에 따른 평점, 리뷰
-
IMDB 데이터셋을 활용하여 모델 성능에 대한 실험 진행
| Introduction
- 현재까지 추천시스템에 대한 연구에 대한 제한사항
- 모델 예측 정확도: 실제 평점을 예측하는 것보다 주로 데이터셋을 나누고 테스트셋에 대한 평가만 이루어짐
- Recurrent Recommender Networks(RRN)은 RNN 모델 구조로, user와 item 변화 등을 파악할 수는 있으나 리뷰의 시간적 변화 등을 제대로 포착하지 못함
- 리뷰 데이터를 활용한 추천시스템은 자연어처리 최신 기술과 훨씬 뒤떨어져있음
- 이전 연구에서 Bag-of-words 모델은 제한적으로 리뷰를 이해하게 될 수 있었음
- 추천시스템에서 리뷰 데이터를 많이 사용하기 어려운 이유는 기존 텍스트 데이터에 비해 unstructured하고 divsere됐기 때문 (뉴스와 같이 구조적이지 않고 주로 짧은 문장)
| Contributions
1. Joint Generative Model
- 리뷰와 평점을 결합한 Joint 모델 구조 제안
2. Nonlinear nonparametric review model
- user와 movie의 state dynamics를 학습하면서 시간 변화에 따른 리뷰의 변화 파악 가능
3. Experiments
- 시간 흐름과 함께 평점과 리뷰를 함께 모델링해서 IMDB 데이터셋에 대해 좋은 성능
| Recurrent Recommender Network
- 왼쪽: Time-independent recommendation model
- ui와 mj로 rating rij을 매기는데, 시간 독립적이다
- ex) 10년전 매긴 평점과 현재 매긴 평점이 다르다, 독립적이다
- 오른쪽: Time-dependent recommendation model
- user와 item의 이전 time step에 대한 정보를 받아 현재의 rij를 구성
-
Recurrent Recommender Networks
- Recurrent Neural Networks를 따르고 있고, 이 구조를 차용해서 recommender networks를 만들었다고 생각하면 됨
-
User에 대한 state evolution은 user가 이전에 평점을 준 영화와 관련있음
- 즉, user가 이전에 어떤 영화에 대해 어떤 평점을 줬는지가 지금 영화의 평점을 매기는데 관련있음
-
Movie의 파라미터는 이전 시간에서 사용한 사용자와 영화의 인기도에 따라 다름
- 과거에 그 영화가 어땠는지도 중요한 파라미터
-
이전의 sequential한 정보를 계속 담아서 최종적으로 현재의 rij를 예측하는 데 도움이 된다
| Model
- 왼쪽: rating에 관련된 내용 / 오른쪽: review에 관한 내용
- 둘을 결합하여 rij 예측
1. Dynamic User and Movie State
2. Rating Emissions
- 시간에 따라 변하는 uit, mjt를 각각 고정된 ui 또는 mj로 보완 가능 (이때 t: 시간)
- 이는 사용자의 장기적 선호, 영화 장르와 같은 시간에 따라 크게 변하지 않는 요소에 대한 내용 반영
(시간에 따라 변하는 것 + 변하지 않는 고정적인 것)
3. Review Text Model
- Character 단위 LSTM 네트워크 활용
- 평점 모델과 동일한 user/item의 latent 상태를 반영
- Bottleneck 층 xjoint,ij(=xij)에서 user/movie의 정적인 정보와 동적인 상태 모두 합치게 됨
- oij,k: user i가 movie j에게 준 리뷰의 position k일 때의 문자
- character embedding xoij,k를 joint해서 최종적인 x 틸다 만들어냄
Model - Training and Prediction
학습
- 학습 목적: Accurate ratings와 Accurate review를 예측하는 것
- D: (i,j) 쌍의 학습 데이터
- θ: 모든 모델 파라미터
- nij: user i가 movie j에 쓴 리뷰 글자 수
- λ: accurate rating과 accurate review를 예측하기 위한 가중치
예측
- 예측된 미래 상태에 따라 평점 예측
- 최근 평점을 input으로 사용하여 상태를 업데이트하고, 새롭게 예측된 상태를 통해 평점 예측
| Experiments
- K-core of IMDB 데이터셋에 대해 평가를 진행한 결과
- RRN이 다른 baseline 모델보다 더 좋은 성능, 특히 RRN(rating + text)이 성능을 더욱 향상
- 평점과 리뷰의 통계적인 내용을 공유하는 것 ➡️ 그 timestep의 latent factor를 모델링하는데 더 많은 정보를 제공한다는 뜻
- User/item 요소를 사용하거나 사용하지 않았을 때 text modeling perplexity를 비교했으며, 향상된 결과 보임