논문 : Deep Neural Networks for YouTube Recommendations
저자 : Paul Covington, Jay Adams, Emre Sargin
논문 선정 계기
추천시스템(Recommender System)이 가장 많이 쓰이고 유명한 분야라고 하면 ‘넷플릭스’와 ‘유튜브’를 떠올릴 수 있습니다. 또한 우리가 평상시에 많이 접하고 있는 것이기도 하고 추천 알고리즘을 적용한 분야로 가장 먼저 떠올랐기 때문에 유튜브의 추천시스템에 대해 자세히 알아보고 싶었습니다. 그래서 2016년 유튜브에서 공개한 추천시스템 관련 논문을 선정하게 되었습니다.
Introduction
유튜브는 추천시스템 관련 논문을 2010, 2016, 2019년 총 3번 발표했으며 이 논문은 그 중 2016년에 발표한 Deep Neural Networks for YouTube Recommendations입니다. 2010년에 발표한 유튜브의 추천시스템은 전통적인 데이터 마이닝을 기반으로 만들어져 알고리즘 구성이 간단하고 디버깅이 쉬웠습니다. 그러나 딥러닝이 주목 받게 되면서 딥러닝을 기반으로 한 추천시스템을 발표한 것이 2016년 이 논문인 것입니다.
딥러닝을 기반으로 한 추천시스템은 (1)Candidate Generation -> (2)Ranking의 2단계 구조를 기본으로 하고 있습니다. Candidate Generation 단계에서는 사용자의 유튜브 행동 기록들을 사용해서 전체 영상 중에서 해당 사용자가 선호할 것 같은 영상들로 개인화된 후보를 만들어주는 과정입니다. 그리고 Ranking 단계에서는 앞서 뽑혀진 후보 영상들 중에서 사용자의 선호도를 바탕으로 추천하는 것입니다.
Candidate Generation
Candidate Generation은 Ranking 단계에서의 후보 비디오 숫자를 수백개 수준으로 좁혀서 scalability를 확보합니다.
1. Recommendation as Classification
사용자(U)와 Context(C)를 기반으로 특정 시간(t)에서 수백만개의 아이템(V) 중 각 아이템(i)의 시청 class를 예측하는 multiclass classification으로 정의합니다.
U : 유저 정보
C : context 정보
u : 유저 정보와 context 정보를 조합해 만들어진 유저 임베딩
v : 각 후보 영상 콘텐츠의 임베딩
유튜브에는 explicit feedback과 implicit feedback 2가지가 존재합니다. 그러나 explicit feedback은 광범위하기 때문에 사용자가 시청 완료한 영상 콘텐츠를 positive로 분류하는 implicit feedback을 이용합니다.
2. Model Architecture
각 유저들이 시청했던 비디오 목록, 검색했던 키워드, 그리고 Demographic feature (나이, 성별, 나이, 위치, 사용 기기, 로그인 상태...)를 통해 fixed-length vector로 embedding합니다. 그리고 각 비디오들의 wach vector(시청 기록), search vector(검색 기록), geographic embedding(지리 정보), example age, gender 등을 모두 concat하여 사용자 벡터인 u를 구할 수 있게 됩니다.
3. Heterogeneous Signals
여기서 유튜브가 신경 쓴 부분은 비디오의 나이를 고려한다는 점입니다. 이를 통해 모델의 성능을 많이 개선시키는데 keypoint가 되었다고 합니다.
과거의 비디오 영상 데이터 위주로 모델이 편향되어 학습되는 경향이 있어 이를 보정하기 위해 Example Age라는 feature를 넣어 각 training example (user watch log)이 학습 시점으로부터 얼마나 오래됬는지를 모델에 명시해줍니다.
•
파란 선: example age 없이 예측한 watch probability.
•
빨간 선: example age를 넣어서 예측한 watch probability
•
초록 선: 실제 watch probability
4. Label and Context Selection
사용자가 유튜브의 추천시스템이 아닌 다른 방법으로 영상을 시청했다면 그 데이터를 활용해서 또 다른 collaborative filtering이 가능하기 때문에 학습 데이터는 이외의 방법으로 만들어진 데이터까지 포함합니다. 또한 유튜브를 많이 시청하는 사용자가 있을 경우 편향될 수 있기 때문에 사용자마다 학습 데이터의 수를 고정함으로써 모든 사용자의 가중치를 동일하게 유지하는 방법 또한 사용하고 있습니다. 그리고 학습 데이터를 선정하고 추천 아이템을 예측하는 과정에서 사용자의 무작위로 선정된 아이템을 예측하는 것보다 next 아이템을 예측하도록 데이터를 구성하는 것이 효과적이기 때문에 아래와 같이 특정 시점 이전의 데이터로만 학습 데이터를 구축하는 방식을 이용합니다.
Ranking
Ranking 모델은 각 사용자의 feature를 사용해 후보 아이템을 특성화합니다. 그리고 Candidate Generation 모델과 구조 자체는 유사하나 각 아이템에 score를 할당해 정렬함으로써 사용자에게 반영합니다.
1. Feature Representation
데이터는 형태에 따라 categorical(범주형)과 continuous(연속형)로 구분됩니다. 그리고 의미에 따라 query features와 impression features로 구분됩니다.
Feature Engineering
수백개의 feauture가 사용되며 인공신경망에 넣어주기 위해서는 어느정도의 raw data에 대한 전처리가 필요합니다.
Embedding Categorical Features
영상의 ID와 검색 기록을 임베딩하여 인공신경망에 input하고 categorical 데이터가 지나치게 많을 경우, click의 빈도수를 기반으로 top N을 선정하여 사용합니다. 그리고 반대로 부족한 경우에는 zero 임베딩 하여 사용합니다.
Normalizing Continuous Features
continuous feature의 경우에는 0~1로 scaling해주고 super/sub-linear한 특징을 배우기 위해서 , 의 데이터 또한 input으로 넣어줍니다.
2. Modeling Expected Watch Time
유저가 클릭한 영상(positive)와 클릭하지 않은 영상(negative)의 watch time을 예측하기 위해 positive 아이템의 경우 사용자가 시청한 시간에 대한 기록이 남겨져 있어 weighted logistic regression을 사용해서 예측할 수 있습니다.
3. Experiments with Hidden Layers
wider and deeper hidden ReLU 모델을 사용함에 따른 weighted per-user loss 결과값입니다.
Conclusion
•
딥러닝을 도입한 모델로 이전 모델보다 성능을 많이 개선시켰습니다.
•
비디오(영상)의 나이를 도입한 점과 각 영상의 시청 시간별 가중치를 부여한 것이 모델을 개선시키는데 큰 역할이 되었습니다.