- Paper: https://dl.acm.org/doi/pdf/10.1145/2959100.2959190 (2016)
- (2025.12.12 기준) 4850 인용
요약
- 추천시스템에서 가장 유명한 Two-tower model의 기초가 되는 논문 + 실제 서비스 기반
- 유튜브가 딥러닝을 사용해 추천 시스템 성능을 어떻게 향상시켰는지 설명하는 논문
- Two-stage 구조 딥러닝 모델로 작동함.
- Candidate Generation Model
- 수백만 개의 비디오 → 수백 개 후보로 압축
- 사용자와 비디오를 임베딩해 확률 기반으로 추천
- Ranking Model
- Candidate 결과를 더욱 세밀하게 점수화
- CTR이 아닌 예상 시청 시간을 최종 목표로 사용
- clickbait 방지위해 실제 체류시간 중심으로 추천
- Candidate Generation Model
1. Introduction
- 유튜브 추천은 다음 3가지 관점의 주요 해결 과제가 존재함.
- Scale
- 기존 대부분의 추천 알고리즘은 소규모 데이터에 적합함.
- 유튜브의 방대한 사용자 기반과 콘텐츠 집합을 처리하기 위해서는 고도화된 분산 학습 알고리즘과 효율적인 시스템이 필수적.
- Freshness
- 유튜브는 초당 수많은 동영상들이 업로드 되는 동적 시스템.
- 사용자의 최근 행동과 새로 업로드된 콘텐츠에 대해 즉각적으로 대응해야 함
- 기존 인기 영상과 신규 콘텐츠 간의 균형 중요
- Noise
- 사용자의 과거 행동에 대해 관측 불가능한 다양한 외부 요인으로 예측이 어려움.
- 사용자 만족도에 대한 정확한 기준값을 알지 못하기 때문에 잡음이 섞인 암묵적 피드백 신호를 모델링함.
- 콘텐츠와 관련된 메타데이터 또한 명확히 정의된 온톨로지 없이 구조화되지 않은 상태
- 모델 학습 시 이러한 Noise로부터 Robust하도록 구성해야 함
- Scale
- matrix factorization 방법에 대해서는 방대한 연구가 존재하나 추천 시스템에 딥 뉴럴 네트워크를 활용한 연구는 상대적으로 적음.
- 목차
- 2장. 시스템 개요
- 3장. candidate generation model 설명
- 4장. ranking model 설명
- 5장. 결론 및 시사점
2. System overview

- 크게 candidate generation model과 ranking model 2단계로 구성되어 있음.
- candidate generation model
- 목표: 방대한 동영상 코퍼스에서 사용자와 관련성이 높은 소수 동영상(수백 개)을 검색하는 것
- 입력: 사용자의 유튜브 활동 기록(시청 기록 등)의 이벤트를 입력으로 받음.
- 특징
- collaborative filtering을 통해 어느정도 개인화가 적용된 상태에서 사용자의 영상 시청 ID, 검색어 토큰, 인구 통계학 정보 등을 이용해 사용자 간 유사도를 계산함.
- precision 값이 높게 나오도록 모델 학습
- ranking model
- 목표: 목록에 제시할 “best” 추천을 위해 후보 동영상들 간의 상대적인 중요도를 미세하게 구별하는 것
- 기능: 영상과 사용자 간 점수를 할당하고 순위를 부여하여 가장 높은 점수를 받은 동영상들이 순위에 따라 정렬되어 사용자에게 최종적으로 제시됨.
- 특징
- recall 값이 높게 나오도록 모델 학습
3. Candidate generation
- 수백만 개 이상의 유튜브 영상 중 사용자와 관련있는 영상만 필터링해주는 과정
3.1 Recommendation as Classification
- 추천 문제를 multiclass classification 문제로 간주함.
- User(U)와 context(C)를 기반으로 전체 영상 코퍼스 V에 포함된 수백만 개의 비디오 i 중 특정 시점 t에 사용자가 시청할 영상 wi = i를 정확하게 분류하는 문제로 정의됨.
- u: U와 C에 대한 고차원 embedding
- v: 후보군 영상에 대한 embedding
- embedding? 개별 영상 ID나 사용자 ID 같은 sparse한 개체를 RN 공간의 밀집 벡터로 매핑하는 것

- 목표: 딥 뉴럴 네트워크가 사용자 시청 기록와 context을 기반으로 embedding u를 학습하여 softmax classifier로 영상을 구별할 수 있게 만드는 것
- 유튜브는 명시적 피드백(좋아요, 싫어요 등)이 있지만 모델 훈련에는 암시적 피드백인 시청 기록을 사용함.
- 사용자가 영상 시청을 완료하는 것을 positive example로 간주
- 명시적 피드백이 sparse하기 때문에 이를 보완하여 더 일반화된 추천 가능하도록
- 수백만 개의 클래스(영상)을 가진 모델을 효율적으로 훈련시키기 위해 candidate sampling 기술 사용
- background distribution에서 negative class만 샘플링하고 true label과 샘플링된 negative class 간의 cross-entropy loss를 최소화하는 방식으로 모델 학습
- 효과: 기존 softmax 방식보다 100배 이상 빠른 속도 향상
- 모델 서빙 과정에서 가장 가능성 높은 N개 클래스(영상)을 계산해야 하는데 수십 밀리초라는 서빙 지연 시간 내에 수백만 개의 항목에 점수를 맥기 위해서는 class 수에 대해 sublinear적인 근사 점수 체계가 필요함.
- hashing과 최근접 이웃 탐색 문제로 축소
3.2 Model Architecture

