본문 바로가기
내 맘대로 읽는 논문 리뷰/Recommendation

MEANTIME

by 동석2 2021. 3. 24.

MEANTIME : Mixture of Attention Mechanisms with Multi-temporal Embeddings for Sequential Recommendation

https://arxiv.org/pdf/2008.08273.pdf

 

이번엔 조금 특별한 논문을 들고 왔다. 작년 추천 시스템 프로젝트를 할 때 BERT4Rec과 SR-GNN을 비교했었는데, 여기서 BERT4Rec을 좀 더 추천 시스템에 맞게 보완하여 만들었다고 한다.

왜 특별하냐면, 해당 수업의 교수님과 조교 분들이 낸 논문이기 때문이다(..) 그래도 수업 때 나름 아이디어를 재미있게 들었던 것 같아 되짚어보려 한다.

 

Intro

지난 BERT4Rec 리뷰에서도 보았듯이, self-attention을 기반으로 하는 모델들은 sequential recommendation task에 아주 잘 맞는 모습을 보이고 있다. 애초에 시계열 데이터 분석을 위한 모델들이기에, 어쩌면 거의 비슷한 task이니 당연할 지도.

하지만 이러한 모델을 sequential recommendation에 이용하는 이전의 방식에는, 몇가지 결함이 있었다고 한다. 이를 해결하려 몇가지 테크닉을 추가한 것이 해당 논문이라 볼 수 있겠다. 좀 더 nlp 모델을 추천에 맞게끔 변형한 것.

이 논문에서 말하는 결함들은 다음과 같았다.

  • Timestamp의 활용

기존의 nlp를 위한 모델들은, 문장에는 시간순서가 따로 없으니 positional embedding 같은 별도 파라미터를 통해 시간 관계를 학습했었다.

그런데 사실 추천 task에서는, 데이터 내에 timestamp라는 정보가 있어, 보다 효과적으로 시간 관계 정보를 뺄 수 있다. 논문은 이를 활용하는 방법을 소개한다.

  • 하나의 임베딩 사용

이전의 모델들은 하나의 embedding scheme만을 거쳤는데, 논문은 이렇게 할 경우 정보의 bottleneck이 생길 수 있다고 한다. 또한 multi-head attention에서 모든 헤드에서 동일한 임베딩 방법을 적용하는 것 또한 비슷한 패턴 인식만 반복하기에 비효율적이라고 한다.

그래서 논문은 제목에 나와있듯, multi-temporal embedding이라는 방법을 사용했다고 한다. timestamp를 활용해 여러 가지 PE 방법을 적용하며 multi embedding scheme을 가졌고, head마다 패턴을 specialize하게 추출하도록 하는 방법을 만들었다. 말로는 조금 어려운데, 구체적으로 들어가보자.

 

Implementation

우선 주어진 문제는 BERT4Rec과 비슷하다. user 마다 item array, time array를 받아오며, 각각 마지막에 [MASK], t_next를 넣어 그 다음 item을 예측하도록 했다.

  • Input Embedding

위 그림을 보면, input으로 item array, time array가 들어간다. item array의 경우 learnable embedding을 통해 E_item으로 변환된다. (N x h) 이는 이전과 차이가 없다.

time array의 경우 조금 다른데, 이전의 방법에선 한가지 방법으로 position embedding을 부여했다면, 논문에선 무려 6가지의 방법을 통해 임베딩을 계산한다. 이것이 가능한 것은 time array가 단순한 sequence가 아닌, 독립적인 timestamp의 조합이기 때문이다.

먼저 앞의 3가지 방법은 Absolute embedding 방법이다. 첫번째는 E_Day로, 실제로 timestamp를 참고하여 day에 기초에 임베딩을 부여한다. 따라서 embedding matrix도 가능한 day 수 x h이다. 이는 matrix 크기, 효율성을 따져서 이와 같이 정했다고 한다.

남은 두 가지는 E_Pos, E_Con이다. E_Pos는 기존 PE처럼 N에 기반한 임베딩이고, E_Con은 Constant로 1xh 짜리 임베딩이다. (모든 N개 토큰이 공유하는 임베딩)

