About
home
About Me
home

유튜브 추천시스템—1. The YouTube Video RecSys

Date
2020/09/07
Writer
안녕하세요. EdgeAI를 전공하고 있는 이민경입니다요즘 추천시스템이 재미있어서 개인적으로 공부하고 있어요. 다양한 딥러닝 관련 공부도 하면서 논문들 읽고 재구현하는 것을 좋아해요
Email: blossominkyung@gmail.com
YouTube RecSys Trilogy 첫 논문으로 조금 오래되었지만 근간이라 할 수 있는 "The YouTube Video Recommendation System" 을 리뷰 하려고 합니다.
Summary 본 논문은 Batch-Oriented Pre-Computtation Approach 방식으로 YouTube 사용자들의 개인별 맞춤 영상 추천 시스템을 제안한다.
Content
정말 알 수 없는 유튜브 알고리즘...
누구나 한 번 쯤은 유튜브를 보다 알 수 없는 추천 영상에 인도당한(?) 경험이 있을 것이다.
유사한 썸네일 이미지로도 영상을 추천하는 알 수 없는 유튜브 세계
그래서 이런 드립들이 난무하다
모두가 알 수 없는 유튜브 알고리즘 드립에 지쳐갈 때 즈음, 도대체 얘네는 뭐길래 알고리즘이 이럴까 궁금해서 근간이 되는 대표 논문들 부터 간간이 유튜브 로고와 함께 시리즈로 리뷰해보려고 한다.
(물론 논문들이 유튜브 추천 알고리즘의 전부를 담고 있진 않다. 하지만 코어는 담고 있으니까)

1. Introduction

개인 맞춤 추천은 정보가 풍부한 환경에서 정보 및 컨텐츠 검색을 위한 핵심 방법이다. 본 논문은 YouTube 상의 과거 활동을 바탕으로 로그인한 사용자에게 개인 맞춤 비디오 세트 제공 방안을 제안한다. YouTube 공식 홈페이지와 브라우저 페이지를 통해 추천 방안이 제공된다.
사용자들은 다음과 같은 이유들로 유튜브를 이용한다.
(1) 직접 찾은 비디오를 보기 위해서 - Direct Navigation
(2) 특정 주제와 관 련된 비디오를 찾기 위해서 - Search and Goal-oriented
(3) 재미있는 컨텐츠를 보기위해서 - Be Entertained by Contents
개인 맞춤 비디오 추천은 이러한 사용자 사례들을 해결하기 위해 좋은 방법으로, 사용자가 관심 있는 고품질의 비디오를 찾도록 서비스를 제공해주는 것이 목표이다. 본 논문의 추천 시스템은 top-N recommender 방식으로 제안하는 시스템의 성공 여부를 평가하는 방법 또한 검토한다. 더불어 사용자 개인 정보를 유지하면서 백엔드 시스템이 보여주는 개인 맞춤 데이터를 제어하는 것이다.
그러나 개인 맞춤 추천에는 몇 가지 이슈들이 있다.
(1) 사용자가 업로드한 비디오는 메타데이터가 부족하거나 부재하다
(2) 유튜브 동영상은 대부분은 10분 이내로 짧아서, Interaction이 짧고 잡음이 있다
(3) 재미있는 동영상들은 지속적으로 최신 추천을 받아야 된다; 수명주기가 짧다

2. System Design

사용자의 최근 행동 양상과 관련 있는 비디오
사용자의 최근 행동 양상을 바탕으로 다양한 비디오
업데이트 된지 얼마 안된 최신 비디오
등과 같이 사용자 개인 맞춤 비디오 추천 시스템을 제공한다. 이때 사용자가 동영상이 자신에게 추천된 이유를 이해할 수 있어야 한다. (아니면 알 수 없는 유튜브 알고리즘의 늪에 빠지게 된다)
추천된 비디오들의 세트는 사용자가 시청했고, 선호하며, 좋아요를 누른 활동들을 시드(Seed)로 사용하고, 공동 방문 기반 비디오 그래프를 탐색하여 비디오 세트를 확장한다. 그 후 관련성과 다양성에 대해 다양한 신호들을 사용하여 비디오 세트의 랭킹을 매긴다.
허나 제안하는 시스템이 YouTube 시스템의 일부라는 것을 감안하면, 제안된 시스템은 오류에도 탄력적이어햐 하고, 부분적으로 오류가 발생한 경우에는 성능이 저하된다. 즉, 제안하는 개인 맞춤 비디오 추천 시스템의 Complexity를 최소화해야 한다.

2.1 Input Data

