[RecSys] Recommender System with RNN(GRU 4 Rec)

mincheol2·2022년 3월 17일
0

RecSys

목록 보기
18/23

이 글은 부스트캠프 AI Tech 3기 강의를 듣고 정리한 글입니다.

RNN과 추천시스템

이전까지 다뤄왔던 추천모델들은 유저의 Sequence를 고려하지 않은 모델들이었다.

실제 상황에서 유저의 선호도는 고정되지 않고 시간에 따라 달라지게 된다. 즉 추천 모델에서 해결해야할 문제는 단순 선호도뿐만 아니라 지금 고객이 좋아하는 것은 무엇인가를 찾는 것이기도 하다.

이를 위해 유저가 서비스를 이용하는 동안의 행동을 기록한 데이터인 Session(브라우저 종료되기 전까지 쿠키 등)을 이용해서 Session based Recommender System을 할 필요가 있다.

추천시스템과 데이터 형태 적으로 비슷한 점이 있는 자연어 처리 분야에서는 문자의 시계열적 특성을 다루기 위해 RNN 기반 모델을 만들었다.

RNN 기반 모델은 자연어처리뿐만 아니라 다양한 시계열 분야에서 활용되는데, Long short-term memory 문제가 발생하기 때문에 이를 해결하기 위해 LSTM 을 활용한다.

GRU는 LSTM의 변형 중 하나로 LSTM과 명확한 성능 차이가 없으면서 출력게이트가 따로 없어 파라미터와 연산량이 더 적어 훨씬 가벼운 모델로 알려져 있다.

따라서 이번 글에서는 GRU에 Session 데이터를 이용하여 유저가 지금 원하는 상품을 추천하는 GRU4Rec을 알아보도록 하자.

GRU 4 Rec

SESSION-BASED RECOMMENDATIONS WITH RECURRENT NEURAL NETWORKS
GRU 4 Rec은 Session이라는 sqeuence 데이터를 GRU 레이어에 입력하여 바로 다음에 올 확률이 가장 높은 아이템을 추천하는 모델이다.

모델구조

Input

one-hot encoding 된 Session을 사용하는데, Embedding layer가 점선으로 표현한 이유는 임베딩 레이어를 사용하지 않았을 때 성능이 더 높기 때문이다.

GRU 레이어

Sequence 상 모든 아이템들에 대한 맥락적 관계를 학습한다.

출력

다음에 골라질 아이템에 대한 선호도 스코어를 출력한다.
이때 Feedforward layer 또한 선택적으로 사용이 가능하다.

학습기법

위에서 살펴본 것 처럼 모델은 아주 간단한 형태이다. 하지만 Session data를 사용하기 때문에 학습에 있어 몇가지 기법을을 활용해야한다.

  • Session Parallel Mini batches
    대부분의 세션은 매우 짧지만 길이가 긴 것도 존재하기 때문에 길이가 짧은 세션이 단독 사용되면 학습이 제대로 이루어 지지 않기 때문에 그림과 같이 세션을 병렬적으로 구성하여 미니배치학습을 한다.

  • Sampling on the output
    현실에서는 아이템 수가 많기 때문에 모든 후보 아이템의 확률 계산이 어렵기 때문에 아이템을 negative samping 하여 subset 만으로 loss를 계산한다.
    이때 아이템의 인기가 높은데도 상호작용이 없었다면 사용자가 관심없는 아이템이라고 가정하고 인기에 기반한 Negative Smapling을 한다.

결과 및 요약


RCS15와 VIDEO 데이터셋에서 가장 좋은 성능을 보인 item-KNN 모델 대비 약 20% 높은 추천성능을 보이고 GRU레이어의 hidden unit이 클때 더 좋은 성능을 보임을 알 수 있다.

profile
옹오옹오오오옹ㅇㅇ

0개의 댓글