Deep Neural Networks for YouTube Recommendations - 세미나 자료
저자: Paul Covington, Jay K. Adams, Emre Sargin
발행년도: 2016년
인용수: 3767회
논문 링크: https://www.semanticscholar.org/paper/5e383584ccbc8b920eaf3cfce3869da646ff5550
Deep Neural Networks for YouTube Recommendations (2016)
저자: Paul Covington, Jay K. Adams, Emre Sargin (Google)
발표: RecSys 2016
인용수: 3,767+ (추천 시스템 분야 최다 인용 산업 논문 중 하나)
Problem & Motivation
YouTube 추천이 직면한 3대 난제
YouTube의 추천 시스템은 학계 벤치마크에서 다루는 추천 문제와는 본질적으로 다른 산업 규모의 도전 과제를 안고 있었다. 저자들은 이를 세 가지 축으로 정리했다.
- Scale (규모): 수십억 명의 사용자와 수십억 개의 비디오 코퍼스를 대상으로 했기에, 기존 학계의 작은 데이터셋에서 잘 작동하던 알고리즘들이 그대로 적용되지 않았다. 분산 학습과 효율적인 serving 인프라가 모델 설계와 분리될 수 없는 제약이 되었다.
- Freshness (신선도): YouTube에는 매초 수 시간 분량의 새 비디오가 업로드되었다. 추천 시스템은 갓 업로드된 콘텐츠와 사용자의 가장 최근 행동을 모두 빠르게 반영해야 했다. 이는 정적인 collaborative filtering 모델이 본질적으로 풀기 어려운 문제였다.
- Noise (노이즈): 사용자의 만족도(satisfaction)를 직접 관측할 수 없었기에 모델은 implicit feedback(시청 행동)에 의존해야 했다. Implicit signal은 sparse하고 noisy하며, 외부 요인(자동재생, 썸네일 클릭 유도 등)의 영향을 크게 받았다.
기존 Matrix Factorization 기반 CF의 한계
YouTube 이전의 추천 시스템은 대부분 Matrix Factorization (MF) 기반의 collaborative filtering이 주류였으나 다음과 같은 한계를 지녔다.
- Cold-start 취약성: 새 사용자나 새 비디오에 대한 latent factor가 학습되지 않아 추천 품질이 급격히 떨어졌다.
- 비선형 feature interaction 표현 부족: MF는 본질적으로 user vector와 item vector의 선형 내적으로 표현되어, 복잡한 사용자 취향-콘텐츠 상호작용을 잡아내기 어려웠다.
- Heterogeneous signal 통합 어려움: 시청 이력, 검색어, 인구통계, 디바이스, 지역 등 이질적인 신호를 한 모델에 자연스럽게 결합하기 위한 일반적 프레임워크가 부재했다.
핵심 아이디어 한 줄 요약
Candidate Generation + Ranking의 2-stage Deep Neural Network 아키텍처로 billion-scale 추천 문제를 end-to-end deep learning 프레임으로 재정의했다.
이 논문은 단일 알고리즘 혁신이라기보다 "Production 환경에서 deep learning을 어떻게 추천 시스템에 녹여낼 것인가"에 대한 실무적 청사진을 제시했다는 점에서 가치가 있었다.
Background & System Overview
추천 시스템의 일반적 구조: 2-stage 패러다임
저자들은 수백만 개의 비디오 중에서 단일 모델로 최적의 추천을 만드는 것이 계산적으로 불가능함을 명확히 했다. 이를 해결하기 위해 다음과 같은 funnel 구조를 도입했다.
[Video Corpus: Millions]
↓
Candidate Generation ← user history, context
↓
[Hundreds of Candidates]
↓
Ranking ← rich features per (user, video)
↓
[Dozens to Show]- Candidate Generation: 수백만 개의 비디오 중 수백 개의 후보를 빠르게 검색 (high recall, low precision).
- Ranking: 후보들에 대해 풍부한 feature와 깊은 모델로 정밀하게 점수화 (high precision).
YouTube 환경 특성
- Implicit feedback 중심: 명시적 "좋아요/별점"보다 시청 시간(watch time) 자체가 가장 신뢰할 만한 신호로 간주되었다.
- Long-tail 분포: 소수의 viral 비디오와 거대한 long-tail이 공존하며, 모델은 long-tail까지 합리적으로 다루어야 했다.
- 동적 생애주기: 사용자의 관심사도 시간에 따라 변화하며, 비디오 자체의 인기도 게시 후 시간에 따라 급변했다.
Funnel 구조 설계 의도
Funnel 구조는 단순히 두 단계로 나누는 것이 아니라, 각 단계의 latency-accuracy trade-off를 명시적으로 분리하는 의미가 있었다.
- Candidate Generation은 수백만 → 수백 단위로 압축하므로 모델 자체는 단순해도 되지만 serving 효율이 결정적이었다.
- Ranking은 후보 수가 적으므로 수백 개의 풍부한 feature를 사용하는 깊은 모델을 적용해도 latency 예산 내에서 처리 가능했다.
평가 지표의 분리
저자들은 모델 평가를 두 축으로 분리해 운영했다.
| 평가 종류 | 사용 지표 | 목적 |
|---|---|---|
| Offline | Precision, Recall, Ranking loss | 모델 후보군 빠른 비교 |
| Online (A/B) | Watch time per impression | 최종 의사결정 |
특히 offline 지표가 좋아도 online A/B에서 항상 좋다는 보장은 없었다고 명시했으며, 최종 의사결정은 항상 live A/B test에 의존했다.
Candidate Generation Model
Extreme Multiclass Classification으로의 재정의
저자들이 가장 통찰력 있게 제시한 부분은 추천 문제를 분류 문제로 재정의한 점이었다. 시각 $t$에서 사용자 $U$, 컨텍스트 $C$가 주어졌을 때 코퍼스 $V$에서 특정 비디오 $w_t$를 시청할 확률을 다음과 같이 모델링했다.
P(w_t = i | U, C) = exp(v_i · u) / Σ_{j ∈ V} exp(v_j · u)- $u \in \mathbb{R}^N$: user-context embedding (네트워크 마지막 hidden layer 출력)
- $v_i \in \mathbb{R}^N$: 비디오 $i$의 embedding
수백만 클래스(=비디오)에 대한 softmax이므로 extreme multiclass classification 문제로 정의되었다. 분류 문제로 풀면 negative sampling, embedding 학습, end-to-end 그래디언트 학습 등 deep learning의 모든 도구를 그대로 활용 가능하다는 큰 이점이 있었다.
User Embedding 생성: Average Pooling의 의미
User embedding은 다음의 가변 길이 신호들을 고정 길이 dense vector로 변환했다.
- 시청 이력 (watched video IDs): 각 비디오 ID를 dense embedding으로 변환 후 평균 풀링.
- 검색 토큰 (search query tokens): unigram/bigram을 embedding으로 변환 후 평균 풀링.
평균 풀링을 선택한 이유는 단순하면서도 다음 효과가 있었기 때문이었다.
- 가변 길이 → 고정 길이 변환을 자연스럽게 처리
- 순서 정보를 일부 잃는 대신 계산 효율과 일반화 성능 확보
- Position 의존성을 제거해 사용자의 평균적 취향을 안정적으로 표현
Heterogeneous Feature 통합
평균 풀링된 embedding 외에도 다양한 컨텍스트 feature가 concatenation되어 입력에 결합되었다.
- Demographic: 성별, 나이대 등
- Geographic: 지역 embedding
- Device: 모바일/데스크톱 등 디바이스 종류
- "Example Age" feature: 가장 핵심적이고 독창적인 trick
"Example Age" Feature의 역할
학습 데이터는 과거 일정 기간 동안의 시청 로그였기에, 모델이 그대로 학습되면 "평균적인 인기 콘텐츠"에 편향되어 신선한 콘텐츠를 추천하지 않는 문제가 있었다. 이를 해결하기 위해 저자들은 example age = (학습 시점 $t_{max}$ - 학습 샘플 시각 $t$)라는 feature를 명시적으로 입력에 포함시켰다.
- 학습 시: 각 샘플의 실제 age를 입력
- Serving 시: age를 0(또는 약간의 음수)으로 설정 → "지금 막 일어난 시청"으로 모델에 신호
이렇게 하면 모델이 시간 의존적 인기도 패턴(시간에 따른 인기 변화)을 학습하면서도, serving 시 freshness를 자연스럽게 반영할 수 있었다. Figure 4에서 example age feature가 있는 모델이 baseline과 empirical distribution에 훨씬 가깝게 학습되는 모습이 시각적으로 입증되었다.
Negative Sampling + Importance Weighting
수백만 클래스에 대한 full softmax는 학습이 사실상 불가능했기에 두 가지 트릭을 결합했다.
- Negative Sampling: 각 positive 예제마다 수천 개의 negative class만 샘플링.
- Importance Weighting: 샘플링 분포의 편향을 보정하여 unbiased gradient 추정.
저자들은 이 방식이 hierarchical softmax보다 실험적으로 더 좋은 성능을 보였다고 보고했다.
Serving: Approximate Nearest Neighbor
학습이 완료되면 user embedding $u$는 마지막 hidden layer로부터, video embedding $v_i$는 softmax 가중치로부터 얻을 수 있었다. Serving 단계에서는 다음과 같이 동작했다.
1. 사용자 요청 → user embedding u 계산 (forward pass)
2. u와 모든 video embedding v_i의 dot product top-N
→ 단, full scan은 불가능 → ANN(Approximate Nearest Neighbor) 사용이 구조 덕분에 학습은 분류 문제로, serving은 nearest neighbor 검색 문제로 분리되어 latency 예산 내에서 처리할 수 있었다. 이는 후일 Two-Tower 모델 구조의 원형이 되었다.
Ranking Model
Candidate Generation과 다른 목적함수가 필요한 이유
Candidate Generation이 "코퍼스에서 후보를 잘 끌어오는" 문제였다면, Ranking은 "이미 후보가 정해진 상태에서 무엇을 먼저 보여줄지"를 정밀하게 결정하는 문제였다. 따라서 다음과 같은 차이가 있었다.
- Candidate Generation에서는 user-video general 관련도만 잡아내면 충분했다.
- Ranking에서는 impression source, 사용자가 비디오를 본 횟수, 마지막 시청으로부터의 경과 시간 등 미세한 user-video interaction을 모두 활용해야 했다.
Feature Engineering의 핵심
Deep learning 시대에도 저자들은 feature engineering이 여전히 결정적임을 강조했다.
Categorical Feature Embedding:
- 고차원 ID들을 dense embedding으로 변환
- 같은 ID space는 embedding을 공유 (예: impression video ID와 watched video ID는 동일 embedding 공유 → 학습 효율↑)
- Out-of-vocabulary는 zero embedding으로 처리
Continuous Feature Normalization:
- 누적 분포 함수(CDF)를 사용해 [0, 1] 균등 분포로 정규화
- 이는 신경망이 더 빠르고 안정적으로 수렴하게 만들었다.
Power Transform:
- 정규화된 feature $x$에 대해 $x$, $x^2$, $\sqrt{x}$를 모두 입력으로 추가
- 신경망이 비선형 변환을 직접 학습하는 부담을 줄이고, subnetwork가 sublinear/superlinear 함수를 자유롭게 표현하도록 도왔다.
User-Video Interaction Feature
저자들은 다음과 같은 세밀한 interaction feature가 큰 효과를 보였다고 보고했다.
- Time since last watch: 사용자가 같은 채널의 비디오를 마지막으로 본 후 경과 시간 → "지금 막 본 채널"의 다음 비디오를 잘 추천하게 만드는 데 결정적
- Number of previous impressions: 같은 비디오가 추천되었지만 사용자가 클릭하지 않은 횟수 → 반복 노출에 따른 churn 방지
이러한 feature는 추천 결과의 다양성과 신선도에 직접 기여했다.
Weighted Logistic Regression with Watch Time
추천 시스템에서 흔히 쓰이던 CTR 최적화는 클릭베이트에 취약한 문제가 있었다. 저자들은 대신 expected watch time을 직접 최적화하는 방법을 제안했다.
학습 단계
- Positive 예제(클릭됨)에 시청 시간 $T_i$를 가중치로 부여
- Negative 예제(클릭 안 함)는 unit weight로 학습
- Loss: weighted cross-entropy (logistic regression)
Serving 단계
표준 logistic regression의 학습된 odds는 다음과 같이 표현되었다.
odds = P / (1 - P)
= Σ T_i / (N - k)
≈ E[T] · (N / (N - k))
≈ E[T] (k가 N에 비해 매우 작을 때)- $N$: 전체 impression 수
- $k$: positive(클릭) impression 수
- $T_i$: 클릭된 impression의 시청 시간
즉 학습된 odds가 expected watch time의 좋은 추정치가 되었다. Serving 시에는 sigmoid 대신 $e^{wx+b}$를 그대로 score로 사용해서 직접 expected watch time으로 ranking할 수 있었다.
Hidden Layer Depth/Width의 영향
저자들은 ReLU + Tower 구조 (각 층의 width가 점점 줄어드는 구조)를 사용했으며, 층을 깊게 쌓을수록 weighted loss가 단조 감소함을 ablation을 통해 보였다. 다만 추가 효과는 4층을 넘으면 점차 줄어들었다.
Experiments & Results
실험 셋업
- Offline 평가: held-out된 시청 데이터를 사용하여 weighted loss 등으로 모델 후보 비교
- Online 평가: 최종 의사결정은 live A/B test에서 watch time per impression의 변화로 판단
Candidate Generation: Example Age의 효과
Figure 4는 example age feature의 효과를 시각적으로 명료하게 보여주었다.
- Baseline (age feature 없음): 시간에 따른 인기 변화를 평탄하게 평균화 → empirical distribution과 큰 괴리
- With example age: 학습된 likelihood가 empirical distribution과 거의 일치 → freshness bias 해소
이는 단 하나의 feature 추가가 추천 품질을 본질적으로 바꿀 수 있다는 사례로 자주 인용된다.
Ranking: Feature Category별 기여도
저자들은 Ranking 모델에 사용된 feature를 다음과 같이 카테고리화하여 ablation을 수행했다.
- Impression video ID: 후보 비디오 자체 정보
- Watched video IDs: 사용자 시청 이력
- Language features: 사용자 언어와 비디오 언어
- Time-based features: time since last watch, previous impressions 등
가장 큰 기여는 사용자-비디오 간 historical interaction features(특히 시간 기반)에서 나왔다고 보고되었다.
Network Depth Ablation (Table 1)
저자들은 hidden layer를 0층(linear)부터 4층까지 늘려가며 weighted, per-user loss를 측정했다.
| Depth | Configuration | Weighted Loss 감소 |
|---|---|---|
| 0 layer | 입력 → softmax | baseline |
| 1 layer | 256 ReLU | 큰 폭 감소 |
| 2 layers | 512 → 256 | 추가 감소 |
| 3 layers | 1024 → 512 → 256 | 추가 감소 |
| 4 layers | 2048 → 1024 → 512 → 256 | 최저 loss |
깊이가 깊어질수록 단조 감소했으나 한계 효용은 체감했다.
Feature Transform Ablation
Continuous feature에 power transform($x^2, \sqrt{x}$)을 추가했을 때 weighted loss가 추가 감소함을 보여, 간단한 비선형 변환을 명시적으로 입력하는 것이 깊은 모델에서도 효과적임을 확인했다.
Critical Analysis
한계점
- 모듈성 부재: 단일 거대 신경망으로 모든 컨텍스트(홈 추천, 시청 후 추천, 검색 결과 등)를 동시에 처리하기 어려웠다. 각 surface별로 별도 모델을 운영할 수밖에 없었다.
- Exploration 메커니즘 부재: 본 논문은 순수 exploitation 모델이었다. bandit, RL 기반 exploration이 명시적으로 다뤄지지 않았으며, 이는 후속 연구(REINFORCE Recommender, 2019)에서 보완되었다.
- Position bias 명시적 처리 부재: 사용자가 상위 위치의 콘텐츠를 더 클릭/시청한다는 사실이 데이터에 강하게 녹아있으나, 본 논문에서는 정밀하게 분리되지 않았다. (이후 Google의 "Recommending What Video to Watch Next" 2019 논문에서 shallow tower로 분리하는 구조 등장)
재현 가능성
- 데이터 비공개: YouTube 시청 로그는 절대 공개될 수 없는 데이터였기에 학계의 직접 검증이 사실상 불가능했다.
- 인프라 의존성: example age trick, importance-weighted negative sampling 등의 효과는 YouTube 규모의 데이터/트래픽이 있어야 검증 가능했다.
- 하지만 영향력은 거대: 구체적 수치는 재현이 어려워도, 아키텍처 패턴(2-stage funnel, ID embedding pooling, watch time weighting)은 산업 전반에 표준으로 자리잡았다.
일반화 가능성
- E-commerce, news 등 다른 도메인에서도 watch time → dwell time, read time 등으로 자연스럽게 매핑되었다.
- 단, "한 번 본 콘텐츠는 다시 안 보는 도메인"(예: news)과 "반복 시청이 자연스러운 도메인"(예: 음악) 사이에는 추가적인 도메인 특화 설계가 필요했다.
의문점
- Position bias 처리 부재: 위에서 언급한 것처럼 학습 데이터의 강한 bias가 그대로 반영될 위험이 있었다.
- Multi-objective 미반영: 단일 watch time 지표 최적화는 engagement vs satisfaction, 단기 vs 장기 retention 같은 다목적 trade-off를 다루지 못했다.
- Filter bubble: Watch time 최적화가 사용자의 장기적 다양성/만족도를 해칠 수 있다는 점은 제기되지 않았다.
후속 연구 방향
본 논문은 이후 추천 시스템 연구의 출발점이 되었으며, 다음과 같은 방향으로 발전했다.
- Two-Tower 구조 (Sampling-Bias-Corrected Neural Modeling, 2019): user/item을 독립 tower로 학습 → 효율적 ANN serving
- Multi-task Learning: MMoE (Recommending What Video to Watch Next, 2019) → engagement와 satisfaction을 동시에 최적화
- Sequential Modeling: SASRec, BERT4Rec, Transformer4Rec → average pooling 대신 self-attention으로 시청 순서 정보 활용
- Off-policy Correction: REINFORCE Recommender (Top-K Off-Policy Correction, 2019) → 정책 변경에 따른 propensity 보정
- Causal/Bias Correction: position bias, exposure bias를 명시적으로 모델링하는 흐름
핵심 정리 & Takeaway
본 논문이 추천 시스템 연구에 남긴 유산
- 2-stage Funnel은 사실상 표준 아키텍처가 되었다: 이후 Pinterest, Alibaba, Meta 등 모든 주요 추천 시스템이 Candidate Generation + Ranking 구조를 채택했다. Latency 예산 내에서 정확도를 극대화하는 거의 유일한 현실적 해법이었기 때문이다.
- "무엇을 예측할 것인가"의 중요성: 모델 구조 자체보다 타겟의 정의(CTR vs watch time)가 추천 품질에 결정적임을 보였다. Implicit feedback에서는 신호의 의미를 정의하는 것이 모델링의 절반이었다.
- Feature Engineering의 영속성: Deep learning 시대에도 example age, time since last watch 같은 도메인 지식 기반 feature가 모델 깊이만큼이나 중요했다. 데이터가 많다고 feature engineering이 사라지는 것은 아니었다.
핵심 테이크어웨이 3줄
① 추천은 (extreme) classification 문제로 재정의 가능하다.
Softmax over millions of items + ANN serving은 강력한 일반 패러다임이다.② Watch time weighting으로 engagement를 직접 최적화한다.
CTR이라는 proxy 대신 사용자의 진짜 시간 투자를 학습 시그널로 삼는다.③ Production 추천 = 모델링 + Serving 인프라 + Feature Design의 합작품이다.
어느 하나만 잘해서는 billion-scale에서 살아남을 수 없으며, 세 축의 균형이 학술 모델을 산업 시스템으로 변환한다.
발표 시 강조 포인트
- 2-stage funnel 구조 그림 → 모든 후속 추천 시스템 논문의 출발점
- Example age trick → "단 하나의 feature가 모델 행동을 어떻게 바꾸는가"의 교과서 사례
- Weighted LR의 odds ≈ E[watch time] 유도 → 산업 ML에서 목적함수를 영리하게 설계하는 방법의 정수
- Feature engineering의 부활 → "Deep learning이 모든 feature를 자동 학습한다"는 환상에 대한 현실적 반론
'PaperReview' 카테고리의 다른 글
| Testing theory of mind in large language models and humans (0) | 2026.05.06 |
|---|---|
| Conceptual Framework for Integrating Generative AI into the Product Management Lifecycle (2) | 2026.05.06 |
| Segment Anything (0) | 2026.05.05 |
| The Assistant Axis: Situating and Stabilizing the Default Persona of Language Models (0) | 2026.02.13 |
| [XGBoost]XGBoost: A Scalable Tree Boosting System (0) | 2026.02.09 |