개인 맞춤 비디오 추천 시스템을 만들 때, 고려해야할 두 가지 데이터 클래스가 있다.
Content Data - video metadata, raw video streams
User Activity Data - explicit and implicit categories
Explicit Activities → 선호하는 영상, 좋아요 누른 영상, 구독하는 영상, 점수 매긴 영상
Implicit Activities → '사용자가 비디오를 보기 시작했고 장시간 시청했다' 와 같이 사용자가 동영상을 보고 상호작용한 결과
모든 경우에서 처리하는 데이터들은 다음과 같이 Noisy가 상당하다.
Video Metadata - 자료가 존재하지 않거나, 오래되었거나, 부정확할 수 있다.
User Data - 사용자 활동의 일부만을 나타내고, 간접적으로 사용자의 참여와 즐거움 정도를 측정할 수 있다. (예: 사용자가 동영상을 다 보았다 해도, 해당 영상을 좋아하는지는 알 수 없다)
Implicit Activity - 비동기적으로 생성되고 불완전할 수 있다. (예: 사용자가 장기 시청 알림을 받기 전에 브라우저를 닫을 수 있다.)

2.2 Related Videos

추천시스템의 Building Block 중 하나는 비디오 viv_{i}에서 유사하거나 관련된 비디오 RiR_{i} 세트로 매핑을 구성하는 것이다. 우선 사용자가 주어진 Seed 동영상 vv를 시청한 후 시청할 가능성이 높은 동영상과 유사한 영상들을 정의한다. 그 후 매핑을 계산하기 위해, Rule-Mining 이나 Co-visitation Counts로 알려진 기술들을 사용한다. 주어진 24시간 동안 각 동영상 (vi,vj)(v_{i}, v_{j})에 대해 세션 내 공동 시청 빈도를 계산한다. 그 결과, video vjv_{j}에서 base video viv_{i} 로의 Related Score는 다음과 같이 정의된다.
r(vi,vj)=cijf(vi,vj)r(v_{i}, v_{j})= \frac{c_{ij}}{f(v_{i},v_{j})}
cijc_{ij} : 공동방문 횟수
ci,cjc_{i}, c_{j} : 각각 동영상 vi,vjv_{i}, v_{j}에 대한 모든 세션의 총 발생 횟수
f(vi,vj)f(v_{i},v_{j}) : Seed 비디오와 후보 비디오 모두의 "글로벌 인기"를 고려한 정규화 함수로 가장 간단한 함수는 f(vi,vj)=cicjf(v_{i}, v_{j}) = c_{i} \cdot c_{j} 즉, 동영상의 전세계 인기를 곱한 값이다.
이후 주어진 Seed 비디오 viv_{i}와 관련된 비디오 RiR_{i}세트를 점수 r(vi,vj)r(v_{i}, v_{j})로 순위가 매겨진 상위 N개의 후보 비디오를 선택한다. 따라서 전체 조회수 (및 다른 동영상과의 공동 방문수)가 너무 낮기 때문에 이와 같은 방식으로 신뢰할 수 있는 관련 비디오 세트를 계산할 수 없다.
실제로 해결해야 할 편향, 시청 데이터 잡음 등 추가적인 문제들과 함께 공동 방문수 외에도 비디오 시청 시퀀스 및 타임 스탬프, 동영상 메타 데이터 등 추가적인 데이터 소스가 있다. Reltaed Videos는 비디오 세트에 대한 방향성 그래프를 유도한 것이라 할 수 있다. 각 비디오 쌍 (vi,vj)(v_{i}, v_{j})에 대해 vjRv_{j} \in R의 경우, viv_{i}에서 vjv_{j}까지의 간선(Edge) eije_{ij}가 있고, 해당 간선의 가중치는 r(vi,vj)r(v_{i}, v_{j}) 이다.

3. Generating Recommendation Candidates

