자주부탁드립니다.현재 Bb7942는 여러 OTT 서비스 중 유일하게 넷플릭스 하나만 구독해 사용하고 있습니다. 다양한 OTT 서비스가 존재하지만 미디어에 대한 노출을 줄이기 위해 최소화의 일환으로 하나만 이용하고 있는데, 최근 둘째 딸과 드라마를 보는 데 열중하다 보니 제 나름의 넷플릭스 사용시간이 늘어나면서 문득 넷플릭스가 사용자에게 어떤 방식으로 미디어를 노출하고 추천하는지 궁금해서 찾아봤는데 원문을 해석하고 정리해봐도 솔직히 어렵네요. 그래서 미디어는 생각하지 않고 즐기는 게 맞는 것 같습니다.하지만 준비를 했으니 혹시 궁금하신 분이 계실까 봐 ‘넷플릭스 추천 시스템의 심층적 분석’이라는 제목으로 게시해봅니다.
Deep Dive in to Netflix’s Recommender System 넷플릭스가 어떻게 개인화를 통해 80% 스트리밍 시간을 달성했는지에 대해 설명합니다.
© sunder_2k25, 출처 Unsplash 넷플릭스는 영화와 TV 쇼의 스트리밍 서비스로 오늘날 대부분의 사람들에게 동의어입니다. 하지만 대부분의 사람들이 모르는 것은 넷플릭스가 1990년대 후반 구독 기반 모델로 시작해 미국 민가에 DVD를 게시했다는 것입니다.
넷플릭스상(The Networklix Prize) 2000년 넷플릭스는 개인화된 영화 추천을 도입했고 2006년에는 백만달러의 상금이 걸린 기계학습 및 데이터 마이닝 대회인 넷플릭스상을 시작했습니다. 당시 넷플릭스는 RMSE(rootmeansquareerror)가 0.9525명인 자체 추천 시스템인 Cinematch를 사용해 이 기준을 10% 이상 넘기도록 도전했습니다. 목표를 달성하거나 1년 후 목표에 근접한 팀에게는 상금이 주어집니다.
1년 뒤인 2007년 진보상 수상자는 매트릭스 인수분해(Matrix Factorization, 일명 SVD)와 제한된 볼츠만 기계(RBM)의 선형 조합을 사용하여 RMSE 0.88을 달성했습니다. 넷플릭스는 소스코드에 적응한 뒤 이런 알고리즘을 제작에 투입했습니다. 주목할 점은 2009년 일부 팀이 0.8567의 RMSE를 달성했음에도 회사는 최소한의 정확도 향상을 위해 필요한 엔지니어링 노력으로 이러한 알고리즘을 생산에 투입하지 않았다는 것입니다. 이는 실제 추천 시스템에서 중요한 점이며 모델 개선과 엔지니어링 노력 사이에는 항상 긍정적인 관계가 있습니다.
스트리밍-새로운 소비 방식
넷플릭스가 넷플릭스 상부에서 개선된 모델을 통합하지 않은 더 중요한 이유는 2007년 스트리밍을 도입했기 때문입니다. 스트리밍으로 인해 데이터의 양이 급격히 증가했습니다. 추천 시스템이 권장사항을 생성하고 데이터를 수집하는 방식을 바꿔야 합니다.
넷플릭스는 2020년 미국에서 DVD를 게시하는 메일 서비스에서 1억8,280만명의 가입자를 보유한 글로벌 스트리밍 서비스로 탈바꿈했습니다. 결과적으로 이들 추천자 시스템은 등급을 예측하는 회귀 문제에서 순위 문제, 페이지 생성 문제, 사용자 경험을 극대화하는 문제(스트리밍 시간을 극대화하는 것, 즉 개인화할 수 있는 모든 것을 개인화하는 것으로 정의됨)로 변모하였습니다.이 글에서 다루는 주요 질문은 다음과 같습니다.
넷플릭스는 어떤 추천 시스템을 사용하고 있나요?
비즈니스로서의 넷플릭스
넷플릭스는 구독 기반의 모델을 가지고 있습니다.한마디로 넷플릭스 회원 수가 많을수록 수익은 더 높아지는 겁니다.
수익은 세 가지 기능으로 볼 수 있습니다.1. 신규 사용자 획득률 2. 취소율입니다.3. 이전 멤버가 재가입하는 속도입니다.
넷플릭스 추천 시스템은 얼마나 중요한가요?
스트리밍 시간의 80%는 넷플릭스 추천 시스템을 통해 달성되는데 이는 매우 인상적인 수치입니다. 또한 넷플릭스는 보존률을 개선하는 사용자 경험을 창출하고 고객 확보 비용(2016년 기준 연간 약 1억달러)을 절감할 필요가 있다고 믿고 있습니다.
넷플릭스 추천인 시스템 넷플릭스는 타이틀 순위를 어떻게 매기나요?
넷플릭스는 2단계 행 기반 순위 시스템을 사용하고 있으며 여기서 순위는 다음과 같습니다.1. 각 행 내에서 (왼쪽에서 가장 강력한 권장사항) 2. 전체 행 (최상위에 가장 강력한 권장사항)에 걸쳐 있습니다.
각 행은 특정 주제(예: Top10, Trending, Horizon 등)를 강조 표시하며 일반적으로 하나의 알고리즘을 사용하여 생성됩니다. 각 회원의 홈페이지는 회원이 사용하는 기기에 따라 최대 75개 항목으로 구성된 약 40개 행으로 구성되어 있습니다.
왜 행복할까요?
장점은 두 가지 관점에서 볼 수 있습니다.1) 유사 항목의 행을 제시할 때 보다 일관성 있고 그 범주에 속하는 항목을 시청하는 것에 관심이 있는지를 결정할 수 있습니다.2) 회사에서는 스크롤 다운을 하면서 줄 위에서 오른쪽으로 스크롤하는 것이 더 쉽습니다.재미있는 사실: 여러분은 예술 작품이 여러분의 프로필과 취향에 따라 개인화된다는 것을 알고 있었나요?어떤 알고리즘이 사용됩니까?넷플릭스는 각 모델의 아키텍처에 대한 구체적인 내용은 명시되어 있지 않지만 논문에서 언급된 다양한 랭커를 사용합니다. 다음은 이러한 기능에 대한 요약입니다.
PVR(Personalized Video Ranking) 알고리즘은 일반적으로 특정 기준(예: 폭력적인 텔레비전 프로그램, 미국의 텔레비전 프로그램, 로맨스 등)으로 카탈로그를 필터링하는 범용 알고리즘으로 사용자 기능 및 인기를 포함하는 부가 기능과 결합됩니다.
Example of PVR generated items
상위 N비디오 순위 지정자(Top-NVideo Ranker) PVR과 비슷하지만 순위의 맨 위만 보고 전체 카탈로그를 봅니다.카탈로그 순위(예: MAP@K, NDCG)의 헤드를 보는 메트릭을 사용하여 매우 적합합니다.
Example of Top-Nranker generated titles Trending Now Ranker 이 알고리즘은 넷플릭스가 강력한 예측 변수로 추론하는 시간적 경향을 포착합니다. 이러한 단기 동향은 몇 분부터 며칠까지 다양해질 수 있습니다. 일반적으로 다음과 같은 이벤트/트렌드가 있습니다.1. 계절적 경향이 있고 반복되는 이벤트 (예: 발렌타인데이는 소비되는 로맨스 비디오의 증가로 이어집니다) 2. 일회성 단기 사건 (예: 코로나 바이러스 또는 기타 재해로 인해 해당 사건에 대한 다큐멘터리에 대한 단기적인 관심으로 이어집니다)
Example of Trending Nowranker generated titles 지속적인 랭커 감시(Continue Watching Ranker) 알고리즘은 구성원이 사용하였으나 완료되지 않은 항목을 다음과 같이 살펴봅니다.1. 에피소드 콘텐츠(예: 드라마 시리즈) 2. 에피소드가 아닌 콘텐츠로 작은 한 조각으로 소비할 수 있습니다(예: 절반 정도 완성된 영화, Black Mirror와 같이 에피소드로 독립된 시리즈).
알고리즘은 구성원이 계속 감시할 확률을 계산하고 서로 다른 상황인식 신호(예: 시청 후 경과한 시간, 포기 시점, 감시 장치 등)를 포함합니다.
Example of Continue Wathing ranker generated titles
저스틴 바실리코의 프레젠테이션에서 그는 시간에 민감한 시퀀스 예측에 RNN을 사용하는 것에 대해 발표했는데, 이 알고리즘에는 RN이 사용될 것이라고 생각합니다. 그는 넷플릭스가 상황 정보와 함께 특정 멤버의 과거 플레이를 사용하고 이를 이용해 멤버의 다음 플레이가 무엇인지 예측할 수 있도록 고안했습니다. 특히 연속 시간을 입력하여 이산 시간 컨텍스트와 함께 사용하는 것이 가장 좋습니다.
비디오-비디오 유사성 랭커. (BYWBecause you watched) 이 알고리즘은 기본적으로 콘텐츠 기반 필터링 알고리즘과 비슷합니다.구성원에 의해 소비된 항목을 기준으로 알고리즘은 (항목-항목 유사성 매트릭스를 사용하여) 다른 유사 항목을 계산하고 가장 유사한 항목을 반환합니다. 다른 알고리즘 중에서 이 알고리즘은 다른 측면 기능이 사용되지 않기 때문에 개인화되어 있지 않습니다. 그러나 특정 항목의 유사항목을 회원 홈페이지(상세한 내용은 아래 페이지 작성)에 표시하는 것은 의식적인 선택이기 때문에 개인화 되고 있습니다.
Example of BYW generated titles
행 생성 프로세스(Row Generation Process)
상기 각 알고리즘은 아래 이미지에 표시된 행 생성 프로세스를 거칩니다.예를 들어 PVR이 로맨스 제목을 보고 있다면 이 장르에 맞는 후보자를 찾는 동시에 한 줄의 발표(예: 멤버들이 이전에 본 적이 있는 로맨스 영화)를 뒷받침하는 증거를 내놓게 됩니다. 이 증거 선택 알고리즘은 위에서 설명한 다른 모든 순위 알고리즘에 통합(또는 함께 사용)되어 보다 체계적인 항목 목록 순위를 만드는 것으로 알고 있습니다(아래 넷플릭스 모델 워크플로우 이미지 참조).이 증거 선택 알고리즘은 “Netflix 상단의 예상별 등급, 개요, 비디오에 대한 표시된 다른 사실(예: 수상, 캐스팅 또는 기타 메타데이터), [Netflix]가 [그들의] 추천을 지원하기 위해 사용하는 이미지 등 페이지 좌측 상단에 표시된 모든 정보를 사용합니다. 행 및 UI 의 다른 위치에 있습니다. 다섯 가지 알고리즘은 각각 아래 그림과 같이 동일한 행 생성 프로세스를 거칩니다.
페이지 작성(PageGeneration)
알고리즘이 후보 행을 생성한 후(이미 각 행 벡터 내에서 순위가 매겨진) 넷플릭스는 이 10,000 행 중에서 표시할 행을 어떻게 결정합니까?
역사적으로 넷플릭스는 페이지 생성 문제, 즉 귀중한 스크린 영역을 놓고 경쟁하는 수많은 미디어 경쟁 문제를 해결하기 위해 템플릿 기반 접근 방식을 사용했습니다. 정확성뿐만 아니라 다양성, 접근성, 안정성을 동시에 제공하는 데 초점을 맞춘 작업입니다. 다른 고려사항으로는 하드웨어 기능(사용중인 장치)과 언뜻 스크롤할 때 표시되는 행/열이 있습니다.
넷플릭스가 해당 세션에서 이용자가 보고 싶은 것을 정확히 예측하면서도 중간에 빠진 영상을 받고 싶어질 수도 있다는 점을 잊지 말아야 한다는 취지입니다. 아울러 새로운 것을 제공함으로써 카탈로그의 깊이를 강조하고 구성원 지역에서 진행 중인 경향을 파악하고자 합니다. 마지막으로 멤버들이 넷플릭스와 잠시 교류하며 특정 방식으로 페이지를 탐색하는 데 익숙할 때 안정성이 필요합니다.
이러한 모든 요구 사항을 통해 템플릿 기반 접근 방식이 항상 충족되어야 할 몇 가지 고정된 기준 세트를 가질 수 있기 때문에 처음부터 매우 잘 작동하는 이유를 알 수 있습니다. 하지만 그런 많은 규칙들이 시행되면서 자연스럽게 넷플릭스는 좋은 회원 경험을 제공한다는 측면에서 지역 최적지에 도달했습니다.
그럼 이행 순위 문제에 어떻게 접근해야 할까요?
행기반접근법
행 기반 접근 방법에서는 기존 권장 사항 또는 순위 지정 방법을 사용하여 각 행에 점수를 매기고 해당 점수를 기준으로 순위를 매깁니다. 이 접근법은 비교적 빠를지도 모르지만 다양성이 부족합니다. 구성원들은 일반적으로 자신의 관심사와 일치하는 행들로 가득 찬 페이지를 보게 되는데, 행 단위도 매우 비슷할 수 있습니다. 그렇다면 우리는 다양성을 어떻게 통합해야 할까요?
단계적 접근 방식
각 행이 위의 방법과 같이 점수를 매기는 단계적 접근법을 사용하는 것이 행 상승 접근 방식의 개선입니다. 그러나 행은 첫 번째 행부터 순차적으로 선택되며 행을 선택할 때마다 페이지에 대해 이미 선택된 이전 항목과 이전 행 둘 사이의 관계를 고려하여 다음 행이 다시 계산됩니다. 이것은 단순한 욕심쟁이 단계적 접근방식입니다.각 행에 대한 점수를 계산할 때 다음 k행을 고려하는 k-row 예측 접근법을 사용하면 이 문제를 개선할 수 있습니다. 그러나 이러한 접근 방식 중 어느 것도 글로벌 최적화를 달성하지는 못할 것입니다.
머신러닝 어프로치
넷플릭스가 사용하는 해결책과 접근 방식은 머신러닝(Machine Learning)으로 실제 본 내용, 상호작용한 방법, 플레이한 내용 등 회원을 위해 만든 홈페이지의 역사적 정보를 사용하여 모델을 교육하는 것을 목표로 합니다.
물론 이 알고리즘은 홈페이지에서 특정 행을 나타낼 수 있는 많은 기능과 방법이 있습니다. 항목 메타데이터를 모두 내장해 집계하거나 위치별로 인덱스 하는 것 만큼 간단합니다. 페이지를 나타내는 데 어떤 기능이 사용되든 주요 목표는 가상의 페이지를 생성하고 사용자가 어떤 항목과 상호작용했는지 확인하는 것입니다. 그리고 Precision@m-by-n 및 Recall@m-by-n과 같은 페이지 수준의 메트릭을 사용하여 점수를 매깁니다(Precision@k 및 Recall@k의 적응이지만 2차원 공간에 있다).
콜드스타트(Cold-Start), 구축 및 빅데이터
콜드 스타트 문제
오래된 콜드 스타트 문제는 넷플릭스도 가지고 있습니다.전통적으로 넷플릭스는 새로운 회원들에게 추천을 ‘점프스타트’하기 위한 설문조사를 작성하도록 요청함으로써 일부 사용자 선호도 정보를 얻음으로써 이를 억제하고자 노력하고 있습니다. 이 단계를 건너뛰는 경우 권장 엔진은 다양하고 인기 있는 타이틀 집합을 제공합니다.
또한 최근 이 코로나19 기간 동안 넷플릭스 Party(Chrome 확장 기능)가 만들어졌고, 이 데이터들은 분석을 위해 넷플릭스로 재전송되기 때문에 이러한 콜드 스타트 문제를 억제하는 데 큰 영향을 미칠 것으로 보입니다.
쉽게 말해 넷플릭스는 1인 활동(최소한 넷플릭스가 감시할 수 있는 것)이었습니다. 집에서 혼자 볼 수도 있고 친구들과 볼 수도 있지만 넷플릭스는 당신이 누구와 물리적으로 보고 있는지 전혀 모릅니다. 넷플릭스 Party를 통해 넷플릭스는 잠재적으로 사용자와 상호작용한 사람에 대한 그래프를 생성할 수 있으며, 새로운 사용자에게도 권장하는 알고리즘과 같은 협업 필터링을 수행할 수 있습니다.
모두 A/Bout 테스트
오프라인 평가와 온라인 평가의 격차는 여전히 남아 있습니다. 오프라인 메트릭은 모델이 교육 데이터에 대해 얼마나 잘 수행되는지 평가하는 데 도움이 되지만 이러한 결과가 실제 사용자 경험(즉 총 감시 시간) 개선으로 이어진다는 보장은 없습니다. 이처럼 넷플릭스팀은 자신들이 구축한 이러한 새로운 알고리즘을 신속하게 테스트하기 위해 놀랍고 효율적인 A/B 테스트 프로세스를 실시하고 있습니다.
제어 및 테스트 그룹 선택 방법, A/B 테스트가 통계적으로 중요한지 여부(예: 전체 사용자 환경 개선), 제어/테스트 그룹 사이즈 선택, A/B 테스트에 사용할 메트릭 등 고려해야 할 변수가 많기 때문에 A/B 테스트 자체는 기술입니다.
기본적으로 오프라인 평가는 넷플릭스가 A/B 테스트에 모델을 투입하는 시기와 A/B 테스트에 사용할 모델을 결정하는 데 도움이 됩니다.
데이터, 데이터, 데이터, 기타 데이터
온라인 스트리밍을 통해 넷플릭스가 관리하고 접근할 수 있는 데이터는 무한합니다. 이 양의 데이터를 관리하는 것은 오프라인, 온라인 및 니어라인 컴퓨팅을 분리하는 올바른 아키텍처에서만 가능합니다.
오프라인 계산에서는 알고리즘이 완화된 타이밍 요구사항과 함께 일괄적으로 실행되기 때문에 데이터 양과 계산 복잡성에 대한 제한이 적습니다. 하지만 최신 데이터가 통합되지 않았기 때문에 업데이트 동안 오래된 데이터가 될 수 있습니다. 개인화된 아키텍처의 경우 온라인과 오프라인 컴퓨팅을 원활하게 결합하는 것이 중요한 문제입니다.
온라인 연산을 통해 우리는 최근의 사건과 사용자 상호작용에 대한 응답을 기대하고 따라서 실시간으로 그렇게 해야 합니다. 따라서 온라인 연산은 너무 복잡해서 계산 비용이 많이 들지 않습니다. 또한 사전 계산된 결과로 되돌리는 대체 메커니즘이 필요합니다.
니어라인 계산을 통해 온라인과 유사한 계산을 수행할 수 있지만 실시간으로 제공할 필요 없이 비동기적으로 사용할 수 있다는 점에서 두 접근방식 사이의 중간 타협점을 얻을 수 있습니다. 이는 회원이 영화를 관람하기 시작한 후 즉시 영화를 관람한 것을 반영하기 위해 추천사항을 업데이트하는 등 이벤트별로 보다 복잡한 처리를 할 수 있는 문을 열어줍니다. 이것은 증분 학습 알고리즘에 유용합니다.
다음은 넷플릭스의 상세 아키텍처 다이어그램입니다.
원본 출처 : towardsdatascience.com ‘Deep DiveintoNetflix’s Recommender System’
위의 아티클은 아래 카뷰에서도 확인하실 수 있습니다.http://pf.kakao.com/_xgzxlub 생활에 도움이 되는 자료가 축적되어 있는 공간 pf.kakao.com *카뷰 친구추천하신분 댓글에 친구추천번호와 링크 남겨주시면 맞춰드리겠습니다.