GRU4Rec : Session based Recommendations with Recurrent Neural Networks - penny4860/study-note GitHub Wiki

1. 정리

요약

  • Deep Rnn 구조를 개인화 추천에 적용한 첫 번쨰 논문
  • Session-Parallel mini-batches
    • BPTT를 사용하지 않고, 1-step만 사용
    • 1개 sequence전부를 같은 batch에 넣지 않고, 1개 session에서 1개만 뽑아서 batch를 구성
  • Popularity-based sampling
    • item 전부에 대한 parameter를 업데이트 하지 않고 일부만 update
    • sample
      • positive sample : target item
      • negative sample : 같은 batch내 item
    • popularity의 의미
      • popular한 item인데 유저가 반응하지 않은 item은 싫어하는 (negative) item
  • ranking loss
    • xentropy보다 좋음
    • pairwise로 positive/negative에 대해서 사용
      • BPR / Top1
  • 평가 metric
    1. recall@20 : CTR과 같은 지표와의 correlation이 크다.
    2. MRR@20 : Actual order를 반영

질문

2. 내용

3. Recommendations with RNNs

3.1 Customizing the GRU model

  • item의 embedding vector를 다른 deeper GRU 에도 입력

3.1.1 Session-Parallel mini-batches

  • mini-batch 구성방법
    • 일반적인 rnn : 1개의 sequence를 같은 batch에 포함되도록 구성
    • Session-Parallel : 1개 session에서 1개만 뽑아서 batch를 구성 : parallel

3.1.2 Sampling on the output

  • 네트워크의 output에서 sampling이 필요한 이유
    • 추천 task의 경우 target item의 숫자가 너무 많다.
    • item의 일부만 sampling 해서 weight를 update하는 것이 좋다.
  • Popularity-based sampling
    • 가정
      1. popular item중에서 user와 interaction(클릭,구매)이 없는 item은 그 유저가 싫어하는 item이다.
      2. unpopular item중에서 user와 interaction이 없는 item은 좋은지 싫은지 알 수 없음.
    • positive / negative sampling
      • (+) : session내에서 next item을 positive example로 사용
      • (-) : 같은 batch 내부에서 다른 training example을 negative example로 사용

3.1.3 Ranking Loss

  • cross entropy보다는 ranking loss가 좋음.
  • Ranking loss의 분류
    1. pointwise : item 1개씩 update
    2. pairwise : positive/negative의 score를 update
    3. listwise : 모든 item의 ranking을 구해서 ordering & update
  • Pairwise ranking loss
    • BPR
      • - sum_over_j [log(sigmoid(r_i - r_j))] / sample_size
        • r_i : desired item의 score
        • r_j : negative item의 score
    • Top1 :
      • sum_over_j [sigmoid(r_j - r_i) + sigmoid(r_j**2)] / sample_size
        • positive score > negative score & negative score ~ 0

4. Experiments

  • 평가 metric
    1. recall@20
      • actual order는 반영되지 않는다.
      • CTR과 같은 지표와의 correlation이 크다.
    2. MRR@20 : mean reciprocal rank
      • 1등이면 1.0, 2등이면 1/2, .... 20등이면 1/20
      • Actual order를 반영하는 metric

4.1 Baselines

  • Popularity predictor
    • most popular item을 추천
  • S-POP
    • 현재 session에서 most popular item을 추천
  • Item-KNN
    • similarity 기준의 추천

4.2 Optimization

  • GRU가 LSTM이나 vanial rnn보다 좋음.
  • loss
    • xentropy보다 ranking loss가 stable
    • pairwise ranking loss가 좋음.
  • 모델구조
    • GRU 1개만 사용한 구조가 deeper구조 보다 좋았음.
    • GRU의 hidden unit숫자는 크게 잡는것이 좋았음. (1000개)