*크롬으로 보시는 걸 추천드립니다*
https://static.googleusercontent.com/media/research.google.com/ko//pubs/archive/45530.pdf
종합 : ⭐⭐⭐⭐
1. 논문 중요도 : 5 점
2. 실용성 : 4 점
설명 : 추천 시스템에 적용된 딥러닝 모델을 보고자 한다면, 가장 우선적으로 봐야 하는 논문 중 하나
- Candidate Generation 모델과 Ranking 모델로 Two-Stage로 추천을 진행
- 유투브 추천 시스템에서 적용되는 모델을 조금이나마 느낄 수 있음
- Feature 엔지니어링의 중요성
- 클릭률(CTR) 예측이 아닌, 시청시간(watch time)을 목적으로 딥러닝 모델을 학습
( * 개인적인 의견이며, 제 리뷰를 보시는 분들에 도움드리기 위한 참고 정도로 봐주세요)
추천 시스템관련 모델링을 찾아보고 있는 사람이라면, 가장 궁금한 점이
"유튜브에서는 어떻게 추천을 하지?"
"페이스북에서는 어떻게 추천을 하지?" 등 일 것입니다.
"DNN for Youtube Recommendation" 논문을 통해
유튜브에서 사용되고 있는 초기 추천 딥러닝 모델을 조금이나마 느낄 수 있습니다!
인용 수도 무려 1800 건을 넘어가고 있습니다
※ 그밖에 유명한 추천 관련 논문
※ 그 밖에 유명한 추천 관련 논문

Youtube DNN 논문 소개
- Youtube DNN의 의의
- Youtube는 가장 규모가 크고 정교한 추천 시스템 산업 중 하나
- 딥러닝을 활용한 추천 시스템 성능 향상에 중점 ( 10억 개의 Parameter 학습, 수 천억 개의 Example을 학습)
: Tensorflow를 기반으로 함
- 2 단계 Information Retrieval 모델을 구성하여 성능을 향상
1. 후보 생성 모델(Deep Candidate Generation Model) : Ranking을 매기기 전, 사전작업을 수행하는 모델
2. Ranking Model : User에게 보여줄 영상의 순위를 매기는 모델
- 대용량 처리가 가능하고, 반복적인 학습 및 유지가 가능한 추천 딥러닝 모델을 제안
- 실용성 관점에서의 Lesson과 Insight를 소개
- 추천 시스템에서의 주요 해결 과제
- Youtube는 10억(Billon) 사용자(User)에게 끊임없이 증가하고 있는 동영상을
개인화 맞춤형 영상(콘텐츠)을 추천하도록 도와야 함
- SCALE :
○ 유튜브 같은 큰 규모에 적합한 딥러닝 모델을 만들어야 함
○ 효율적인 Serving이 필요함
○ 이전에 제안된 딥러닝 모델은 Small Size에만 적합
- FRESHNESS :
○ 초 당 몇 시간 분량의 동영상들이 업로드됨(Dynimic Corpus)
○ 사용자의 최근 행동(Action)과 새로 업로드된 콘텐츠에 대해서 즉각적으로 대응해야 함
○ 기존의 유명한 영상과 새로운 콘텐츠 간의 균형이 중요함
○ Exploration(탐색)과 Exploitation(개척) 간의 균형으로 이해할 수 있음
- Noise :
○ 사용자의 Historical 한 행동을 예측하기에는 어려움 ( ∵ 1. Sparsity 2. 잠재적인 외부 요소(Factor))
○ 사용자로부터 직접적인 Ground Truth를 얻을 수 없어, 함축적인 피드백을 활용해서 모델을 학습해야 함
: 사용자로부터 새로운 콘텐츠에 대한 평점을 물어볼 수는 없기 때문에
○ 모델 학습 시, 이러한 Noise들로부터 로버스트(Robust)하도록 구성해야 함
Youtube DNN 모델 구조 Overview
- Youtube DNN의 기본 구성
- 2가지 Neural Network로 구성됨
1. Candidate Generation (후보 생성 모델)
2. Ranking Model
- Candidate Generation
○ 사용자의 행동 히스토리(Activity History)를 입력으로 사용
: 사용자 간의 유사도(Similarity)는 시청한 Video의 IDs, 검색 토큰(Token), 인구통계정보를 사용
○ 후보군(Candidate)들은 사용자와의 높은 정밀도(Precision)와 관련이 있음
* Precision : 예측한 샘플 중에서 몇 개나 맞추었나
○ Candidate Generation Network는 일종의 Collaborative Filtering(협업 필터링)이라고 할 수 있음
○ 광범위한 개인화된 추천을 제공
- Ranking Model
○ "최고"의 추천을 위해서는, 매우 정밀한 Representation이 요구됨
: Candidate Generation에서 보다 더 Video와 User를 잘 성명하는 Feature set을 사용
○ 1단계에서 선별된 후보군 중에 상대적으로 더 중요한 영상을 구별하기 위해선, 높은 Recall 성능이 요구됨
* Recall : 실제 정답 중 몇 개를 맞추었나
○ 목적에 따른 콘텐츠에 점수를 할당하여 추천 → 점수에 따라서 순위를 매겨 User에게 보임
- 장점
1. 백만 Corpus 중에서 소수의 영상을 사용자에게 맞춤화된 추천을 가능하게 함
2. 다른 출처(Source)에서 생성된 Candidate 후보군을 혼합(Blending) 후 추천을 해줄 수 있음
- 평가방법
1. Offline Test : Precision, Recall, Ranking Loss 등
2. Online Test : A/B Test - 클릭률, 시청시간, User Engagement(참여도)
○ 오프라인 테스트와 온라인 테스트 항상 일치하는 것은 아니므로, 온라인 테스트를 최종 평가 척도로 사용
Candidate Generation
- 특징
- Candidate Generation을 통해, 엄청난 양의 유튜브 Corpus에서 사용자와 관련된 수 백개의 영상으로 축소됨
- Ranking Loss를 활용한 matrix factorization 접근법을 모방
- Shallow Network를 통해 Factorization 진행 : Factorization 기술을 non-linear으로 일반화했다고 볼 수 있음
- Recommendation as Classification
- \( \textbf{U} \) : 사용자 / \( \textbf{C} \) : Context
- \( \textbf{V} \) : 전체 Corpus
- \( i \) : 수백만 개의 영상 중 \( i \) 번째 영상 (= classes)
- \( u \) 와 \( v \) 는 각각 사용자와 비디오 영상과 관련된, 고차원의 Embedding을 나타냄
- 사용자가 끝까지 비디오를 시청한 경우를 Positive Example로 학습
○ 좀 더 함축적인 사용자의 피드백이라고 생각했음
○ 이를 통해, 극도록 희박한 Tail 부분에서도 추천을 생성할 수 있었음
* Tail 이란?
* Tail 이란 ?