E_Day를 통해 attention scope를 day단위로 해석하도록 하고(같은 사람, 같은 날에는 보통 비슷한 호감, 아이템을 보니까), E_Pos로 이전 모델의 패턴을 가져오고(이 것은 예전 모델에서도 썼던 것, 가장 기본적 효과), E_Con으로 편향을 지운다.

오른쪽의 Relative Embedding을 구하기 위해선, 우선 Relative distance matrix를 구해야 한다. 이는 NxN의 크기로 시간의 차를 행렬로 나타낸 것이다. 여기에 각기 다른 세 가지 방법으로 임베딩을 구한다.

이름에서 유추할 수 있듯이, E_Sin은 sin,cos함수를, E_exp는 exp함수, E_log는 log함수를 적용한다. 이렇게 하는 것은 각기 서로 다른 view로 시간 관계를 해석하기 위함이라고 한다.

E_Sin으로 주기적인 아이템 시퀀스를 파악하고 E_exp, E_log로는 time gap을 기하급수적으로 파악한다.

이렇게 다양한 6가지의 임베딩을 통해 sequence를 정말 다양한 시각에서 학습할 수 있게끔 하였다.

  • Self-Attention Structure

맨 처음에 나온 Transformer의 경우, 단순히 item embedding과 position embedding을 합쳐, attention을 계산했다. (a)

이후에 보다 발전한 attention은, 단순히 합치지 않고 PE와도 한번, IE끼리 한번 계산하여 합치는 방식을 택했다. PE 계산에는단순한 PE vector 대신, E_R이라는 위에서 보았던 relative distance matrix와 비슷한 방식으로 시간 차이만을 계산에 사용하면서 positional bias를 줄이고, 상대적 시간 관계만을 학습하도록 하였다. (b_R, b_I의 global 편향을 통해 magnitude를 똑같게 맞춤) MEANTIME도 Relative Embedding에 대해서 이 방법을 사용했다.(b)

마지막 그림은 MEANTIME에서 새로 제안한 것으로, Absolute embedding에 대해서 이 방법을 사용했다. 이 경우 (a)의 방법을 조금 가져와, q,k에 대해서만 두 임베딩을 합쳐 self-attention 계산을 한다.

Experiments

학습 방법은 기존 BERT와 같이 Clozer task 방식을 사용했다.

결과는 다음과 같았다.

실제로 모든 데이터셋에 대해 SOTA를 찍었다. 흥미로운 점은 데이터셋마다 최고치를 찍은 임베딩 조합이 달랐다는 것인데, ML-1M에서는 day+pos+sin+log 조합이, Amazon beauty에서는 day+sin+exp+log조합이 가장 좋았다고 한다. 아마 데이터셋마다 특징이 달랐기 때문이겠지. 그렇게 보면 Day, Sin 임베딩은 정말 좋은 효과, 원하는 효과를 내었다고 볼 수 있겠다. 또 임베딩에 따라 가중치를 다르게 하면 더 좋은 결과가 나올 수도 있겠다. 아래를 보면 정말로 day, 혹은 log가 빠지면 성능이 많이 나빠지는 결과도 볼 수 있다.

ML-1M / Game

여러가지 임베딩 방법들을 제시하면서, SOTA까지 찍어본 논문. 어찌보면 이후에 연구를 더 할 수도 있을 논문일 것 같다. 다양한 방법이 일단 나왔으니, 어떤 것이 어떤 dataset에 optimal할지, 혹은 optimal한 방법을 어떻게 찾을지 같이 말이다. (지금처럼 모두 실험 없이도?)

또한 Pre-LN을 사용한 모델이기에, 이전에 읽었던 ADMIN 을 활용하면 Post-LN방법을 적용하여 더 좋은 성능을 기대할 수도 있겠다.

'내 맘대로 읽는 논문 리뷰 > Recommendation' 카테고리의 다른 글

Matrix Factorization  (0) 2021.04.05
BERT4Rec  (0) 2021.03.18
Wide & Deep  (0) 2021.03.18
SR-GNN  (0) 2021.03.10