- continuous bag of words(CBOW) 언어 모델에 영감 받아 설계됨.
- 모델 학습을 위해 우선 각 영상을 고정된 vocabulary로 이루어진 고차원 임베딩으로 나타냄.
- 구조는 먼저 여러 특징들을 연결하는 방식으로 시작하여 그 뒤에 ReLU 계층이 이어지는 형태
- Tower 패턴: 2048 ReLU → 1024 ReLU → 512 ReLU → 256 ReLU
- 사용자의 시청 기록이나 검색 기록처럼 길이가 가변적인 희소한 ID 시퀀스는 고정 크기의 밀집 입력으로 변환되어야 함.
- 각 ID는 임베딩(밀집 벡터)로 매핑되며 임베딩 벡터들을 단순히 평균내어 사용함.
3.3 Heterogeneous Signals
- 딥 뉴럴 네트워크를 matrix factorization의 일반화로 사용하는 가장 큰 장점은 임의의 연속형 및 범주형 변수를 모델에 쉽게 추가할 수 있다는 것.
- 검색 기록의 경우 unigram과 bigram으로 토큰화하여 임베딩
- 인구통계학정보는 신규 사용자에게 합리적인 추천을 제공하기 위한 중요한 feature이며 지역, 기기, 성별, 로그인 상태, 연령 등이 임베딩되어 들어감.
- Example Age Feature
- 유튜브 사용자는 최신 영상을 선호하는 경향이 있어 최신성을 고려하는 것이 중요함.
- 문제점: ML은 과거 데이터로 미래를 예측하기 때문에 과거 아이템에 편향된 결과 제공
- 해결: 영상이 만들어진 시점인 age를 변수로 추가
3.4 Label and Context Selection
- 대부분 추천시스템은 surrogate problem이 존재함.
- 모델 성능 평가를 위해 A/B testing이 필요하지만 매번 실제 유저들의 선택으로 성능을 평가하는 데에는 한계가 있으므로 Hit Rate, NDCG와 같은 offline metric을 이용함.
더보기
(참고) surrogate problem 이란?
- 추천시스템은 원래 사용자가 정말 좋아할 콘텐츠를 정확하게 추천하는 것을 목표로 하나 이를 직접 최적화할 수 없는 경우가 대부분임.
- 대신 측정 가능한 다른 목표(대리 목표, surrogate objective)를 최적화함.
- 예를 들어 실제로 최적화해야 하는 진짜 목적을 다음과 같다고 하면
- 사용자가 해당 콘텐츠를 즐겼는지
- 만족했는지
- 장기적으로 서비스 이용이 증가했는지
- 전체 세션 유지 시간 증가
- 구독/재방문 가능성 증가
- 위 값들은 직접 측정하기 어려우므로 모델의 input으로 활용할 수 없음.
- 따라서 아래와 같은 관측 가능한 surrogate metrics를 대신 활용함.
- 클릭 여부
- 시청 시간
- 좋아요
- 구독
- 영상 탐색/머무는 시간
- 재생 시작률
- 즉, 진짜 목표를 대신할 대체 문제를 설정해 모델을 학습하는 것
- 학습 데이터는 모델이 만들어내는 추천 결과뿐만 아니라 외부 사이트를 포함한 모든 유튜브 시청 기록으로 생성됨.
- 추천 결과만 사용한다면 exploitation에 지나치게 편향되어 새로운 콘텐츠가 등장하기 어려움.
- 모든 시청을 포함함으로써 사용자가 유튜브 추천 시스템이 아닌 다른 방법으로 영상 콘텐츠를 시청했더라도 그 데이터를 활용해 또 다른 사용자에게 빠르게 전파할 수 있도록 함.
- 영상 시청 기록이 매우 많은 사용자에게 과도하게 가중치가 부여되는 것을 방지하기 위해 사용자별 학습에 사용할 데이터 길이를 고정해야 함.
- 모델이 사이트의 구조를 악용하거나 surrogate problem에 과적합되는 것을 막기 위해 classifier에서 나온 정보를 추천 결과에 즉시 반영하지 않음.
- 검색 쿼리에서 순서 정보를 버리고 정렬되지 않은 토큰으로 묶음으로써 label의 출처를 직접적으로 알 수 없게 함.
- 비대칭적인 영상 시청 패턴을 모델이 학습할 수 있게 구조를 설계함.
- 대부분의 collaborative filering은 사용자의 시청 기록 중 하나를 랜덤하게 가리고 다른 시청 기록으로부터 해당 영상이 무엇인지 예측하는데 이 경우 비대칭적인 영상 시청 패턴을 무시하게 됨.
- 사용자가 시청할 영상을 예측할 때 해당 시점 이전의 기록만을 input으로 받게하여 해결함.

