딥러닝 기반 추천 시스템은 현대 인터넷 서비스의 핵심 기술로 자리잡았습니다. 각 모델의 작동 원리와 실제 적용 사례를 구체적인 예제와 함께 살펴보겠습니다.
전통적인 Matrix Factorization(MF)은 사용자와 아이템을 저차원 벡터로 표현하고, 이들의 내적(inner product)으로 선호도를 예측합니다. 하지만 내적은 선형 연산이므로 복잡한 사용자-아이템 상호작용을 충분히 표현하지 못합니다.
NCF는 이 한계를 극복하기 위해 신경망을 도입했습니다. 사용자와 아이템 임베딩을 다층 퍼셉트론(MLP)에 입력하여 비선형 관계를 학습합니다.
시나리오: 넷플릭스와 같은 영화 스트리밍 서비스에서 사용자에게 영화를 추천합니다.
데이터 구조:
모델 구조:
임베딩 레이어: 사용자 ID와 영화 ID를 각각 64차원 벡터로 변환
결합 방식: 두 임베딩을 concatenate → [128차원 벡터]
MLP 레이어:
학습 과정:
긍정 샘플: (사용자 1, 영화 100) → 라벨 1 (시청함)
부정 샘플: (사용자 1, 영화 523) → 라벨 0 (시청 안 함)
손실 함수: Binary Cross-Entropy
실제 적용:
장점: 복잡한 패턴 학습 (예: "마블 영화를 좋아하지만 액션 장르는 싫어하는" 사용자)
단점: Cold start 문제 (새 사용자/새 영화에 대한 임베딩 없음)
DLRM은 Meta(Facebook)에서 개발한 모델로, 대규모 추천 시스템에서 다양한 피처 타입을 효율적으로 처리하도록 설계되었습니다. 범주형 피처(카테고리, ID)와 연속형 피처(나이, 가격)를 동시에 다룹니다.
시나리오: 페이스북 피드에서 사용자가 광고를 클릭할 확률을 예측합니다.
입력 피처:
범주형 피처:
연속형 피처:
모델 구조:
범주형 피처 처리:
연속형 피처 처리:
Feature Interaction:
최종 MLP:
실제 예시:
입력:
- 사용자: ID=123456789 (게임 앱을 자주 사용하는 25세 남성)
- 광고: 모바일 게임 광고 (광고주 ID=7890, 카테고리=게임)
- 기기: iPhone 14 Pro
- 시간: 금요일 저녁 8시
- 연속형: 나이=25, 시간=20, 과거CTR=0.05
처리 과정:
1. 사용자 ID → [0.5, -0.2, ..., 0.8] (128차원)
2. 광고주 ID → [0.3, 0.6, ..., -0.1] (64차원)
3. [나이, 시간, 과거CTR, 예산] → MLP → [0.1, 0.4, ..., 0.7] (128차원)
4. 사용자·광고주 = 0.82 (높은 친화도)
5. 사용자·시간 = 0.65 (적절한 타이밍)
6. 최종 예측: 클릭 확률 = 0.12 (12%)
성능 최적화:
실제 결과: Meta는 DLRM으로 기존 모델 대비 CTR 예측 정확도 3-5% 향상, 추론 속도 2배 개선을 달성했습니다.
사용자의 행동은 시간에 따라 변화합니다. 시퀀스 모델은 과거 행동의 순서를 학습하여 다음 행동을 예측합니다.
시나리오: 쿠팡에서 사용자의 최근 구매/클릭 이력을 바탕으로 다음 구매 아이템을 추천합니다.
사용자 행동 시퀀스:
사용자 A의 최근 30일 행동:
[노트북 가방] → [무선 마우스] → [USB 허브] → [모니터 암] → [키보드] → [?]
BERT4Rec 작동 방식:
원본: [가방, 마우스, 허브, 암, 키보드]
마스킹: [가방, [MASK], 허브, [MASK], 키보드]
Transformer 인코더:
마스크 예측:
추천 생성:
실제 적용 사례:
사용자 B의 시퀀스:
1월: [운동화]
2월: [운동복]
3월: [요가 매트]
3월: [헬스 보충제]
4월: [?]
모델의 학습 내용:
추천 결과:
1. 덤벨 세트 (0.35) - 홈트레이닝 용품
2. 프로틴 쉐이커 (0.28) - 보충제와 연관
3. 운동 장갑 (0.22) - 웨이트 트레이닝 용품
장점:
단점:
추천 시스템의 데이터는 본질적으로 그래프 구조입니다. 사용자와 아이템, 사용자와 사용자, 아이템과 아이템이 모두 연결되어 있습니다. GNN은 이 그래프 구조를 직접 학습합니다.
시나리오: 스포티파이에서 사용자의 청취 이력과 소셜 관계를 바탕으로 음악을 추천합니다.
그래프 구조:
사용자 노드: U1, U2, U3, ...
음악 노드: S1, S2, S3, ... (Song)
엣지: 사용자가 노래를 들었으면 연결
U1 --- S1 (Shape of You)
| |
| U2
| |
S2 --- S3 (Blinding Lights)
실제 데이터 예시:
사용자 1 (팝 음악 애호가):
사용자 2 (사용자 1의 친구):
LightGCN 작동 방식:
초기화:
그래프 합성곱 (Layer 1):
다층 전파 (Layer 2, 3):
최종 임베딩:
추천 생성:
구체적인 추천 과정:
U1이 들은 노래: S1, S2, S3
U2가 들은 노래: S1, S4, S5
U3가 들은 노래: S2, S4, S6
그래프 전파 후:
- U1의 임베딩에는 S1, S2, S3의 정보가 직접 반영
- 1-hop 전파: S1을 통해 U2의 정보도 간접 반영
- 2-hop 전파: U2를 통해 S4, S5의 정보도 약하게 반영
최종 추천 점수:
S4 (Dynamite): 0.85 (U2와의 유사성)
S6 (다른 장르): 0.45 (U3과의 약한 연결)
S7 (신곡): 0.12 (연결 없음)
추천: S4 (Dynamite by BTS)
실제 효과:
PinSage (Pinterest의 GNN):
Pinterest는 그래프 합성곱으로 핀(이미지) 추천:
사용자가 "북유럽 인테리어" 핀 저장
→ 비슷한 핀을 저장한 다른 사용자 탐색
→ 그들이 저장한 "미니멀 가구" 핀 발견
→ "미니멀 가구" 추천
단일 접근법의 한계를 극복하기 위해 여러 모델과 데이터 소스를 결합합니다.
시나리오: Google Play 스토어에서 사용자에게 앱을 추천하고 설치를 유도합니다.
모델 구조:
Wide 부분 (선형 모델):
Deep 부분 (심층 신경망):
실제 예시:
사용자 프로필:
Wide 부분 처리:
교차 특성 1: [소셜 앱 3개 이상] × [20대] = 1 (활성화)
교차 특성 2: [사진 검색] × [크리에이터 도구 미설치] = 1
교차 특성 3: [한국] × [K-pop 관련 앱] = 1
Wide 출력: 0.6 (사진 편집 앱 추천 경향)
Deep 부분 처리:
사용자 임베딩: [소셜, 엔터, 사진] 차원에서 높은 값
앱 후보 임베딩:
- SNOW (사진 편집): [사진, 소셜, 뷰티] 높음
- Lightroom: [사진, 전문가] 높음
- Canva: [사진, 디자인, 크리에이터] 높음
유사도 계산:
사용자 · SNOW = 0.82
사용자 · Lightroom = 0.65
사용자 · Canva = 0.78
Deep 출력: 0.7 (SNOW 선호)
최종 결합:
최종 점수 = Wide(0.6) + Deep(0.7) = 1.3
→ SNOW 앱 추천 (사진 편집 + 소셜 기능)
설명:
- Wide: "사진 검색 후 크리에이터 도구 필요" 패턴 포착
- Deep: "소셜 앱 선호 사용자는 SNOW 좋아함" 일반화
시나리오: 11번가에서 사용자가 장바구니에 담은 상품을 구매할 확률 예측
입력 피처:
FM 부분 (Factorization Machine):
2차 교차 특성 학습:
- 나이 × 가격: 중년층은 고가 제품 구매 확률 높음
- 가격 × 카테고리: 이어폰 가격대 적절성
- 카테고리 × 시간: 월급일 후 전자제품 구매 증가
FM 출력: 0.55
DNN 부분:
모든 피처를 임베딩 후 MLP:
- 사용자 행동 패턴 학습 (과거 전자제품 구매 이력)
- 제품 인기도와 리뷰 점수 반영
- 계절성 고려 (연말 선물 시즌)
DNN 출력: 0.62
최종 예측:
구매 확률 = sigmoid(FM + DNN) = sigmoid(1.17) = 0.76 (76%)
→ 할인 쿠폰 푸시 알림 발송
"장바구니의 에어팟 프로, 지금 구매하면 10% 할인!"
실제 비즈니스 효과:
NCF: 사용자-아이템 상호작용 데이터가 풍부하고, 복잡한 선호 패턴이 예상될 때
DLRM: 대규모 시스템, 다양한 피처 타입, 실시간 추론이 필요할 때
시퀀스 모델: 사용자 행동의 시간적 맥락이 중요할 때 (세션 기반, 장바구니)
GNN: 소셜 관계나 아이템 간 연결이 중요할 때 (소셜 네트워크, 지식 그래프)
하이브리드: Cold start 문제가 심각하거나, 여러 데이터 소스를 활용해야 할 때
현대 추천 시스템은 이러한 모델들을 조합하여 2단계 파이프라인(Retrieval → Ranking)으로 구성하며, A/B 테스트를 통해 지속적으로 최적화합니다.