개인 맞춤 추천을 위해 관련 비디오 연관 규칙을 사용자의 개인 활동과 결합한다. 여기에는 시청한 비디오와 즐겨찾기, '좋아요', 랭킹 및 재생목록 추가 등이 이뤄진 비디오들이 모두 포함되고, 이를 Seed Set이라 한다. 주어진 Seed Set(SS)에 대한 후보군 추천을 위해, 관련된 비디오 그래프의 간선들을 확장한다. Seed Set(SS) 각각의 비디오(viv_{i})와 관련된 비디오(RiR_{i})를 고려할 때, 이러한 비디오 세트의 결합을 C1C_{1}이라한다.
C1(S)=viSRiC_{1}(S) = \cup_{v_{i} \in S}R_{i}
많은 경우 C1C_{1} 계산은 크고 다양하고 흥미로운 후보 추천 세트를 생성하는데 충분하다. 그러나 실제로 관련 비디오들의 추천 세트의 범위가 좁다. 사용자 관심과 매우 가까운 컨텐츠를 추천하지만 새로운 동영상은 추천하지 않는 문제가 발생한다. (새로운걸 보고 싶은데 새로운게 뜨지 않는 마법이 펼쳐진다. 마치 #whattowatchonnetflix 같은 사태가 발생한다. )
추천 범위를 넓히기 위해, 관련 비디오 그래프에 대해 제한된 Transitive Closure을 설정하여 후보군을 확장한다.
Cn(S)=viCn1RiC_{n}(S) = \cup_{v_{i}\in C_{n-1}}R_{i}
CnC_{n} : Seed Set 비디오에서 nn-거리 이내에 있는 비디오 세트
최종 후보군들의 세트는 다음과 같이 정의된다. 후보세트 CfinalC_{final}의 각 비디오는 Seed Set에 있는 하나 이상의 비디오와 연결된다.
Cfinal=(i=0NCi)/SC_{final} = (\cup_{i=0}^{N}C_{i})/S

4. Ranking

데이터 세트 생성단계에서 후보군 세트를 생성한 후, 다양한 Signal들을 사용하여 점수를 주고 랭킹을 매긴다. 이때 Signal은 세 그룹으로 나눌 수 있다.
(1) 비디오 품질
(2) 사용자 특이성
(3) 다양성
(1) 비디오 품질 : 사용자와 관계 없이 비디오가 평가되는 가능성을 판단한다. 비디오 총 조회수, 비디오 등급, 댓길, 즐겨찾기 및 공유, 업로드 시간 등으로 판단한다.
(2) 사용자 특이성 : 사용자의 취향 및 선호도와 상당히 밀접한 비디오 추천을 판단한다. 사용자 시청 기록/시청 시간, 조회수 등으로 판단한다.
⇒ 두 가지 Signal의 선형 조합을 통해 후보 동영상 랭킹 목록을 만든다.
(3) 다양성 : 적은 수의 추천갯수, 4개-60개, 정도만 표시하므로, 리스트의 하위 집합을 선택해야 한다. 가장 관련있는 비디오를 선택하는 대신, 카테고리 간의 관련성과 다양성 사이의 균형을 맞추어야 한다.
사용자들은 보통 서로 다른 여러 주제에 관심을 갖는다. 따라서 유사도가 높은 비디오 위주로만 추천되면 안된다. 이를 위해, 단일 Seed 비디오와 관련된 추천 비디오 수에 제한을 두거나, 같은 채널의 추천 수를 제한해 한다. (Topic Clustering이나 Content-analysis 처럼 보다 정교한 기술들도 사용된다)

5. User Interface

Recommendation Presentation은 사용자 경험의 중요한 부분이다. 추천된 모든 비디오들은 미리보기 이미지와 일부 제목, 비디오 시청 연령 및 인기도 정보와 함께 표기가 된다. 추천을 한 Seed 비디오의 링크 및 설명이 함께 제공된다. 또한 사용자가 홈페이지에서 보고 싶은 추천 비디오들의 수와 장소를 제어할 수 있다.
또한 추천 랭킹 리스트를 계산할 때, 제공 시간의 Subset만 표시하는데 이를 통해 사용자는 재방문 시 새로운 추천 비디오 리스트를 볼 수 있다.

6. System Implementation

본 논문은 Batch-Oriented Pre-Computtation Approach를 사용한다. 이를 통해, 추천 시스템을 생성하는 단계에서 충분한 양의 CPU를 사용하여 대량의 데이터에 액세스할 수 있고, 동시에 사전에 생성된 추천 사항들을 짧은 지연 시간 내에 제공 받을 수 있다.
이 접근 방식의 큰 단점으로는 특정한 추천 데이터셋 생성과 제공 사이의 지연시간이 있는데, 추천 사항 생성을 파이프라인화하여 하루에 여러번 데이터셋을 업데이트함으로 해결할 수 있다.
YouTube 추천 시스템의 실제 구현은 다음과 같이 세 부분으로 나눌 수 있다.
(1) Data Collection
(2) Recommendation Generation
(3) Recommendation Serving

7. Evaluation

본 논문의 제안사항은 추천시스템의 성능을 평가하는 주요방법인 A/B Testing 으로 평가한다. 이때 추천 시스템의 퀄리티를 평가하기 위해 다양한 항목들을 고려한다: 클릭율(CTR), 동영상의 상당 부분을 시청한 클릭율(Long-CTR), 세션 길이, 첫 번째 장기 시청까지의 시간 및 추천 범위, 추천한 비디오에 로그인한 사용자 비율 등등.
이러한 지표를 통해 지속적으로 시스템 성능을 추적하고 실시간 트래픽에 대한 시스템 변경 사항을 평가한다.
유튜브 관련 첫 리뷰를 하고 나니 의문점이 생긴다. 2010년에도 고민을 하였는데, 추천 서비스가 왜 여전히 유튜프가 목표로하는 뜻대로 잘 되지 않을까?