Session : 사용자가 웹 사이트, 모바일 앱 등을 통해 상호작용하는 일련의 과정
Ex) 쇼핑몰에 들어가서 상품을 검색하고 클릭하고 상세정보를 읽고 구매를 하는 모든 과정
해당 페이지를 벗어나거나 로그아웃 등의 행위를 하게 되면 session이 종료됨
여러 명의 정보가 동시에 입력되는 것이 아니라, 각 사용자마다 독립적으로 생성됨
➡ 해당 사용자의 개인화된 추천을 제공해줄 수 있음
Session based recommendation : 추천 시스템에서 사용자의 행동 데이터를 이용해, 해당 사용자가 현재 상황에서 무엇을 찾고 있는지를 파악하고 이에 맞는 아이템을 추천하는 방식
session을 하나의 추천 단위로 하여 사용자가 선호할 만한 아이템을 추천해줌
GNN모델이 나오게 된 이유
이전 RNN 계열 모델에서는 유저의 선호도를 반영하는 user representation이 따로 존재 X ➡ RNN의 hidden vector를 user representation으로 가정하고 다음 아이템 예측
각 세션이 user - specific하지 않음 ➡ 유저에 대한 특성 반영 X
Session 내의 다른 여러 아이템들 간의 복잡한 transition 무시
➡ 이러한 기존 모델들의 한계점을 보완하고자 나온 모델
input : graph
𝐺 = (𝑉, 𝐸)로 정의 (𝑉 : node, 𝐸 : edge) - node는 각 아이템을, edge는 아이템들간의 관계를 의미함
output : session vector
session vector는 session에 대한 특성벡터
예를 들어, 쇼핑몰에서 상품을 추천할 때 상품의 가격, 카테고리, 브랜드, 색상 등을 수치화하여 표현한 것을 말함
모든 아이템들의 집합
세션
이 모델의 task는 위의 식과 같이 session에 n까지의 아이템이 있을 때, n+1번째 아이템을 예측하는 것
모델의 아웃풋은 세션 s에서 가능한 모든 아이템들에 대한 확률값, y hat벡터 안의 모든 아이템들이 추천될 아이템의 후보
➡ Node : 시퀀스의 각 아이템
➡ Edge : 시퀀스에 나타난 연속 두 아이템
노드 벡터의 학습 과정
(1) 노드 간의 관계가 반영되도록 정보 전파
(2), (3) 노드 간의 관계 정보 보존 정도
(4) 이전 state, reset gate를 기반으로 후보 state 구성
(5) 마지막 state는 update gate 제한 하에 이전의 hidden state와 후보 state의 혼합으로 구성
Ex)
Matrix로 나타낸 것을 보면 outgoing edges와 incoming edges로 구성되어 있어서 x 의 크기를 갖는데
이때 처럼 아이템들이 한 sequence에서 반복적으로 등장할 수 있기 때문에 각 edge를 정규화된 가중치로 할당함
cross - entropy
더하여 세션 기반 추천 시스템에서 대부분의 세션은 짧은 길이를 가지고 있기 때문에, overfitting 문제가 발생할 가능성이 높아짐 ➡ 이를 방지하기 위해 적은 수의 훈련 데이터를 사용하는 것이 좋음
Yoochoose 1/62, Yoochoose 1/4, Diginetica 데이터셋과 P@20, MRR@20로 나누어서 모델 성능을 비교한 결과
POP은 전체 데이터에 대해 인기 아이템을 고르는 단순한 모델이어서 성능이 낮음
그러나 GRU4REC나 NARM은 RNN모델을 사용해서 유저의 과거 행동에 대한 전반적 관심사를 파악하려 했기 때문에 성능이 좋아졌음
SR-GNN은 세션뿐 아니라 아이템들이 가지는 관계를 파악하면서 진행했기 때문에 성능이 가장 좋은 것을 확인할 수 있음