논문읽기

SASRec vs BERT4Rec 추천시스템의 필수 모델 공부하기<논문읽기>

uchanee 2026. 2. 4. 23:04

 

시퀀스 추천(Sequential Recommendation)에서 Transformer 계열의 대표작으로는 SASRecBERT4Rec이 빠지지 않는다. 두 모델은 겉보기 구조가 유사하지만, 실제로는 학습 목표와 정보 사용 방식이 완전히 다르다. 이 차이는 수식 수준에서 매우 명확하게 드러난다.


1. 공통 문제 설정: 유저 시퀀스로 다음 아이템을 맞히기

유저 u의 상호작용 시퀀스를

라 하자. 목표는 일반적으로 t까지 관측했을 때 다음 아이템 st+1 혹은 “마지막 이후의 아이템”을 추천하는 것이다.

두 논문 모두 Transformer encoder 블록(Attention + FFN + Residual/LN)을 쓰지만, SASRec은 next-item(AR(auto regressive)), BERT4Rec은 masked item(AE(auto encoding))로 학습 신호를 만든다는 점에서 큰 차이가 있다.


2. SASRec: 단방향 next-item 추천의 수식적 정리

2.1 입력 표현: 아이템 임베딩 + 포지션 임베딩

길이를 n으로 맞춘 시퀀스 s=(s1,…,sn)에 대해,

  • 아이템 임베딩 테이블

  • 포지션 임베딩 

각 위치 i의 입력은

이다. (Transformer가 순서를 “모르기” 때문에 포지션 임베딩은 사실상 필수다.)


2.2 핵심: Causal Self-Attention (미래 차단)

Scaled dot-product attention은 표준 형태다.

SASRec의 self-attention은

처럼 쓰되, 가장 중요한 제약은 “causal mask”이다. 즉, 위치 i의 query가 미래 위치 j>i를 보지 못하게 마스킹하여

가 되도록 한다. 이게 곧 “단방향(next-item) 학습에서 정보 누수 방지”를 보장한다.


2.3 Position-wise FFN

attention은 가중합이라 선형성이 강하므로, 위치별 FFN을 추가한다.

보통 한 블록은

  • (masked) self-attention
  • FFN
  • residual + layernorm + dropout
    의 조합으로 반복된다.

2.4 예측 점수: 시점 표현과 아이템 임베딩의 내적

t시점의 최종 표현을 ht라고 하면 후보 아이템 i의 점수는

처럼 아이템 임베딩과의 내적으로 둔다(논문은 shared embedding을 강조).


2.5 학습 목적함수: BCE + Negative Sampling

SASRec은 implicit feedback 환경에서, 각 시점 t에 대해

  • positive: 정답 아이템 ot (다음 아이템)
  • negative: 샘플링한 아이템 j

로 BCE를 쓴다. 전형적으로는

여기서 σ(⋅)는 sigmoid, Nu,t는 negative 샘플 집합이다.

 

정리: SASRec의 학습은 “오직 과거만 보고(next-item)”, “정답은 올리고(positive) 오답은 내리는(negative)” 방식의 AR(autoregressive) 학습이다.


3. BERT4Rec: 양방향(AE) 마스크복원의 수식적 정리

3.1 왜 목표를 바꾸나: 양방향 + next-item은 정보 누수

양방향 self-attention을 그대로 next-item에 적용하면, 특정 위치 표현이 사실상 미래(정답 포함)를 볼 수 있어 “치팅”이 발생한다.
그래서 BERT4Rec은 목표를 next-item에서 masked item prediction으로 변경한다.


3.2 입력 표현: 아이템 + 포지션 (동일하지만, 마스크가 들어감)

시퀀스 일부를 마스크한다.

  • 원본 Su=(v1,…,vT)
  • 마스크된 입력 Su′: 일부 위치 m에서 vm→[MASK]

초기 임베딩은

(아이템 임베딩 + positional embedding) 형태로 들어가며, [MASK]도 하나의 토큰처럼 임베딩을 가진다.


3.3 Transformer encoder 레이어 (Residual/LN/Dropout 포함)

BERT4Rec은 BERT encoder처럼 레이어를 쌓는다. 전형적인 sub-layer는

형태로 안정화한다.

(핵심은 SASRec과 달리 causal mask가 없다는 점이다. 즉 양방향으로 문맥을 본다.)


3.4 출력/확률: 마스크 위치에서 softmax로 아이템 분류

마스크된 위치 t의 최종 표현 ht로 “그 자리에 올 아이템” 분포를 만든다. 논문은 (BERT처럼) projection + nonlinearity 후 임베딩 행렬과 곱해 softmax를 둔다:

 

여기서 E는 아이템 임베딩 행렬이며, 논문은 입력/출력 임베딩 공유(shared)를 사용해 과적합을 완화한다.


3.5 학습 목적함수: 마스크된 위치들의 NLL(=Cross-Entropy)

마스크된 아이템 집합을 Sum라고 하면, 손실은

“가려진 자리들만” 맞히는 cross-entropy다.

요점: BERT4Rec은 “양방향 문맥”을 쓰되, 정답을 입력에서 제거([MASK])함으로써 정보 누수를 제거하고 AE(auto-encoding) 방식으로 학습한다.


3.6 테스트에서 next-item으로 바꾸는 방법: 마지막에 [MASK] 추가

학습은 “중간 마스크 복원”이지만, 추천은 “다음 아이템”이므로 테스트 시에는

처럼 맨 끝에 [MASK]를 붙이고, 그 [MASK] 위치의 분포로 다음 아이템을 추천한다.


4. 수식으로 보는 핵심 차이: AR vs AE

SASRec (AR, next-item)

  • causal mask로 “미래 차단”
  •  

(negative sampling 기반 BCE)

BERT4Rec (AE, masked item)

  • 양방향 self-attention (미래 차단 없음)
  • 대신 입력에서 정답을 제거([MASK])
  • 학습:

(softmax 기반 cross-entropy)

결국 논쟁의 중심은 “Transformer냐”가 아니라,

학습 목표를 next-item(AR)로 둘지, masked reconstruction(AE)로 둘지이다.

 


5. 요약

  • SASRec: “추천의 시간성을 정직하게” 반영하는 AR 베이스라인. causal mask + BCE(NS)가 핵심.
  • BERT4Rec: “표현학습을 더 강하게” 하는 AE 베이스라인. 양방향 + [MASK] + CE(softmax)가 핵심.
  • 두 모델의 성능 비교는 데이터 희소성, 시퀀스 길이, negative sampling/마스크 비율 세팅에 따라 결론이 흔들릴 수 있다