SR-GNN (Session-based Recommendation with GNN)

CODA·2022년 10월 4일
0

소비자의 로그(클릭 순서)를 기반으로하는 추천시스템인 SR-GNN에 대해 작성해보겠다

paper link

reference

SR-GNN 이란?

  • 기존의 세션 기반의 추천 알고리즘의 RNN에 GNN을 결합함으로써 Item 맥락간의 transifion까지 포착하는 알고리즘이다
  • 각 세션이 하나의 subgraph로서, 세션 내부에는 소비된 Item Node들이 directed link로 연결된다

1. 모델구조

아래는 SR-GNN의 대략적인 구조를 표현한 그림이다

  • V1 ~ V7은 추천대상인 Item 리스트이다
    • 세션1 = [V1 -> V2 -> V3 -> V4] 라면 웹이나 어플 상에서 로그 기록을 기반하여 세션을 구성하였을때 어떠한 4개의 Item을 순차적으로 소비(클릭)한 데이터를 표현한 것이다
  • 각 세션 sequence를 directed session (sub) graph로 취급한다
    • 이 세션데이터는 Gated GNN을 통해 각각의 Node 벡터를 얻게 된다
    • 그리고 이를 활용하여 최종적으로 Sg, S1이라는 2개의 벡터를 얻게 된다
      • Sg : Global한 선호를 반영하는 Global Session Vector
      • S1 : 현재 세션내에서의 User의 현재 관심을 반영하는 Local Session Vector

2. Session 내부 Node 임베딩 얻기

먼저 Session (sub) Graph 내에서 이루어지는 Node 벡터의 학습 과정을 알아보자

  • 직전 t-1 시점의 Node 벡터를 활용해서 현재의 t 시점 Node 벡터를 얻게 되는 과정이다
  • 위와 같은 session 구조에서는 양방향 1, 단뱡향 1/2로 matrix가 구성된다
  • 이렇게 매트릭스에서 이전 노드벡터 정보를 받아온다 (인덱싱. 여기서는 2번째 row)
    • H는 Weight 조절하는 역할 (파라미터)
  • 그리고 이걸 바로 쓰는게 아니라 어떤 정보를 보존하고 버릴지를 결정한다 (GRU Layer)
  • z가 무엇을 보존할지, r이 무엇을 잊을지를 결정하게 되는 것이다
  • Final State는 위와 같이 이전 Hidden State 였던 V t-1 을 얼마나 잊고, 현재 Candidate State를 얼마나 보존할지를 결정하게 된다

이렇게 세션 Graph 내의 모든 Node에 대해 수렴할 때 까지 업데이트를 진행하고 나면 Final node Vectors를 얻게 된다 : V1 ~ Vn

논문의 기호 중 i는 Node의 Index를 의미하고, t는 학습 Update 과정에서의 시점을 의미한다. 즉 모든 업데이트가 끝나면 t는 필요 없는 기호가 된다

3. Session Graph 임베딩 얻기

세션 임베딩은 아래의 두가지 벡터를 결합하여 구성하게 된다

  • Local Sesssion Embedding
    • 이건 가장 최근에 클릭한 아이템의 임베딩 값을 그대로 사용한다
  • Global Sesssion Embedding
    • 모든 Node 벡터를 통합하여 얻을 수 있는데, 중요도는 각각 다를 것이므로 Soft-attention 메커니즘을 활용한다

4. 모델 훈련과 추천

  • 세션들 전체에서 Unique한 Item들 전체 목록 중 가장 높은 Score를 정해서 추천하게 된다
    이 때는 Softmax 함수를 사용한다
  • Loss함수는 Cross-Entropy 함수를 사용한다
  • 일반적으로 세션의 길이가 괴앚ㅇ히 짧기 때문에 과적합을 막기 위해서는 비교적 적은 수의 Epoch이 적용되어야 할것이라 한다

5. 코드 구현

추가 예정

profile
금융권에 가고싶은 김코다입니다. 취업을 하면 기타치며 조르바처럼 살고파요.

0개의 댓글