- Efficient Extreme Multi-Class
- 수백만 개의 클래스를 사용
- 서빙 단계에서 사용자에게 제공될 상위 N개를 선별하기 위해서는, 가능성이 높은 N개의 Class(=video)를 계산해야 함
- 수 천 개의 Negative 샘플링 덕분에 고전적인 Softmax 보다 100배 더 빠름
1. Negative Class를 샘플링
2. Importance Weighte를 통해 샘플링을 조절
* https://arxiv.org/pdf/1412.2007.pdf
- word2vec 방법인, CBOW에서 학습에 관한 영감을 받음
○ 각 비디오마다의 고차원의 Embedding을 학습하여, 신경망에 입력
○ 신경망이 학습할 때, 이 고차원의 Embedding도 같이 학습됨
※ CBOW 학습 방식 :
※ CBOW 학습 방식 :

CBOW 학습 방식에 대해서, https://wikidocs.net/69141을 참고하시면 도움이 될 것입니다
- 저는 개인적으로, 수백만 개의 클래스를 학습을 위와 방식처럼 학습했을 것이라고 추정하고 있습니다
- Feature들은 평균화(Average) 및 Concat 후, 첫 번째 layer에 입력됨
- 수 백만개의 item에 대해서 점수를 매기기 위해서는, 선형에 가까운 연산이 필요함
○ Softmax output layer를 사용하지 않음
○ Dot Product를 활용한,Nearest Neighbor Search를 통해 문제 해결
○ Nearest Neighbor 알고리즘 종류는 큰 성능 차이 없었음
- Heterogeneous(이종의) Signal
- 딥러닝의 장점 : 연속 및 범주형 Feature를 쉽게 같이 추가할 수 있음
- 검색기록(Search History) : Uni 및 Bi-Gram으로 토큰화 → Average → Search history를 Dense 하게 요약
- 인구통계 Feature : 신규 사용자에게 합리적으로 작동할 때, 중요한 사전 정보로 활용됨
○ [0, 1] 값으로 정규화(Normalized)
- Example Age Feature : 학습 데이터가 생성부터 시점부터의 기간
○ "신선한" 콘텐츠를 추천하는 것이 매우 중요( 사용자와의 관련성이 훼손되지 않는 범위 내에서)
○ 머신러닝은 과거 데이터에 "편향"되는 특징이 있음
○ Example Age를 통해, 최신 콘텐츠인지 여부도 같이 학습할 수 있음
○ Serving 시, 0이나 약간의 마이너스 값으로 입력 ( = 훈련기간의 맨 끝에 있는 예측임을 반영)
○ 업로드 시간과의 시간 종속적인 인기도를 정확하게 반영할 수 있음 → "신선한" 콘텐츠를 추천
- Label Selection
- Surrogate Problem : 실제 환경과 근사적인 문제로 설정하여 평가 ( ∵ 직접적인 추천의 질을 평가 하기 어려움 )
○ 예시 : 별점을 잘 맞추면 효과적인 영화 추천이다? (A/B 오프라인 테스트로는 측정하기 어려움)
- Full Watch를 정답(label)으로 사용
○ 추천 이외에 루트로 유튜브를 시청한 데이터도 학습에 사용할 수 있음
- 사용자당 고정된 수의 학습 Example을 생성
○ ∵ 활동성이 높은 소수의 사용자가 전체 Loss를 지배할 수 있으므로
- Context Selection
- Classifier에게 전달되는 정보를 제한시켜야 함
○ 바로 이전 검색을 Sequence 하게 입력하면, 관련된 검색에 대한 결과만을 추천해줌
○ 검색 정보를 Sequence 정보를 없앤, Unordered bag 토큰으로 입력
- 비대칭적 동시 시청(Asymmetric co-watch probabilities)
○ 일반적으로 에피소드 시리즈 물을 순차적으로 시청함
○ 에피소드 시작하는 틈새에 관련 아티스트나 장르를 찾아봄(틈새 추천 시장)
○ 다음에 볼 시청 콘텐츠를 예측하는 것이, 랜덤 하게 예측하는 것보다 더 나은 성능을 보임
▶ 레이블 및 콘텐츠 구성시, Label이 되는 시점의 이전 정보만 활용
- Feature와 Depth 실험
- Feature와 Depth를 추가할수록 더 좋은 성능을 보임
- 최근 시청 및 검색 : 최대 사이즈 50개로 제한
- Softmax : 입력 - 256-dim / 출력 - 1 M video classes에 대한 다항 분포를 출력
○ 개별적인 Video Embeddiong이라고 생각할 수 있음
○ 수렴될 때까지 학습
Ranking
- 특징
- 노출(Impression) 데이터를 활용하여, Candidate 예측을 보정하고 사용자별로 맞춤형 추천을 진행
( * 주어진 비디오를 일반적으로 시청을 하고, 노출된 썸네일의 선택을 통한 클릭 확률은 낮음 )
- 좀 더 많은 사용자와 관련된 Feature 및 비디오와 관련된 정보를 사용할 수 있음
- 로지스틱 회귀를 사용하여, 각 비디오마다 독립적인 점수를 매긴 후 순서대로 노출 시킴
- A/B 테스트 결과를 기반으로 지속적으로 최종 순위를 조정
- 노출(Impression) 당 예상 시청 시간을 목적으로 함
○ 노출(Impression)당 예상 시청 시간을 통해, 클릭-베이트와 같은 콘텐츠 추천을 방지
* 클릭-베이트 : 자극적인 제목과 이미지를 통해 조회수와 광고수익을 얻는 영상
○ 노출(Impression) 당 예상 시청 시간이 더 유저 참여도(Engagement)를 잘 반영
- Feature Representation
- 전통적인 분류 체계를 따름 : 범주형, 연속/순위형 Feature
○ 범주형의 Cardinality 매우 다양 - 검색 쿼리 수백만 개
○ 단변량(Univalent) - 노출되는 비디오 ID
○ 다변량(Multivalent) - 유저가 봤던 비디오 ID 집합
○ 아이템의 속성(Impression) : 여러 번 계산 - 각 Item이 Scored 될 때마다
○ 유저/컨텐트 속성(Query) : Request 당 한 번만 계산
- Feature Engineering
- 딥러닝을 통해 그나마 Feature Engineering 비용을 완화할 수 있지만, 수백 개의 Feature를 사용해 여전히 많은 비용이 필요
- 사용자 action의 시간적인 시퀀스(Temporal Sequence)와 비디오 노출 간의 관계성을 찾아야 함
○ Item 자체 및 유사 Item과 사용자의 이전 상호작용을 반영하는 Feature가 중요
○ 예를 들어, 비디오를 업로드한 채널에서, 사용자의 과거 기록을 활용하는 것과 같음
: 해당 채널에서 몇 개의 비디오를 봤는지 / 이 주제의 비디오를 언제 마지막으로 봤는지?
- 과거 사용자의 action을 설명하는 연속형 Feature의 중요도는 매우 큼 ( ∵ 다른 Item에 대해서도 일반화가 잘 됨)
- Candidate Generation을 재활용하는 것도 중요
○ 비디오 Candidate의 출처
○ Candidate Model이 매긴 점수
- 과거 비디오의 노출 빈도를 설명하는 Feature 중요
○ 추천에서 "이탈"을 도입하는데 중요한 역할을 함
○ 최근에 추천받았지만, 시청하지 않은 경우 다음 페이지 로드 시 노출을 강등시킴
- Embedding Categorical Features
- Embedding을 통해 Sparse 한 범주형 Feature를 Dense 하게 만듦
- Unique ID Space( = Video ID)는 별도로 학습된 임베딩이 존재
○ Look-up Table 방식
- ID space는 매우 큰 Cardinality를 가짐(예를 들어 우리는 수많은 검색 쿼리를 가지고 있음)
○ 클릭된 노출 빈도로 정렬하여, 상위 N개 만 사용
○ Out-of-Vocabulary value는 0 Embedding으로 매핑
○ Video ID는 Single Global Embedding을 사용
▶ 많은 고유(distinct)한 Feature 등에서 재사용
( 예 : 노출된 비디오 ID, 마지막에 사용자가 본 비디오 ID, 추천에 사용된 "SEED" 비디오 ID 등 )
○ Global Embedding을 사용해도, Neural Network에서 별도로 입력됨
▶ 각각의 Feature가 여러 층에 Layer을 통과하게 되면, 사용자 맞춤형 추천이 가능하게 됨
○ Global Embedding을 통해, 일반화(Generalization)를 개선하고, 훈련 속도 및 메모리를 줄일 수 있음
- Normalizing Continuous Features
- 연속형 Feature를 정규화하는 방법을 소개함 ( ∵ 딥러닝 모델은 input의 scale 분포에 민감함)
- \( x \) 의 누적분포 ( \( f \) )를 사용 → 균등하게 분포하도록 Scaling
○ \( \tilde{x} = \int_{-\infty }^{x} df \)
○ 훈련이 시작되기 전, 분위수(Quantiles)로 선형 보간(interplation) 근사
○ \( \tilde{x} \) 를 \( \sqrt{\tilde{x}} \) 및 \( \tilde{x}^{2} \) 로 다양화하여, Super-linear 및 Sub-linear 표현력을 제공
※ Super-linear 및 Sub-linear
※ Super-linear 및 Sub-linear

