봉식이와 캔따개

The Youtube Video Recommendation System (2010) 본문

~2022 흔적들/추천

The Youtube Video Recommendation System (2010)

봉식이누나 2021. 9. 2. 18:12
반응형

 

https://www.inf.unibz.it/~ricci/ISR/papers/p293-davidson.pdf

 

 

분명 얼마전까지만해도 NLP쪽 논문을 읽고 있었는데 어쩌다보니 추천시스템 관련 논문을 읽어야하게됐다...

 

파파고의 도움을 받아 번역... 공부 겸 다시 정리...


 

요약

세계에서 가장 인기 있는 온라인 동영상 커뮤니티인 유튜브에서 사용중인 동영상 추천 시스템에 대해 논의한다. 시스템에서는 사이트 활동을 기준으로 사용자에게 개인화된 영상set을 추천해준다. 시스템이 직면한 몇 가지의 문제와 이를 해결하는 방법에 대해 논의한다.

 

 

1. 소개

개인화 추천은 오늘날의 풍부한 정보 환경에서 정보 검색 및 컨텐츠 검색을 위한 핵심 방법이다. 순수 검색(쿼리) 및 탐색(유도된 혹은 유도되지 않은)과 결합하면 사용자는 많은 양의 정보를 효율적으로 탐색할 수 있다. YouTube는 많은 양의 사용자 생성 컨텐츠를 보유한 가장 크고 인기 있는 온라인 비디오 커뮤니티로서 콘텐츠 검색 및 추천에 대한 몇가지 특별한 기회와 도전을 제시한다.

 

2005년 2월에 설립된 유튜브는 세계에서 가장 인기있는 사이트로 빠르게 성장했다. 사용자들은 제작된 동영상을 발견하고 보고 공유하기 위해 접속한다. 유튜브는 전 세계 동영상 컨텐츠에 참여할 수 있는 포럼을 제공하고 컨텐츠 창작자를 위한 유통 플랫폼 역할을 한다. 매일 수백만명의 사용자에 의해 수백만개의 영상에 걸쳐 10억번 이상의 영상 재생이 이루어지고, 매 분마다 사용자들은 24시간 이상의 영상을 유튜브에 업로드한다.

 

이 논문에서는 로그인한 사용자에게 유튜브 사이트에서의 이전 활동을 기반으로 개인화된 영상set을 제공하는 영상 추천 시스템을 제시한다. (로그인 하지 않은 사용자에게도 제한된 형태의 추천이 제공되지만, 이 논문에서는 로그인 한 사용자에게 초점을 맞춘다.) 

 

1.1 목표

사용자는 다양한 이유로 유튜브를 방문한다.

첫번째, 다른 곳에서 찾은 특정 영상을 보기 위해(직접 탐색). 두번째, 주제에 대한 특정 영상을 찾기 위해(검색 및 목표지향 탐색). 세번째, 그저 흥미로운 영상을 보면서 즐기기 위해. 세번째와 같은 경우를 우리는 명확하지 않은 욕구라고 부르고 개인화된 영상 추천은 이를 위한 한가지의 방법이다.

 

이와 같이, 사용자들이 자신의 관심사와 관련된 고품질의 동영상을 찾을 수 있도록 개인화된 추천을 제공하는 것이 이 시스템의 목표이다. 사용자를 즐겁게 하고 참여시키려면 이러한 추천set을 정기적으로 업데이트하고 사용자의 최근 활동을 사이트에 반영해야한다. 그것은 사이트에서 이용할 수 있는 광범위한 컨텐츠를 강조하기 위한 것이기도하다.

 

현재 우리의 추천 시스템은 예측방식이 아닌 상위 N개 추천 시스템이다. 본 논문의 섹션3에서 추천시스템을 평가하는 방법을 알아본다. 유튜브 추천 시스템의 추가적인 주요 목표는 사용자 프라이버시를 유지하고 백엔드 시스템이 노출하는 개인화된 사용자 데이터에 대한 명확한 제어를 제공하는 것이다. 섹션 2.5에서 이 목표를 해결하는 방법을 검토한다.

 

1.2 도전

유튜브에는 사용자에게 흥미로운 영상이나 개인적으로 관련된 영상을 추천하는 도전이 되는 여러가지 측면이 있다. 사용자가 업로드하는 동영상은 메타데이터가 없거나 거의 없는 경우가 많다. 비디오 corpus의 크기는 대략 활성 사용자 수와 같은 크기이다. 유튜브 동영상도 대부분 짧은 형태(길이 10분 미만)다. 따라서 사용자 상호작용은 상대적으로 짧고 노이즈가 심하다. 이것은 영화를 빌리거나 물건을 구매하는것이 명확한 관심표현인 넷플릭스나 아마존과 같은 영화대여, 구매 사이트의 사용자 상호작용과 비교된다. 게다가 유튜브에 올라온 많은 흥미로운 영상들은 업로드에서 확산까지 이어지는 짧은 라이프 사이클을 가지고 있으며 따라서 지속적인 새로운 추천이 요구된다.

 

