Self-Attentive Sequential Recommendation
108
2023-03-26
SASRec
📄 paper : Self-Attentive Sequential Recommendation ↗
III. METHODOLOGY
유저의 행동 시퀀스
학습 시,
A. Embedding Layer
학습 데이터
만약 시퀀스가
임베딩 행렬
인풋 임베딩 행렬은
Positional Embedding : 셀프어텐션은 이전 아이템의 위치를 알지 못한다. Positional embedding
B. Self-Attention Block
아이템 개수 :
(실제로는 50차원을 사용함!)
어텐션 복습. scaled dot-product attention은 다음과 같이 정의된다.
어텐션 함수는 주어진 '쿼리(Query)'에 대해서 모든 '키(Key)'와의 유사도를 각각 구합니다. 그리고 구해낸 이 유사도를 키와 맵핑되어있는 각각의 '값(Value)'에 반영해줍니다. - 딥 러닝을 이용한 자연어 처리 입문
NLP에서는
최근(논문이 발표되었던 2018년 즈음)에는,
여기서는
Casuality(인과관계) : lower triangle만 사용하는 이유
시퀀스의 특성을 생각해보자. 모델은
그러나 셀프어텐션의 결과를 보면, 예를 들어 2번째 아웃풋
Point-Wise Feed-Forward Network
셀프어텐션이 이전의 모든 아이템의 임베딩을 선택적 결합을 시킬 순 있었지만, 이 결합은 궁극적으론 linear 모델이다. 그래서 여기서는 모델에게 비선형성을 주기 위해 2개의 point-wise feed-forward network를 모든
C. Stacking Self-Attention Blocks
더욱 복잡한 아이템 사이의 transition을 학습해보자. 어떻게? Self-attention 블록(FFN 포함)을 더 쌓아보자!!
2번째 블록부터는 다음과 같이 정의된다!
무조건 블록을 많이 쌓는것이 좋을까? 그럼 문제점도 있다.
1) 모델 capacity가 커져(파라미터가 많아져서) 오버피팅으로 이어질 수 있다.
2) 기울기 소실이 일어나기 쉬워지고, 그럼 학습이 불안정해진다.
3) 파라미터가 많은 모델은 당연히 학습 시간이 길어진다.
[3]Attention is all you need로부터 영감을 받아, 아래와 같이 처리하여 이 문제들을 해결한다!
D. Prediction Layer
Shared Item Embedding
모델 사이즈를 줄이고 오버피팅을 막기 위해, 아이템 임베딩
이렇게 인풋레이어와 예측레이어에서 같은 임베딩 벡터를 쓸 때 발생할 수 있는 잠재적인 문제는 무엇일까? 아이템 벡터간의 내적이 비대칭적 순서를 나타내지 못한다는 것이다. 예를 들어
경험적으로 아이템 임베딩을 공유하는 것은 SASRec의 성능을 매우 향상시켰다!
E. Network Training
유저
loss로는 binary cross entropy를 사용한다!
옵티마이저는 Adam을 사용.
F. Complexity Analysis
공간복잡도 : 학습되는 파라미터는 임베딩, 셀프어텐션, 피드포워드 네트워크, layer normalization이다. 이 수를 합하면
시간복잡도 : 본 모델의 시간복잡도는
G. Discussion
Reduction to Existing Models
MC-based Recommendation
RNN-based Recommendation
IV. EXPERIMENTS
Research Questions
RQ1. SASRec은 CNN/RNN 기반 모델을 포함해 최신 모델을 능가하는가?
RQ2. SASRec 구조 속의 다양한 컴포넌트들의 영향력은 얼마나 되는가?
RQ3. SASRec의 학습효율 및 (
RQ4. 어텐션 가중치는 아이템의 어트리뷰트 또는 위치와 연관된 정보를 반영할까?
A. Datasets
- Amazon
- Steam
- MovieLens
B. Comparison Methods
- First Group : 유저 피드백만 고려할 뿐, 시퀀스 순서는 고려하지 않음
- PopRec : 인기도 정렬
- BPR(Bayesian Personalized Ranking)
- Second Group : 마지막 아이템만 고려하는 1차 마르코프 체인에 기반한 시퀀셜 추천
- FMC (Factorized Markov Chains)
- FPMC (Factorized Personalized Markov Chains)
- TransRec (Translation-based Recommendation)
- Last group : 모든 아이템을 고려하는 시퀀셜 추천
- GRU4Rec
- GRU4Rec
: GRU4Rec과 손실함수, 샘플링이 다름 - Caser (Convolutional Sequence Embeddings)
C. implementation Details
- 셀프어텐션 블록 2개 사용(
) - 학습가능한 포지셔널 임베딩 사용
- 임베딩 레이어와 예측 레이어의 아이템 임베딩은 공유
- 옵티마이저는 Adam 사용.
- learning rate는 0.001
- 배치사이즈는 128
- 드랍아웃 비율은 데이터셋의 희소성에 따라 0.2 또는 0.5를 사용한다.
- 최대 길이
은 ML-1M에는 200을, 다른 세 데이터셋에 대해서는 50을 사용한다. 이는 유저 액션 길이 평균값으로 맞춘 것이다!
D. Evaluation Metrics
- Hit Rate@10 : 예측아이템 상위 10개 아이템 중 정답아이템이 존재하면 1, 아니면 0. 전체 데이터셋에 대해서 비율을 계산!
- NDCG@10 : 예측아이템 상위 10개 아이템 중 정답아이템의 순위가 높을수록 높게 계산됨
E. Recommendation Performance
RQ1 해결. 성능 향상이 최소 5프로에서 최대21퍼까지……ㄷㄷ
임베딩 차원을 다양하게 바꿔가며 실험해봤을때, SASRec은 차원을 높일수록 성능이 좋아졌으며, 40이상이 최적값으로 보임.
Table of Contents
- Self-Attentive Sequential Recommendation
- SASRec
- III. METHODOLOGY
- A. Embedding Layer
- B. Self-Attention Block
- C. Stacking Self-Attention Blocks
- D. Prediction Layer
- E. Network Training
- F. Complexity Analysis
- G. Discussion
- IV. EXPERIMENTS
- A. Datasets
- B. Comparison Methods
- C. implementation Details
- D. Evaluation Metrics
- E. Recommendation Performance
Leave a Comment:
로그인 후 댓글을 작성할 수 있습니다.
Comments:
No comments yet. Be the first to comment!