Netflix의 research scientist 저자들이 작성한 논문 “Deep learning for recommender systems: A Netflix case study” 리뷰입니다.
추천시스템 알고리즘 역사에 큰 한 획을 그은 기업인 Netflix의 연구팀에서 퍼블리시한 논문인 만큼, 그들의 struggle과 achievement를 간접적으로 느끼며 가볍게(?) 읽어보기에 좋은 아티클이었습니다.
Introduction
지난 수 년간 딥러닝은 NLP, CV와 같은 여러 분야에서 빛을 발했는데요, 추천시스템 분야에서는 상대적으로 그 시기가 늦게 찾아왔던 것 같습니다. 어떤 태스크에서는 딥러닝을 적용하는 것이 좋은 performance를 낸 반면, 어떤 태스크에서는 여전히 오히려 전통적인 방법이 더 효과적일 정도로, 추천시스템은 NLP나 CV 분야에 비해 난해한 부분들이 확실히 있는 것 같습니다. 이 논문에서는 실제 Netflix의 연구자들이 현업에서 마주친 딥러닝 기반 추천시스템 개발의 어려움과 성과에 대해 직접 진행한 case study를 소개하였습니다. 추천시스템에도 다양한 태스크들이 존재하는데, Netflix에서도 마찬가지로 다양한 추천 태스크를 서로 다른 모델 아키텍처로 풀어왔다고 합니다. 이번 논문 리뷰를 통해, Netflix의 연구자들은 어떤 어려움들을 극복하여 딥러닝을 성공적으로 추천 분야에 적용해낼 수 있었는지 알아보도록 하겠습니다.
Recommendations at Netflix
Netflix 추천시스템의 main goal은 당연히도 사용자들이 클릭할 법한 컨텐츠를 찾아주는 것이겠죠. 사람들이 Netflix라는 서비스를 선택하고, 멤버쉽을 유지하는 데에는 여러가지 요인이 있겠지만, “추천시스템이 일을 얼마나 잘 하느냐”는 곧 “얼마나 많은 사람들이 멤버쉽을 유지하느냐”에서 어느정도 측정이 가능하다고 저자들은 이야기합니다. 추천시스템이 다른 분야 (NLP, CV, etc.) 보다 유독 어려운 이유는 사람마다 취향과 행동 패턴이 매우 상이하다는 데에서 짐작해볼 수 있습니다. 가령, 사진에서 개와 고양이를 구분하는 CV 태스크에서는 누구에게나 동일한 정답이 정해져 있지만, 추천시스템에서 어떤 컨텐츠를 추천할지는 사람마다 정답이 다 다를 수 있다는 것입니다.
그림 1을 보겠습니다. Netflix의 홈페이지에는 사실 여러가지 추천시스템들이 적용되어 있는데요, 예를 들어 1번의 경우, 사용자가 가장 보고싶어할 법한 컨텐츠를 video 형태로 띄워주는 공간이고, 5번의 경우 Netflix에서 최근 유행하는 컨텐츠들을 나열해주는 공간이며, 2번은 추천시스템 알고리즘이 적용된 검색 엔진이 자리하고 있습니다.
Modeling Approaches
논문에서는 Netflix에 적용된 추천시스템 알고리즘들을 크게 두 카테고리로 나누어 소개합니다. 각각 Bag-of items 카테고리와 Sequential model 카테고리입니다. 주목할 만한 특징은 여러 heterogeneous 특징들을 사용할 때 딥러닝 기반의 알고리즘이 좋은 성능을 보인 반면, user-item interaction 데이터만 사용될 때 (데이터가 단순할 때)에는 간단한 전통적인 모델들의 성능이 뒤쳐지지 않았다는 점입니다.
Bag-of-items Model
Bag-of-items는 NLP의 bag-of-words를 떠올리시면 쉽게 이해가 되실텐데요, 아이템의 순서와 상관없이 모든 아이템 (컨텐츠)들을 뭉텅이로 하나의 그룹으로 여기는 방식입니다. 훈련 데이터는 사용자-아이템 행렬로 나타낼 수 있으며, Autoencoder, 행렬 분해, 이웃 기반 방법 등 비교적 전통적인 알고리즘들에 적용할 수 있습니다.
실제로 Netflix Prize Competition (Bennet and Lanning 2007)에서 bag-of-items 방법론들이 상당히 많이 연구되었으며 흥미롭게도 딥러닝 기반 방법들과의 연관성도 많았다고 합니다. Bag-of-items 방식이 Netflix 추천시스템에서 효과적일 수 있는 이유는, (시리즈물이 아닌 이상) 비디오 데이터가 (NLP의 text data 등과 비교했을 때) 상대적으로 순서에 덜 민감하기 때문이라고 저자들은 이야기하고 있습니다.
Sequential Models
Bag-of-items 형태의 데이터는 구축하고 사용하기에 편리하긴 하지만, 아무래도 사용자의 시청 이력 순서를 고려했을 때 보다 복잡한 패턴들을 학습하고 좋은 추천을 제공할 수 있겠죠. 따라서 추천시스템에도 NLP의 순차 모델들을 적용한 연구가 많았는데, NLP에서 next word를 예측할 때, 추천시스템에서는 next item을 에측합니다.
실제 Netflix 서비스에서 많은 sub-task들은 bag-of-item 방법만으로도 충분하지만, 일부 복잡한 sub-task에는 순차 방법론의 이점이 많았다고 합니다. 연구팀에서는 RNN 모델의 일종인 LSTM, GRU를 비롯해 Transformer 아키텍처 기반인 BERT 등 다양한 모델들을 추천시스템에 적용시켰고, 특히 Transformer의 attention 매커니즘은 추천의 정확도를 향상시켰을 뿐만 아니라 추천 결과에 어느 정도의 ‘설명력’까지 제공해주는 흥미로운 결과를 얻었다고 합니다.
Adding Heterogeneous Features
연구진들은 한발 앞서 나가 “전통적인” 알고리즘들이 해내기 어려운 일들이 무엇이고, 딥러닝 알고리즘이 잠재적으로 해낼 수 있는 일이 무엇이 있을지 고민해 보았습니다. 결론은 딥러닝은 사용자의 implicit/explicit 피드백 이상의 추가적인 information으로부터 새로운 뭔가를 더 뽑아내지 않을까 하는 가설이었고, 많은 실험을 통해 신중하게 선정된 heterogeneous feature를 활용했을 때 추천시스템의 정확도가 크게 향상되었다고 합니다.
가령, time feature을 활용했을 때 딥러닝 모델은 seasonal information이나 cyclic element를 추가적으로 학습할 수 있게 되었습니다. Time 특성 활용의 유용함을 알게되자, 연구진은 time feature을 다양한 setting으로 설계하여 baseline sequence prediction과 비교하는 실험을 진행하였습니다.
그림 3에서 보시다시피, offline evaluation 결과 특히 continuous-time feature을 활용했을 때 baseline에서 크게 향상한 성능을 관찰할 수 있었습니다.
Discussions & Others
- 데이터의 중요성: 추천시스템 알고리즘 그 자체 만큼이나 중요한 것은 데이터입니다. 데이터가 user-item interaction 정보만 가지고 있는지, user feature, item feature과 같은 side information, 또는 contextual information까지 포함하고 있는지에 따라 사용하고 개발할 수 있는 추천시스템 알고리즘 범위가 크게 달라질 수 있습니다.
- Bias 문제: 컨텐츠를 띄워주는 위치에서 발생하는 presentation/position bias를 포함한 다양한 bias들은 딥러닝 기반 추천시스템 학습을 어렵게 만드는 요소가 되기도 합니다.
- Offline metrics에서 evlauation을 통과한 방법들을 가지고 A/B 테스트를 했을 때 언제나 같은 좋은 결과가 나오진 않기에, 새로운 (online 세팅에서의 결과와 비슷할만한) offline metrics을 고안해내는 것 또한 매우 중요하다고 합니다.
마치며
추천시스템 분야의 발전에 어찌 보면 가장 크게 기여한 기업인 Netflix 연구팀의 struggle과 achievement를 간접적으로 경험할 수 있어서 재미있는 논문이었습니다. 테크니컬한 깊은 내용이 많지는 않아서, 평소 AI에 관심있는 비전공자 분들도 충분히 얻어갈 만한 내용이 많은 아티클이 아닌가 싶습니다. 앞으로 추천시스템 연구의 패러다임이 어떤 변화를 겪을지 궁금하기도 합니다. Netflix가 추천시스템으로 멤버쉽 가입을 늘리는 데 더 도움 줄 space가 얼마나 남아있을 지 궁금하기도 하고요.