→ 왜 코퍼스라는 표현을 썼는지 모르겠다. 대충 유튜브와 같은 서비스에서는 사용자 상호작용에 대한 데이터를 뽑아내는게 어렵다~ 라고 이해하고 넘어감

 

2. 시스템 설계

추천 시스템의 전반적인 설계는 위에서 설명한 목표와 도전에 따라 결정된다. 우리는 추천이 꽤 최신이고 새로운것 뿐만 아니라 사용자의 최근 행동과 관련이 있고 다양하기를 원한다. 또한 사용자가 자신에게 영상을 추천한 이유를 이해하는것이 중요하다.

 

추천 동영상 세트는 사용자의 개인 활동 (시청, 즐겨찾기, 좋아하는 동영상)을 seed로 사용하고 영상의 co-visitation(공동 방문) 기반 그래프를 통과하여 동영상 세트를 확장함으로써 생성된다. 그런 다음 관련성과 다양성을 위해 다양한 시그널을 사용하여 영상 set의 순위를 매긴다. → candidate 단계와 ranking 단계에 대해 대충 설명하고있다

 

엔지니어링 측면에서 우리는 시스템의 개별 구성 요소를 서로 분리하여 개별적으로 이해하고 디버깅 할 수 있기를 원한다. 우리 시스템이 큰 유튜브 생태계의 일부라는 점을 감안할 때, 추천 역시 실패에 대한 탄력성이 있어야하고 부분 실패시 우아하게? 저하되어야한다? 그 결과 우리는 전체 시스템의 복잡성을 최소화하기 위해 노력한다.

 

2.1 입력 데이터

개인화된 영상 추천 사항을 생성하는 동안 우리는 많은 데이터 소스를 고려한다. 일반적으로 고려해야할 데이터는 1) raw 비디오 스트림 및 제목, 설명 등과 같은 비디오 메타데이터. 2) 명시적 범주와 암묵적 범주로 나뉘는 사용자 활동데이터. 명시적 활동에는 영상 등급 매기기, 영상 즐겨찾기, 좋아요, 채널 구독 등이 포함된다. 암묵적 행동은 사용자가 비디오를 보고 상호작용한 결과로 생성되는 데이터이다. 예를 들어 사용자가 영상 시청을 시작했고 영상의 많은 부분을 봤다(오랫동안 시청)는 것

 

모든 경우에 있어서 우리가 처리할 수 있는 데이터는 노이즈가 많다. 비디오 메타데이터는 존재하지 않거나, 불완전하거나, 구식이거나, 그냥 틀렸을 수 있다. 사용자 데이터는 사용자 활동의 일부만 캡처하고 사용자의 참여와 만족을 간접적으로 측정한다. 예를 들어, 사용자가 영상 전체를 시청했다는 사실만으로는 해당 영상을 실제로 좋아한다고 하기에는 충분하지 않다. 영상 길이와 사용자 참여 수준은 시그널 품질에 영향을 미친다. 또한 암시적인 활동 데이터는 비동기적으로 생성되며 불완전할 수 있다. 예를 들어 우리가 사용자의 긴 시청에 대한 알림을 받기 전 브라우저를 닫는 등..

 

2.2 관련 영상

추천 시스템의 구성 요소 중 하나는 영상(vi)에서 유사한 영상 또는 관련 영상set(Ri)로 매핑하는 것이다. 우리는 '유사한 영상'을 '사용자가 주어진 seed 영상(v)을 본 후 볼 가능성이 높은 영상' 으로 정의한다. 매핑을 계산하기 위해 연관 규칙 마이닝 또는 공동 방문 횟수라고 알려진 기술을 사용한다. 사이트의 사용자 시청 활동 세션을 고려한다. 주어진 시간(일반적으로 24시간) 동안 각 비디오 쌍(vi, vj)이 세션 내에서 얼마나 자주 공동 시청 되었는지를 계산한다. 이러한 공동 방문 횟수를 cij라고 표시하고 영상 vj와 base 영상인 vi의 관련성 점수를 다음과 같이 정의한다.

(1)

