TL;DR
IntentRec : 유저의 세션 의도(action type, genre, movie/show, time-since-release)를 먼저 예측하고 그 예측 결과를 다음 아이템 예측의 입력 feature로 직접 전달하는 계층적 멀티태스크 추천 모델
- 기존 MTL 기반 intent-aware 추천 모델들은 intent 예측과 item 예측이 공유 인코더로만 느슨하게 연결되어, intent 예측이 item 예측에 직접적인 영향을 주지 못했음 → 의도 예측 결과(임베딩)를 아예 item 예측기의 입력으로 꽂아 넣는 hierarchical 구조로 이를 해결
- Netflix 프로덕션 모델(TransAct) 대비 next-item 예측 정확도 +7.4% 개선 (통계적으로 유의, p<0.01)
- 유저의 단기 관심(최근 1주일 interaction)과 장기 관심(Transformer 전체 시퀀스)을 분리해서 모델링 → 이 short-term feature 추가만으로 +3.8%p 가량의 추가 성능 향상
- 예측된 intent 임베딩에 대한 attention weight를 통해 유저별 “주요 의도”를 해석 가능한 형태로 제공
Background
- 문제: next-item 예측 자체는 중요하지만, 유저가 “지금 어떤 의도로 세션에 들어왔는지”(영화를 볼지 TV쇼를 볼지, discover인지 continue-watching인지 등)를 알면 추천 품질을 더 높일 수 있음
- Netflix는 유저 interaction에 Action Type(continue watching, discover 등), Genre, Movie/Show, Time-since-release 같은 메타데이터가 풍부하게 붙어 있고, 이들이 유저 의도의 proxy 역할을 할 수 있음
- 기존 intent-aware 추천 연구의 한계 두 가지
- (1) Hierarchical하지 않음: intent 예측 head를 next-item 예측 모델에 단순히 추가하는 MTL 방식이 일반적인데(다음 아이템 맞히는 김에 auxiliary로 장르도 맞혀봐라), 이 경우 intent 예측과 item 예측이 공유 인코더를 통해서만 간접적으로 연결됨
-> 즉 intent 예측이 맞든 틀리든 item 예측 쪽에 직접적인 신호로 전달되지 않는다는 것 - (2) 단기/장기 관심사 분리 부재: 유저의 최근 관심(예: 오늘은 친구들과 공포영화)과 평소 성향(공포 비선호)이 다를 수 있는데, 이를 따로 모델링하지 않음
- (1) Hierarchical하지 않음: intent 예측 head를 next-item 예측 모델에 단순히 추가하는 MTL 방식이 일반적인데(다음 아이템 맞히는 김에 auxiliary로 장르도 맞혀봐라), 이 경우 intent 예측과 item 예측이 공유 인코더를 통해서만 간접적으로 연결됨
- TransAct(Pinterest)가 user intent/action 예측의 SOTA로 언급되지만, next-item과 next-intent를 동시에 예측하거나 단기/장기 관심을 함께 모델링하지는 못함 → IntentRec이 이 두 한계를 모두 겨냥
Method
전체 구조
- 3개 컴포넌트로 구성: input feature constructor → user intent predictor → next-item predictor
- 핵심 설계 원칙: intent 예측을 먼저 수행하고, 그 결과를 next-item 예측의 입력 feature로 “직접” 사용하는 hierarchical multi-task learning (H-MTL)
-
- 왜 hierarchical인가: 단순 MTL은 loss만 공유되고 feature 경로가 분리되어 있어 intent 정보가 item 예측에 충분히 반영되지 않는다는 저자들의 관찰에서 출발
-
Input Feature Sequence 구성
- 유저 의 interaction sequence 에서 각 interaction의 categorical/numerical feature를 임베딩/정규화해 concat한 것이 interaction feature
- 단기 관심(short-term interest)을 personalize된 방식으로 정의하는 것이 포인트
- 단순히 “최근 L개 interaction”으로 자르면 유저마다 시청 패턴이 달라서 L이 사람마다 다른 의미를 가짐 (헤비 유저 vs 라이트 유저)
- 대신 timestamp 기반 윈도우 (예: 1주일)를 사용: ,
-> 즉 “최근 H시간 이내에 발생한 interaction들”을 Transformer 인코더로 요약한 것이 short-term feature - 최종 input feature sequence는 (interaction feature와 short-term feature의 concat)
- ![[Figure 3.png|435]]
- 고수준 interaction sequence로부터 interaction feature sequence와 short-term interest feature sequence를 각각 만들고 concat해서 최종 input feature sequence를 구성하는 과정
- short-term feature는 윈도우 안에 드는 과거 interaction들만 모아 별도 Transformer encoder로 인코딩 → 장기 트렌드(전체 시퀀스)와 분리된 “최근 신호”를 명시적으로 모델에 주입하는 구조를 보여줌
User Intent Prediction
- Intent는 Action Type, Genre, Movie/Show, Time-since-release 4개 레이블의 혼합으로 정의 (도메인에 따라 교체 가능)
- Input feature sequence를 FC+정규화 후 Transformer intent encoder(causal mask 적용, timestamp를 positional encoding으로 사용)에 태워 intent encoding sequence 생성
- 각 intent task마다 별도 FC + Softmax로 prediction vector 산출
- 여러 intent prediction을 하나의 임베딩으로 합치는 방법이 핵심 트릭: 단순히 를 바로 쓰지 않고, 각 intent prediction을 projection한 뒤 attention으로 가중합
- 왜 대신 를 쓰는가: attention weight 자체가 “이 유저에게는 어떤 intent task가 더 중요한가”를 해석 가능하게 알려주기 때문 (단순 인코딩에는 이런 해석가능성이 없음)
-> 이 설계가 나중에 4.5절의 personalized attention weight 분석(유저별 primary intent 해석)으로 이어짐 - ![[Figure 4.png|461]]
- Input feature sequence → intent encoder → 각 intent별 prediction → projection → attention으로 합쳐 최종 intent 임베딩 생성하는 전체 흐름
- ground-truth intent/item 레이블로 전체를 지도학습 → attention이 각 intent head의 상대적 중요도를 학습하게 되는 구조임을 보여줌
Next-item Prediction과 Hierarchical MTL
- Intent-aware feature sequence 를 다시 FC+정규화 후 별도의 Transformer item encoder에 태워 item prediction 산출
- intent encoder와 item encoder를 공유하지 않고 분리한 것이 실험적으로 더 좋았다고 명시 (3.4절)
-> 이 부분이 hierarchy의 핵심: intent 예측(저수준 task)이 끝난 결과가 feature로 item 예측(고수준 task)에 입력되고, 그 반대는 아님 - ![[Figure 5.png|393]]
- Intent-aware feature sequence를 입력받아 item encoder와 FC layer를 거쳐 next-item prediction probability vector를 생성하는 과정
- intent 임베딩이 input feature에 concat되어 들어간다는 것을 명시적으로 도식화 → item 예측이 intent 예측에 “의존”하지만 , 라는 다른 입력도 함께 있어 intent 오예측에 완전히 종속되지는 않음을 보여주는 설계
- intent encoder와 item encoder를 공유하지 않고 분리한 것이 실험적으로 더 좋았다고 명시 (3.4절)
- Loss:
- 은 duration-weighted cross-entropy (interaction 지속시간이 길수록 business value가 높다고 보고 가중치 부여)
- 는 intent 예측 비중을 조절하는 하이퍼파라미터 (크게 하면 intent 예측에 더 집중, 작게 하면 item 예측에 더 집중) → 이 trade-off는 5절에서 다시 언급됨
Experiments
- 데이터: Netflix proprietary user engagement sequence (최근 n개 interaction), train/val/test로 랜덤 샘플링
- Baseline: LSTM/GRU/Transformer(+intent head 추가), SASRec, BERT4Rec(intent 예측 불가, N/A), TransAct(Pinterest, SOTA intent 예측 모델), IntentRec-V0(short-term/intent 없는 production 모델)
- 메트릭은 proprietary 특성상 TransAct 대비 상대적 % 개선으로만 공개 (MRR/Recall/NDCG/AUC 등을 뭉뚱그린 “accuracy”)
![[Table 1.png|600]]
- 전체 baseline과 IntentRec의 item-ID 및 4개 intent task에 대한 TransAct 대비 상대 개선율
- IntentRec이 전 항목에서 1위: item-ID +7.4%(통계적 유의, p<0.01), action type +3.31%, genre +2.78%, movie/show +0.41%, time-since-release +0.84%
-> intent 예측 개선폭이 item 예측 개선폭보다 작은 이유는, hierarchical 학습이 “next-item 예측 최적화”를 우선시하도록 설계되어 있어 intent predictor가 item 예측에 유리한 방향으로 fine-tune되기 때문 (논문이 명시적으로 밝힌 trade-off, 로 조절 가능)
![[Table 2.png|600]]
(ablation: 아키텍처 변형)
- V0(item만) → V1(단순 MTL, intent head 추가) → V2(hierarchical, intent/item encoder 분리) → V3(short-term feature 추가, 1주/1개월 윈도우)
- V1은 item-ID 개선이 거의 없음(+0.00% 기준점) → “intent 예측 head를 추가하는 것만으로는 소용없다”는 핵심 motivation을 실험적으로 입증
- V2에서 item-ID +4.53%로 급등 → hierarchical 구조(별도 encoder + intent→item 직접 연결)가 핵심 기여임을 보여줌
- V3(short-term 추가)에서 item-ID +8.56%(1개월) / +8.28%(1주)까지 추가 상승 → 단기 관심 모델링이 확실한 추가 이득을 줌. 성능은 1개월이 근소 우위지만 비즈니스 정책/일관성 때문에 1주 윈도우를 최종 채택 (정확도만으로 설계를 정하지 않는 실무적 선택)
![[Table 3.png|600]]
(ablation: 어떤 intent head가 중요한가)
- V0 대비, intent head를 하나씩만 추가했을 때의 item-ID 개선: ActionType +7.73% > Time-since-release +7.18% > Genre +6.50% ≈ Movie/Show +6.52%
-> Action Type(continue watching/discover 등 11개 레이블)이 가장 중요한 이유는, 이것이 “business-aware heuristic으로 분류된, 유저 의도의 가장 직접적인 번역”이기 때문이라고 저자들은 해석 - 4개를 모두 합친 V3-all이 +8.35%로 최고 성능 → 개별 head들이 상호보완적으로 기여함을 시사
Qualitative Analysis
- Intent 임베딩 에 K-means++(K=10) 클러스터링 적용 후 T-SNE 시각화
- ![[Figure 6.png|494]]
- 유저 intent 임베딩의 10개 클러스터를 T-SNE로 시각화한 결과
- “discover 선호 vs continue-watching 선호” 그룹, “애니메이션/키즈 선호” 그룹, “rewatcher” 그룹 등이 뚜렷이 분리됨 → intent 임베딩이 실제로 해석 가능하고 유의미한 유저 세그먼트를 포착한다는 정성적 근거
- ![[Figure 6.png|494]]
- Attention weight 기반 유저별 “주요 의도” 해석
- ![[Figure 7.png|474]]
- 두 유저 프로필의 intent head별 attention weight 비교 (순서: action type, genre, movie/show, time-since-release)
- 유저A는 genre 가중치(0.52)가 가장 높고 실제로 판타지 장르(해리포터, 틴울프)만 시청 → IntentRec이 판타지 장르 추천을 제공. 유저B는 time-since-release 가중치(0.32)가 가장 높고 실제로 구작 위주 시청 → attention weight가 유저의 실제 선호 패턴과 정합적으로 대응됨을 보여주는 사례
- 이 weight는 실시간으로 업데이트 가능(inference-only)하며 전체 모델 재학습은 주기적으로(예: 주 단위)만 수행 → 실무 서빙 관점에서 explainability와 real-time personalization을 동시에 노리는 설계
- ![[Figure 7.png|474]]
Discussion
- 다른 도메인(E-commerce 등)으로 일반화 가능하다고 주장하나, 데이터 프라이버시 문제로 실제로는 Netflix 단일 도메인에서만 검증함
- Intent 예측과 item 예측이 서로 모순되는 경우(예: intent는 “영화” 지만 예측된 next item은 TV쇼)에 대해, 실제로는 대부분 정합적이며 불일치하더라도 유저의 선호가 세션 중 급변할 수 있어 “타당할 수 있다”고 설명 → 엄밀한 정량적 검증이라기보다는 정성적 해명에 가까움
- 다운스트림 활용: UI 넛지(유저를 특정 의도로 유도/전환), 분석, 다른 ML 모델의 입력 신호로 활용 가능