Posts

Showing posts with the label 추천시스템

유튜브 추천시스템 논문 리뷰 Part 2 - Deep Neural Networks for YouTube Recommendations (RecSys 2016)

Image
유튜브 추천시스템 논문 리뷰 Part 1 에서는 전통적인 데이터 마이닝을 기반으로 만들어진 2010년 버전의 유튜브 추천시스템을 소개했었습니다. 디버깅이 용이하고 알고리즘 구성도 간단해서 실무적으로 유용할 것 같은 시스템이었죠. 하지만 2010년대 들어서 딥러닝(Deep Learning)이 본격적으로 주목받게 되면서, 유튜브 추천시스템도 딥러닝 기반으로 전환하게 되었습니다. 오늘 리뷰할 논문은 2016년에 RecSys에 제출된 Deep Neural Networks for YouTube Recommendations 라는 논문인데, 구글에서 딥러닝을 사용해서 어떻게 유튜브 추천시스템을 구성했는지를 담고 있습니다. System Overview [그림 1] 유튜브 추천시스템의 전체적인 구성 이 논문에서 소개하는 딥러닝 기반 추천시스템도 기본 구조는 이전에 Part 1 에서 소개되었던 candidate generation -> ranking의 2단계 구조를 따릅니다. Part 1을 안보신 분들을 위해 간략하게 설명드리자면, candidate generation은 유저의 유튜브 활동 정보(이전에 시청했던 영상들의 ID, 검색 기록, 성별/연령/지역 등)를 collaborative filtering으로 분석해서 엄청나게 많은 유튜브 영상들 중에서 해당 유저가 좋아할 것 같은 영상들만  high-precision으로, 대략적으로만  선별해내는 작업을 말합니다. ranking 단계에서는 candidate generation 단계에서 대충 좁혀놓은 비디오들과 유저의 정보들을 좀 더  자세히 들여다보면서  유저의 선호도 점수를 추정하고 선호도 순으로 추천을 하게 되구요. candidate generation 단계를 따로 두는 이유는 ranking의 scalability를 개선하기 위해서입니다. ranking에 사용될 후보 영상들의 개수를 확 줄이지 않으면, 유튜브 정도로 추천 가능한 상품(영상)들이 많은 시...

유튜브 추천시스템 논문 리뷰 Part 1 - The Youtube Video Recommendation System (RecSys 2010)

Image
요즘 트렌드를 알고 싶다고 하면 유튜브를 빼놓고는 말하기 어렵습니다. VOD 시장에서 전통적으로 인기있었던 먹방, 겜방, 뷰티 방송이나 연예인 뮤비, 공연 영상 등은 기본이고, 최근에는 정치인들이 유튜브에 채널을 직접 개설하는 일도 늘어나고 있죠. 유튜브에 올라오는 영상들의 양과 종류에는 그야말로 한계가 없습니다. 대도서관이 운영하는 겜방 그렇다면 이렇게 다양한 종류의 콘텐츠가 끊임없이 올라오는 유튜브에서 발생하는 트래픽은 실제로 얼마나 될까요? 앱 분석업체인 WISEAPP에서 분석한 국내 2018년 11월 앱별 사용시간 통계를 한번 살펴보겠습니다. 2018년 11월 안드로이드 앱 총 사용시간 (출처: https://platum.kr/archives/112749) 유튜브의 사용시간은 317억 시간으로 소위 국민 앱이라는 카카오톡과 네이버를 압도합니다. 한국 국민 1명 당 하루 평균 대략 21분 정도 유튜브를 사용하고 있는 셈이죠. 유튜브 천하라는 말이 정말 피부로 와닿네요. 그런데 사람들이 유튜브를 이렇게 많이 쓰는 것은 단순히 유튜브에 재밌는 영상이 많이 올라오기 때문이 아니고, 이 영상들의 홍수 속에서 사용자들의 취향에 딱 맞는 영상을 골라내주기 때문입니다. 필자가 자기계발이나 재테크. 패션 관련 컨텐츠를 좋아해서 그런지 관련 영상이 많이 추천된다.  그렇다면 유튜브는 어떤 방식으로 이 어마어마한 영상들 중에서 사용자가 원하는 영상을 골라내는 걸까요? 심플하게는 Matrix Factorization을 이용한 Collaborative Filtering을 쓸 수 있겠지만, 비디오와 유저 수가 수백만을 가볍게 넘기는 유튜브 정도의 스케일이 되면 다음과 같은 문제들을 풀어야 하기 때문에 그것조차도 간단하지는 않습니다. Distributed Training 하나의 서버에 비디오/유저의 latent vector를 모두 올릴 경우 속도 저하나 메모리 부족 문제가 발생...