4. Ranking
- candidate generation model에서 걸러낸 수백 개의 동영상을 사용자에게 실제로 노출할 소수로 압축해 순위를 결정하는 것
- 위 모델 구조와 비슷한 네트워크를 사용하고 logistic regression으로 각 영상에 스코어를 부여함
- 최종적으로 한 번의 노출로 기대되는 시청 시간을 기준으로 A/B testing을 수행해 모델의 성능을 평가함.

4.1 Feature Representation
Feature Engineering
- 딥러닝이 데이터 전처리에 대한 부담을 줄여준다는 기대에도 불구하고 raw data 특성상 신경망에 직접 입력하기 어렵기 때문에 feature engineering 과정이 필요함.
- 가장 중요한 feature은 사용자가 해당 항목 자체 또는 유사 항목과 과거에 어떻게 상호작용 했는지에 대한 정보
- 사용자가 평가 중인 동영상의 채널에서 몇 개의 동영상을 시청했는지
- 이 주제의 동영상을 마지막으로 시청한 시점이 언제인지 등
- candidate generation 단계에서 넘어온 정보(어떤 출처가 이 동영상을 추천했는지, 부여된 점수는 무엇인지)를 전달받아 활용하는 것도 중요
- 과거 동영상 노출 빈도를 설명하는 feature 또한 사용자에게 동일한 목록이 반복되는 것을 막고 추천 목록에 churn을 도입하는 측면에서 중요함.
Embedding Categorical Features
- sparse한 범주형 변수를 dense representation으로 매핑하기 위해 임베딩으로 변환
- 동영상 ID나 검색어와 같이 space의 크기가 큰 경우에는 top N개의 빈도를 가진 것만 남기고 영벡터로 임베딩
- 이때 같은 ID 공간에 있는 범주형 변수(ex. 노출 동영상의 ID, 사용자가 마지막으로 본 동영상 ID)는 같은 임베딩을 공유함
- 일반화, 훈련 속도 향상, 메모리 감소
Normalizing Continuous Features
- NN은 scaling과 input 분포에 민감하기 때문에 [0, 1) 범위 내에서 균등하게 분포되도록 스케일링
- super-, sublinear한 변수로도 설명력을 높이기 위해 제곱항과 루트항도 input으로 넣음
4.2 Modeling Expected Watch Time
- 추천된 영상에 대한 노출당 예상 시청 시간을 정확하게 예측하기 위해 weighted logistic regression을 사용함.
- 가중치
- positive(클릭된 항목): 관찰된 시청 시간에 비례해 가중치 부여
- negative(미클릭된 항목): 단위 가중치, 즉 가중치 1 부여
- 로지스틱 회귀에 의해 학습된 odds는 예상 시청 시간(E[T])에 클릭 확률(P)가 곱해진 값 E[T](1+P)에 근접해짐.
- 클릭 확률(P)가 작다고 가정할 때(실제 유튜브 데이터에서 그러함), 이 결과는 예상 시청 시간을 매우 근접하게 추정하게 됨.
4.3 Experiments with Hidden Layers
- 성능 향상을 위해 Hidden layer의 폭과 깊이를 실험함.

- 실험 결과 Hidden layer의 폭과 깊이를 늘리는 것 모두 모델의 성능을 개선함.
- 예를들어, None(Hidden layer가 없음)의 손실은 41.6%였으나 가장 깊고 넓은 구조는 손실을 34.6%까지 낮춤.
- 다만 깊이와 폭을 증가시키는 것은 inference에 필요한 서버 시간 또한 증가시키므로 서버 예산을 고려하여 절충하는 것 필요
5. Conclusions
- 유튜브 영상 콘텐츠를 추천하는 딥러닝 모델인 candidate generation과 ranking model 2개의 구조로 나누어 소개함.
- Candidate generation
- deep collaborative filtering 모델을 사용하여 다양한 신호를 효과적으로 통합하고 상호작용을 모델링해 이전에 사용되던 matrix factorization 접근 방식을 능가함.
- 비대칭적인 영상 시청 패턴을 학습하고 미래에 대한 정보를 막음으로써 좋은 성능을 보여줌.
- classifier로부터 signal를 차단한 것도 과적합을 방지하는 데 주요한 역할을 함.
- 영상의 age를 input feature로 활용하며 영상의 최신성을 고려하면서 편향을 제거하고 동영상의 인기 변화 행동을 표현할 수 있었는데 이를 통해 A/B 테스트에서 최근 업로드된 영상의 시청 시간을 극적으로 증가시킴.
- Ranking model
- 사용자와 아이템의 과거 상호작용을 주요한 feature로 판단해 feature engineering을 진행했고 각 feature의 특징을 파악해 알맞은 전처리를 진행한 결과 수백 가지 feature 사이의 비선형 상호작용을 효과적으로 모델링함.
- weighted logistic regression 기법을 사용해 클릭한 경우 시청 시간을, 아닌 경우 단위 가중치를 부여함으로써 예상 시청 시간을 근접하게 모델링함.
- 클릭률(CTR)을 직접 예측하는 것보다 더 좋은 성능