여기서 ci와 cj는 각각 영상 vi, vj에 대한 모든 세션의 총 시청 횟수이다. f(vi, vj )는 seed 영상과 후보 영상의 "전반적인 인기"를 모두 고려한 정규화 함수이다. 가장 간단한 표준화 함수 중 하나는 단순히 영상의 전반적인 인기도 (시청횟수)의 곱으로 나누는것이다 : f(vi, vj ) = ci · cj. 다른 정규화 함수도 가능하다. 이것에 대해선 다른 논문을 참고하라고 쓰여있다.

정규화를 위해 카디널리티의 단순 곱을 사용할 때, ci는 모든 후보 관련 영상에 대해 동일하며, 그것이 우리의 설정을 무시할 수 있기때문에 우리는 후보영상의 전반적인 인기(cj)에 대해서만 표준화한다. 이것은 기본적으로 인기있는 영상보다 덜 인기있는 영상을 선호한다. 

 

그런다음 점수 (vi, vj)별로 순위를 매긴 상위 N개의 후보 영상을 특정 seed영상 vi에 대한 관련 영상 set Ri로 고른다. 상위 N개 영상만 선택하는 것 외에도 최소 점수 임계값을 적용한다. 전체 조회수(및 다른 영상과의 공동 방문 횟수)가 너무 적기 때문에 이러한 방식으로 신뢰할 수 있는 관련영상set을 계산할 수 없는 많은 영상들이 있다. 

 

이것은 간략한 설명이다. 실제로는 제출 편향, 노이즈 심한 시청 데이터 등 해결해야 할 추가 문제가 있다. 또한 영상 시청의 시퀀스 및 타임스탬프, 영상 메타데이터 등과 같은 공동 방문 횟수를 넘어서는 추가 데이터 소스도 사용할 수 있다. 관련 영상은 일련의 영상에 대한 방향 그래프를 유도하는 것으로 볼 수 있다. 각 비디오 쌍 (vi, vj)에 대해서 vi와 vj 사이에 변(edge)eij iff(if and only if) vj ∈ Ri이고, 이 변의 가중치는 (1)과 같다. 방향그래프로 나타낼수 있다는 뜻 같다... vi → vj 변의 가중치가 (1) 이라는 뜻이겠지..? 하고 넘어감

 

2.3 추천 후보 생성

개인화된 추천 사항을 계산하기 위해 관련 영상 연결 규칙을 사이트의 개인 활동과 결합한다.  여기에는 시청된 영상(잠재적으로 특정 임계값을 초과할 수 있음)과 명시적으로 즐겨찾기, 좋아요, 등급을 부여한, 재생목록에 추가된 영상이 모두 포함될 수 있다. 우리는 이 영상의 조합을 seed set 이라고 한다.

 

특정 seed set S에 대한 후보 추천을 얻기 위해 관련 영상 그래프의 변(edge)을 따라 확장한다: seed set의 각 영상 vi에 대해 관련 영상 Ri를 고려한다. 이러한 관련 영상 set의 결합을 C1이라 표현한다:

(2)

→ 사용자가 상호작용한 영상 조합을 seed set(S)으로 두고 S의 각 영상에 대한 관련영상(Ri)를 뽑아낸다. Ri들의 집합을 C1이라고 한다.

 

대부분의 경우 C1을 계산하는것은 흥미로운 추천 사항을 산출할 수 있을 만큼 크고 다양한 후보 추천 set을 생성하기에 충분하다. 그러나 실제로는 모든 영상의 관련 영상이 상당히 좁아서 seed 영상가 매우 유사한 다른 영상을 보여주는 경우가 많다. 이것은 사용자의 관심사에 가까운 컨텐츠를 추천한다는 목표는 달성하지만 사용자에게 완전히 새로운 동영상을 추천하지 못할 수 있다.

 

추천 범위를 넓히기 위해 관련 영상 그래프에 대해 제한적인 전이 폐쇄를 적용하여 후보 집합을 확장한다. Cn을 seed set 영상으로 부터 n거리 내에 도달 가능한 영상 집합으로 정의하도록 한다:

(3)

→ 예를들어 C2는 C1을 seed로 두고 Ri들을 구해서 합친것.. C2는 C1를 S로 둔 관련영상셋이다.

 

여기서 C0=S는 재귀적 정의의 기본 경우이다(식(2)와 같이 c1에 대한 동일한 정의를 산출). 그런 다음 추천 사항의 최종 후보 집합 Cfinal은 다음과 같다:

 

