Chat HoPT 5

[Paper Review] Session-based Recommendation with Graph Neural Networks (AAAI 2019) 본문

Paper Review/Recommender System

[Paper Review] Session-based Recommendation with Graph Neural Networks (AAAI 2019)

thisis05 2024. 3. 13. 23:29
논문 링크  : https://arxiv.org/pdf/1811.00855.pdf

 

1. Introduction

 

기존 Session-based Recommender System 연구는 RNN based로 진행되어 왔는데, 연속적인 transition만 고려할 뿐 session내 context는 고려하지 않아 distant items 사이의 complex한 transitions이 간과되었다. 또한 세션은 익명, 즉 유저가 누군지 모르므로 세션 내 아이템 sequence를 통해 유저의 선호도를 파악해야 하는데, 이는 기존의 연구들로는 어려움이 있었다.

따라서 GNN Architecture를 적용하여, complex한 item transition을 고려하고 이를 이용하여 아이템 별 정확한 latent vector를 찾아내는 Task를 진행하였다. 또한 아이템 별로 embedding만 진행하는 것이 아닌 session 자체도 embedding하여, subgraph 별 (세션 별) 다음에 올 item을 예측하는 데에 사용한다.


2. Problem Statements

items : $V = \{v_1, v_2, ... v_n\}$

historical session graph : $S = \{v_{s,1}, v_{s,2}, ... , v_{s,n}\}$  [ordered by timestamp]

Session Graph :$G_S = (V_s, E_S), \quad (v_{s,i-1}, v_{s,i}) \in E_s$


3. Method

(1) Initial Item Embedding

먼저 초기 임베딩을 위해 Item을 d차원으로 임베딩한다.

 

(2) Gated Graph Neural Network

 

Gated Graph Neural Network

 

GRU Gate를 통해 각 Session 내의 item latente vector를 위와 같이 통과 시킨다.

Eg (1) : 현재 Representation vector [Session 내 Item transition이 고려됨]

Eq (2) : Update Gate로, 정보를 얼마나 취사 선택할 것인가?

Eq (3) : Reset Gate로, 과거 latent vector [hidden vector]를 얼마나 초기화 해줄 것인가?

Eq (4) : Candidate state, Reset해준 과거 정보 + 현재 정보

Eq (5) : 과거 정보 Update + Candidate Update

Adj Matrix $A_s$는 Outgoing edge와 Incoming edge로 이루어져 있으며 아래와 같다.

 

Adjacency Matrix

 

위 과정을 통해 우리는 Session 내의 Sequential한 특징을 고려하여 Item들이 latent vector로 임베딩 된 값들을 얻을 수 있다.

 

(3) Generating Session Embedding

 

이제 우리는 이전에 Gated GNN을 통과한 Item들의 latent vector와 같은 공간에 Session을 Embedding 해준다. 즉, 같은 공간에 두 type의 vector를 Embedding하여, Session 전체 특성을 잘 가지고 있는 Item을 Next Item으로 추천해준다는 것이다.

 

 

위의 식처럼 Session Embedding은 Soft Attention Mechanism을 고려한다. 각 Session 내에서 다음에 올 아이템은 가장 최근 선택된 item이 영향을 많이 끼친다고 생각하여 $v_n$을 $v_i$에 더해주고 이에 softmax를 취해준 일종의 Attention score를 구하고, 이를 각 세션 내 item latent vector에 곱해준다. 그 후 모든 세션 내 아이템에 대하여 이 값을 합하여 session의 latent vector를 구해준다.

 

 

그 후 최종적으로 다시 세션 내 최종 아이템 vector를 기존 session latent vector와 concat한 후 Linear Transformation을 해주어 완성한다.

 


4. Prediction / Loss

 

 

위에서 구했던 session의 latent vector와 item latent vector를 내적한 후 softmax를 취해서 각 session 내에서 next item prob를 구할 수 있다. 이를 이용해서 cross entropy 개념으로 Loss function을 구축할 수 있다.

Loss function 식을 자세히 살펴보면, 정답인 likelihood + (1 - 오답인 Likelihood)를 최대화 해야하는 상황에 negative를 취해주어서 이를 최소화하는 방향으로 움직인다.


5. Limit

1. New Item

 

학습 과정에서 한 번이라도 선택된 적이 있는 아이템만 들어가기 때문에 현재 Session data에 있는 item만 추천이 가능하다.

 

2. Session Embedding

 

단순하게 같은 session 내에 있는 item들이 모두 연관되어 있을 것이라는 가정으로 Embedding을 한다. 즉, User가 target으로 하는 item을 따로 고려하지 않고 거시적으로 고려할 뿐이다. 또한 Soft Attention을 적용하기 때문에 마지막 item이 사실은 큰 영향을 끼치지 않을 수도 있음에도 불구하고 과대평가하는 경우도 생길 수 있다.