Session-based recommendation with GNN

멋쟁이토마토·2023년 11월 22일
0

Study

목록 보기
1/2

논문 본문 링크

Intro


Session : 사용자가 웹 사이트, 모바일 앱 등을 통해 상호작용하는 일련의 과정

Ex) 쇼핑몰에 들어가서 상품을 검색하고 클릭하고 상세정보를 읽고 구매를 하는 모든 과정

  • 해당 페이지를 벗어나거나 로그아웃 등의 행위를 하게 되면 session이 종료됨

  • 여러 명의 정보가 동시에 입력되는 것이 아니라, 각 사용자마다 독립적으로 생성됨

➡ 해당 사용자의 개인화된 추천을 제공해줄 수 있음


Session based recommendation : 추천 시스템에서 사용자의 행동 데이터를 이용해, 해당 사용자가 현재 상황에서 무엇을 찾고 있는지를 파악하고 이에 맞는 아이템을 추천하는 방식

  • session을 하나의 추천 단위로 하여 사용자가 선호할 만한 아이템을 추천해줌


GNN모델이 나오게 된 이유

이전 RNN 계열 모델에서는 유저의 선호도를 반영하는 user representation이 따로 존재 X ➡ RNN의 hidden vector를 user representation으로 가정하고 다음 아이템 예측

  • 여기서 user representation은 유저의 특성벡터
  • RNN은 이러한 user representation이 별도로 존재하지 않고, 이전의 모든 정보들을 hidden vector에 저장하기 때문에 hidden vector를 user representation이라고 가정하고 다음 아이템을 예측

각 세션이 user - specific하지 않음 ➡ 유저에 대한 특성 반영 X

  • 한 유저만의 정보가 아닌 다른 유저들의 공통된 정보일 수 있음
  • 유저의 모든 정보가 포함된 것이 아니라 일부분의 정보만 포함된 것일 수 있음

Session 내의 다른 여러 아이템들 간의 복잡한 transition 무시

  • 예를 들어, 사용자가 책 ➡ 노트북 ➡ 의자 순으로 상품을 클릭했으면, 다음 아이템을 예측할 때는 의자만을 고려하여 아이템을 추천해줌

➡ 이러한 기존 모델들의 한계점을 보완하고자 나온 모델


GNN (Graph Neural Networks)

input : graph

𝐺 = (𝑉, 𝐸)로 정의 (𝑉 : node, 𝐸 : edge) - node는 각 아이템을, edge는 아이템들간의 관계를 의미함

output : session vector

session vector는 session에 대한 특성벡터

예를 들어, 쇼핑몰에서 상품을 추천할 때 상품의 가격, 카테고리, 브랜드, 색상 등을 수치화하여 표현한 것을 말함


SR-GNN 구조

모든 아이템들의 집합 V=v1,v2,...,vmV = {v_1, v_2, ... , v_m}
세션 s=[vs,1,vs,2,...,vs,n]s = [v_{s,1}, v_{s,2}, ... , v_{s,n}]

V=vx,n+1V = v_{x, n+1}

  • 이 모델의 task는 위의 식과 같이 session에 n까지의 아이템이 있을 때, n+1번째 아이템을 예측하는 것

  • 모델의 아웃풋은 세션 s에서 가능한 모든 아이템들에 대한 확률값, y hat벡터 안의 모든 아이템들이 추천될 아이템의 후보

Node : vs,tv_{s,t} 시퀀스의 각 아이템
Edge : (vs,i1,vs,t)(v_{s,i-1}, v_{s,t}) 시퀀스에 나타난 연속 두 아이템


Learning Item Embedding on Session Graphs

노드 벡터의 학습 과정

(1) 노드 간의 관계가 반영되도록 정보 전파

  • 행렬 AsA_s에 의해 주어진 제한 하에 서로 다른 노드 사이의 정보 전파를 위해 사용

(2), (3) 노드 간의 관계 정보 보존 정도

  • 각각 update gates와 reset gates를 의미, 어떤 정보를 유지할 것인지 혹은 버릴 것인지를 결정함

(4) 이전 state, reset gate를 기반으로 후보 state 구성

(5) 마지막 state는 update gate 제한 하에 이전의 hidden state와 후보 state의 혼합으로 구성

  • 종합적으로 t-1시점의 값들로부터 t시점의 노드 벡터 값을 구함

Ex)

Matrix로 나타낸 것을 보면 outgoing edges와 incoming edges로 구성되어 있어서 vv x 2v2v의 크기를 갖는데

이때 v2v_2처럼 아이템들이 한 sequence에서 반복적으로 등장할 수 있기 때문에 각 edge를 정규화된 가중치로 할당함


Loss Function

cross - entropy

  • 각 노드마다 다음에 올 아이템이 정답일 확률과 오답일 확률을 계산하는데 사용
    따라서 각 노드의 출력값이 0 또는 1에 가까울수록 이 손실함수의 값은 작아지는 방식으로 모델을 학습함

더하여 세션 기반 추천 시스템에서 대부분의 세션은 짧은 길이를 가지고 있기 때문에, overfitting 문제가 발생할 가능성이 높아짐 ➡ 이를 방지하기 위해 적은 수의 훈련 데이터를 사용하는 것이 좋음


Evaluation Metrics

  • Yoochoose 1/62, Yoochoose 1/4, Diginetica 데이터셋과 P@20, MRR@20로 나누어서 모델 성능을 비교한 결과

  • POP은 전체 데이터에 대해 인기 아이템을 고르는 단순한 모델이어서 성능이 낮음

  • 그러나 GRU4REC나 NARM은 RNN모델을 사용해서 유저의 과거 행동에 대한 전반적 관심사를 파악하려 했기 때문에 성능이 좋아졌음

  • SR-GNN은 세션뿐 아니라 아이템들이 가지는 관계를 파악하면서 진행했기 때문에 성능이 가장 좋은 것을 확인할 수 있음

profile
better than yesterday !

0개의 댓글