관련 영상 그래프의 높은 분기 계수로 인해 작은 seed set을 가진 사용자에게도 작은 거리를 확장했을 때 광범위하고 다양한 추천 사항 셋이 생성된다는 것을 발견했다. 후보 set의 각 영상은 하나 이상의 영상과 연결된다. 순위를 지정하고 사용자에게 추천에 대한 설명을 제공하기 위해 이러한 'seed 부터 후보까지의 연결'에 대해 추적한다.

 

→ 2.3에서는 추천 영상 후보 목록을 어떻게 만들고 확장하는지에 대해서 얘기해주고있다. 

 

2.4 랭킹

후보 생성 단계에서 일련의 후보 영상을 제작한 후 다양한 시그널을 사용하여 점수를 매기고 순위를 매긴다. 시그널은 크게 1) 영상 퀄리티, 2) 사용자 특수성, 3) 다양성 등 세 단계의 순위 매김에 따라 세 그룹으로 분류할 수 있다.

 

영상 퀄리티 시그널은 사용자와 상관없이 동영상이 재생될 가능성을 판단하는데 사용하는 시그널이다. 이것에는 조회수, 동영상 등급, 댓글, 좋아요 및 동영상 공유, 업로드 시간 등이 포함된다.

 

사용자 특수성 시그널은 사용자 특유의 취향과 선호도가 잘 맞는 동영상에 점수를 주기 위해 사용된다. 이를 위해 조회수, 조회 시간 등 사용자의 시청 이력에 있는 seed 영상의 속성을 고려한다.

 

이러한 시그널의 선형(linear) 조합을 사용하여 후보 영상의 순위 목록을 생성한다. 적은 수의 권장사항(4~60개)만 표시하므로 목록의 하위 집합을 선택해야한다. 가장 관련성이 높은 영상만 선택하는 대신 카테고리 전반에 걸쳐 관련성과 다양성 간의 균형을 위해 최적화한다. 사용자는 일반적으로 여러 다른 주제에 대해 서로 다른 시간에 관심을 가지기 때문에, 이 단계에서 서로 너무 유사한 영상을 제거하여 다양성을 높인다. 이것을 달성하는 한 가지 간단한 방법은 단일 seed 영상과 관련된 추천 수를 제한하거나 동일한 채널(업로더)의 추천 수를 제한하는 것이다. 주제 클러스터링 및 내용 분석을 기반으로 하는 보다 정교한 기술을 사용할 수도 있다.

 

→ 2.3의 추천 영상 후보 목록에 점수를 매기고 순위를 매기는 단계이다. 사용자의 취향에 맞으면서도 너무 한가지 주제에만 편향된 추천을 하지 않도록 다양성을 준다

 

2.5 사용자 인터페이스

추천 사항의 표시는 전체 사용자 경험의 중요한 부분이다. 그림1은 현재 유튜브 홈페이지에 추천이 표시되는 방식을 보여준다. 주목할 가치가 있는 몇 가지 기능이 있다. 첫째, 모든 추천 동영상은 미리보기 이미지와 제목(잘릴수 있음), 동영상의 연령(업로드한지 얼마나 된 동영상인지 뭐 그런거겠쥬?) 및 인기도에 대한 정보와 함께 표시된다. 이는 홈페이지의 다른 섹션과 유사하며 사용자가 영상에 관심이 있는지 여부를 빠르게 결정할 수 있도록 도와준다. 또한 추천 사항을 유도한 seed 영상에 대한 링크와 함께 설명을 추가한다. 마지막으로, 사용자가 홈페이지에서 보고 싶은 추천의 수와 위치를 제어할 수 있다.

 

그림1

 

섹션 2.4에서 언급한 바와 같이, 우리는 추천 사항의 순위 목록을 계산하지만 하위 집합은 서비스 시에만 표시한다. 따라서 기본 추천 사항을 다시 계산하지 않았더라도 사용자가 사이트에 돌아올 때마다 이전에 볼 수 없던 새로운 추천 사항을 제공할 수 있다. 

 

2.6 시스템 구현

우리는 추천 사항에 대한 on-demand 계산보다 배치 중심의 사전 계산 접근 방식을 선택했다. 이는 추천 사항 생성 단계에서 충분한 양의 CPU 리소스로 많은 양의 데이터에 엑세스 할 수 있도록 하는 동시에 사전 생성된 추천 사항을 매우 맞은 대기 시간으로 제공할 수 있다는 장점이 있다. 이 접근 방식의 가장 중요한 단점은 추천 사항 데이터셋을 생성하고 제공하는 사이의 지연이다. 추천 사항 생성을 파이프라인화하고 하루에 여러 번 데이터셋을 업데이트하여 이를 완화한다.

 