○ \( \tilde{x}^{2} \) 을 통해 오프라인 정확도를 향상
- Modeling Expected Watch Time
- 최종 목적 : 사용자에게 주어진 영상의, Watch Time의 기댓값을 예측하는 것
- Positive Example : 사용자(User)가 영상을 본 시청 시간
○ 모델 : Weighted Logistic Regression 사용
※ Weighted Logistic Regression 설명 자료
※ Weighted Logistic Regression 설명 자료
https://stats.stackexchange.com/questions/442796/what-does-weighted-logistic-regression-mean
What does "weighted logistic regression" mean?
What does "weighted logistic regression" mean? I came across this term "weighted logistic regression"in this paper. I have read the paper a lot of times throughly. But I still can't get the idea ...
stats.stackexchange.com
※ Weighted Logistic Regression 적용 방법
https://stackoverflow.com/questions/7513067/weighted-logistic-regression-in-python/35569266
Weighted logistic regression in Python
I'm looking for a good implementation for logistic regression (not regularized) in Python. I'm looking for a package that can also get weights for each vector. Can anyone suggest a good implementat...
stackoverflow.com
difference between sample_weight and class_weight RandomForest Classifier
I have a very imbalanced big dataset (500000 instances, 60 features) which is prone to changes (increase in size and number of features). But what will stay fixed is the imbalance in the classes, t...
stats.stackexchange.com
○ Positive Sample(Clicked) 은 시청시간에 따른 가중치를 부여함
○ Negative Sample(Unclicked) 은 단위(Unit) 가중치가 부여됨
- Youtube DNN에서 사용하는 logistic Regression의 Odds
○ \( T_{i} \) : \( {i} \) 번째 노출된 비디오의 시청시간(Watch Time)
○ \( N \) : 학습 데이터 수
○ \( k \) : 노출된 영상 중 클릭한 예제 수( = Positive Impression)
- 지수 함수 ( \( e^{x} \) )를 최종 활성 함수로 사용하여, 예상 시청시간 ( \( E[T] \) )을 근접하게 추정하는 확률을 생성
※ 예상 시청시간에 대한 간단한 증명
※ 예상 시청시간에 대한 간단한 증명
$$ \frac{\sum T_{i}}{N-k} = \frac{\sum T_{i}}{N}(\frac{N}{N-k})\
= \frac{\sum T_{i}}{N}(1 + \frac{k}{N-k})
= E(T)(1 + P) $$
- Experiments with Hidden Layers
- Weighted, Per-User Loss를 평가 척도로 사용
○ Weighted, Per-User Loss : (잘 못 예측한 Watch Time) / (전체 Watch Time)
○ Unclicked 시청 예측시간 > Clicked 시청 예측시간 : 잘 못 예측한 Watch Time = Clicked 시청시간
- 1024 ReLU → 512 ReLU → 256 ReLU 모델이 가장 좋은 성능
- Normalized Countinuous Feature 적용 시 0.2 % Loss 감소
- 긍/부정 Example에 가중치 부여하여 학습 시, 4.1 % Loss 감소
Conclusion
- 두 가지 딥러닝 모델(Candidate Generation, Ranking)로 효과적인 성능을 냄
- 많은 Feature의 상관관계를 깊은 레이어를 통해 융합하는, Deep Collaborative Filtering을 제안함
- 미래 Watch Time을 잘 예측할 수 있는 Metric을 제안
○ 미래 정보를 사용하는 것을 제한
○ 바로 분류를 해버를 수 있는 정보도 제한( Surrogate Problem에 Overfit 하게 되어, 일반화 효과가 떨어짐 )
- "Example Age"를 제안
○ 너무 과거 정보에 "bias" 되는 것을 방지
○ 모델이 좀 더 인기 있는 영상을 추천하는 "신선함"을 반영할 수 있음
○ 오프라인 테스트의 정밀도(Precision)를 높이고, A/B 테스트에서 Watch Time을 매우 증가시킴
- Ranking 모델에 좀 더 세밀한 Feature를 Engineering
○ 사용자의 과거 행동을 반영할 수 있는 Feature가 매우 중요
- 딥러닝 모델은 범주형 및 연속형 Feature를 잘 학습할 수 있도록, Quantile normalization 적용
- 수백만 개의 Feature를 위해서 Layer를 딥하게 쌓음
- Weighted Logistic Regression을 사용하여, Positive Sample에 대한 시청시간(Watch Time) 예측력을 높임
- 클릭률을 직접 예측하는 것보다 예상 시청시간을 사용하는 것이 더 좋은 성능을 보임
마치며
- 2016년에 나온 논문이므로, 다소 오래된 논문일 수도 있지만, 딥러닝 추천 모델을 입문하는 논문으로서 가치가 충분합니다
- 현재는 얼마나 유튜브에서 딥러닝 관련 추천 모델이 발전했을지 기대가 됩니다
1. Feature Engineering의 중요성
2. Feature의 처리
3. 서빙을 위한, 효율적은 모델 구조의 구성
이 얼마나 중요한지 다시 한번 느낄 수 있었습니다
'발전중인 AI > 추천(Recommendation)' 카테고리의 다른 글
[논문요약] GDCN(Gated Deep Cross Net, 2023) - 추천 AI의 핵심 트렌드 (0) | 2025.02.03 |
---|---|
[논문요약] 딥러닝 관련 추천 모델 - Survey(2019) (0) | 2022.02.15 |
추천 시스템 기본 - 협업 필터링(Collaborative Filtering) - ② (0) | 2021.08.10 |
추천 시스템 기본 - 협업 필터링(Collaborative Filtering) - ① (0) | 2021.08.08 |
추천 시스템(Recommendation System) 시작 (0) | 2021.08.07 |