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개의 댓글