유튜브 추천 시스템의 실제 구현은 1) 데이터 수집, 2) 추천 생성, 3) 추천 서비스 의 세 부분으로 나눌 수 있다. 앞서 섹션 2.1에서 언급한 raw 데이터 신호는 처음에 유튜브 로그에 저장된다. 이러한 로그는 처리되고 시그널이 추출된 다음 사용자별로 Bigtable에 저장된다. 우리는 현재 수백만명의 사용자와 수백억개의 활동 이벤트를 처리하고 있으며 총 공간은 수 테라바이트에 달한다.

 

추천은 섹션2에서 설명한대로 사용자/영상 그래프를 통해 누적되고 점수를 매기는 일련의 맵리듀스 연산을 통해 생성된다.

 

생성된 데이터셋 크기는 비교적 작으며 (기가바이트 단위) 단순화 된 읽기 전용 Bigtable 서버를 통해 유튜브 웹 서버에 쉽게 제공될 수 있다. 추천 요청을 완료하는 데 걸리는 시간은 대부분 네트워크 전송 시간에 의해 좌우된다.

 

 

3. 평가

우리 시스템에서는 A/B 테스트를 통한 실시간 평가를 추천 시스템의 성능을 평가하는 주요 방법으로 사용한다. 이 방법에서 라이브 트래픽은 한 그룹이 제어 또는 기준 역할을 하고 다른 그룹이 새로운 기능, 데이터 또는 UI에 노출되는 별개의 그룹으로 전환된다. 그런 다음 미리 정의된 메트릭셋에 대해 서로 비교하고 다른 요소를 제거하기 위해 다른 기간 동안 스왑할 수 있다. 이 접근 방식의 장점은 평가가 실제 웹사이트 UI의 컨텍스트에서 이루어진다는 것이다.

→ 몽말인지 완벽하게는 모르겠지만 A/B 테스트를 한다는거시다...

 

또한 여러 실험을 병렬로 실행하여 모든 실험에 대한 빠른 피드백을 얻을 수 있다. 단점은 모든 실험이 비교를 위해 사용될 수 있는 합리적인 통제력을 가지는 것이 아니며, 사용자 집단은 통계적으로 유의한 결과를 적시에 달성하기에 충분한 트래픽을 가져야 하며, 주관적 목표의 평가는 사전 정의된 메트릭의 비교적 작은 집합에 대한 해석으로 제한된다는 것이다.

 

추천 품질을 평가하기 위해 다양한 측정 항목을 조합하여 사용한다. 우리가 고려하는 기본 측정 항목에는 클릭률(CTR), long CTR(동영상의 상당 부분을 시청하는 것으로 이어진 클릭수만 계산), 세션 길이, 긴 시청을 하기까지 걸린 시간, 추천사항 포함 범위(로그인 유저 비율)가 포함된다. 우리는 이러한 메트릭스를 사용하여 시스템의 성능을 지속적으로 추적하고 실시간 트래픽에 대한 시스템 변경을 평가한다.

 

 

4. 결과

추천 기능은 1년 이상 유튜브 홈페이지의 일부였으며 명시된 목표와 관련하여 매우 성공적이였다. 예를 들어 추천은 홈페이지에서 발생한 모든 동영상 클릭의 60%를 차지한다.

 

추천의 성능을 홈페이지의 다른 모듈과 비교하면 표시 편향이 발생한다(추천은 기본적으로 맨 위에 배치된다는 점). 이를 조정하기 위해 '찾아보기' 페이지의 CTR 측정 항목을 살펴보고 추천 항목을 알고리즘으로 생성된 다른 동영상셋과 비교한다: a) 가장 많이 본 동영상 - 하루에 가장 많은 조회수를 기록한 동영상. b) 인기 동영상 - 시청자가 즐겨찾기 컬렉션에 추가한 동영상, c) 최고 평점 - 하루에 가장 많은 좋아요를 받은 동영상

 

21일동안 이 섹션에 대한 CTR을 측정했다. 전반적으로 가장 많이 본 동영상은 전체 기간 동안 평균을 냈을 때 가장 많이 본 페이지의 207%에서 수행되며, 인기 동영상 및 최고 평점은 비슷한 수준 또는 가장 많이 본 기준 이하에서 수행된다. 그림2는 3주동안 상대적 CTR이 어떻게 변화하는지 보여준다.

 

 


 

유튜브 추천 시스템은 후보 생성과 랭킹 두 단계로 나누어져있다는 것을 알 수 있었다... 

뒷 부분은 날림으로 읽어서 사실 잘 모르겠지만 일단 2016년에 나온 후속 논문을 정리해봐야지... 

반응형
Comments