스포티파이는 어떻게 추천을 그렇게 잘하는 집이 되었을까?

You are how you listen
12 min readApr 15, 2021

--

스포티파이가 한국에 들어온지 두달이 되었습니다. 3년 전에 이미 한국 사업을 시작한 넷플릭스와 비교해보면, 2017년에 넷플릭스가 첫 등장했을 때 초기 가입자수가 10만명 미만이었다는 추정에 비해, 스포티파이는 한국 등장 한달만에 62만명(21년 2월, 코리안클릭 기준)의 MAU를 달성 했습니다. 물론 3개월 무료 요금제 덕이 있다곤 해도, 과연 무엇이 사람들을 끌어 당기는걸까요?

“어쩌면 그렇게 귀신 같이 내 취향인 곡들을 찝어 내는지 신기하다”

스포티파이의 차별화 포인트라고 한다면, 단연 추천을 이야기 하는 사람들이 많습니다. 음악 평론가들도, 일반인들도 거의 공통적인 의견들 입니다. 저희도 동의하는 바입니다. 아니, 플랫폼기업 중에 스포티파이보다 잘 하는 곳은 없을지도 모릅니다.

이쯤 되면 스포티파이의 추천 알고리즘에 대해 다들 궁금할 듯 싶습니다. 도대체 얼마나 대단한알고리즘을 사용하기에 스포티파이는 추천을 이렇게 잘할까요?

추천알고리즘 예1 : Collaborative Filtering

흔히 추천 알고리즘이라고 하면 Collaborative Filtering과 Contents Based Filtering이 아주 많이 알려져 있습니다. 두 알고리즘 모두 원리는 간단합니다. 자, 물건을 산다고 가정을 해 봅시다. 점심을 간단히 해결하고 싶은데, 라면과 콜라와 김치를 구입한 선녀라는 분이 있습니다. 그런데 선남씨도 간단히 점심을 해결하고 싶어 편의점에서 콜라와 라면을 구입 했습니다. 이 때 편의점 직원이 선남씨에게 “김치도 같이 드시면 맛있는데”라고 추천을 해 준다면, 선남씨도 김치를 땡겨 하지 않을까요? 그렇습니다. 구매기록이 유사한 사람들을 묶어 이들의 패턴대로 추천을 해 주는 방식이 1. Collaborative Filtering입니다.

Collaborative Filtering

추천알고리즘 예2 : Contents Based Filtering

2. Contents Based Filtering은 이름에서 유추가 가능하듯 컨텐츠 간의 유사도를 기반으로 추천을 해 주는 알고리즘입니다.

자, 우리 선남씨의 취향을 한번 볼까요? KPOP 걸그룹을 좋아 하나 봅니다. 소녀 감성이 물씬 풍기는 3인조 걸그룹, 4인조 걸그룹을 모두 좋아 하는군요. 비슷해 보이는 신인 4인조 걸그룹의 사진을 보여 주며 어떠냐고 물어 보면 취향저격이라고 하지 않을까요? 이런 형태로 추천을 해 주는 알고리즘이 Contents Based Filtering입니다.

Contents Based Filtering

이 두 알고리즘의 배경이 되는 발상과 아이디어는 매우 단순합니다만, 굉장히 강력한 힘을 발휘합니다. 이 두 알고리즘으로 미리 거대한 표를 만들어 놓고 이 표를 기반으로 적절한 추천을 제공해 주는 형태로 거의 모든 추천 시스템들이 운영됩니다. 추천의 끝판왕이라고 알려진 Netflix의 추천 알고리즘 역시 Collaborative Filtering과 Contents Based Filtering을 조합해서 제공 중입니다.

추천을 해내기 위해 생성되는 거대한 양의 표

추천알고리즘 예 3~6: 기타 등등

스포티파이는 BaRT(Bandits for Recommendations as Treatments)라는 추천 시스템을 가지고 있습니다. 이 시스템의 기반은 Collaborative Filtering과 Contents Based Filtering입니다. 여기에 스포티파이만의 “비장의 레시피”들이 추가되어 BaRT를 구성하고 있습니다. 이 비장의 레시피들이 가미 되어 BaRT를 구성하고 스포티파이만의 독특한 추천의 세계를 구성하고 있습니다.

그 레시피를 살펴 보면, 우선 알고리즘이 있습니다. 앞에서 다룬 Collaborative filtering과 Contents Based Filtering만의 조합이 아닙니다.

3. Logistic regression 등의 분류 알고리즘을 활용한 추천

4. Bayesian Statistics 같은 전통 통계학 : Bayesian Statistics는 굉장히 오래된 전통적 통계학의 일부로 사전 확률과 관측된 정보를 통해 사후 확률을 추정하는 이론입니다. 말이 어렵지만, 간단하게 현재 상태의 관찰을 통해 미래 행동을 확률로 예측할 수 있다 정도로 이해하면 좋을 것 같습니다

5. Natural Language Processing, Audio Modeling 등과 같은 Machine Learning 방법론

6. 알파고를 학습시켰던 Reinforcement learning : reinforcement learning은 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하도록 컴퓨터를 훈련 시키는 machine learning의 한 방법입니다.

특히 4.Bayesian Statistics 과 6.Reinforcement Learning을 간단히 짚고 넘어갈 필요가 있습니다. . 이 두가지가 왜 중요한 레시피일까요. 추천 시스템이 사용자 패턴의 현재에 집중할 수 있도록 지속적으로 변화를 이끌어 주는 알고리즘이기 때문입니다.

예컨대, 김치맛이 나는 단무지가 출시가 됐습니다. 공전의 대히트를 치다 보니 사람들이 콜라와 라면과 단무지를 사는 사람들이 갑작스레 늘어난다라고 가정을 해 보죠.

앞에서 말한 Collaborative Filtering과 Contents Based Filtering로 미리 만들어 놨다는 거대한 표를 생각해봅시다.

이게 자주 갱신을 하면 좋겠지만, 그렇지 못한 경우도 생깁니다. 어느 순간에 갑작스럽게 생긴 변화, 어떻게 해야 할까요? 거대한 표를 빨리 다시 만들어야 될까요? 가입자가 수백만, 수천만, 수억명인데요. 이럴때 Bayesian Statistics 과 Reinforcement Learning이 힘을 발합니다. 이 두 알고리즘이 원래 있던 표를 통계적으로 혹은 학습을 통해 조금씩 보정을 하기 시작합니다. “얼래 단무지 찾는 사람들이 늘어나네?”, “통계적으로 단무지 선택할 비율이 높아지는데?” 이렇게 생각한 추천 시스템은 원래 표에 있던 김치 대신 조금씩 단무지를 추천하는 방향으로 선회를 합니다.

스포티파이의 BaRT가 이런 형태로 다양한 알고리즘을 적절히 조합하여 구성되어 있기에 만족도 높은 추천 서비스를 제공하고 있습니다.

알고리즘보다 먼저 갖춰야할 신선한 재료, 데이터

스포티파이의 BaRT 시스템. 잘 만들어 놓은 것 같습니다. 하지만, BaRT 시스템과 더불어 스포티파이 추천의 또 하나의 거대한 레시피가 있습니다. 바로 데이터입니다.

“데이터는 다들 모으고 있는게 아닌가?”

이런 질문을 던지실 수도 있습니다. 하지만, 문제는 “정말 활용할 만한 양질의 데이터가 얼마나 있는가”입니다.

최근 AI와 Machine Learning, Deep Learning 등이 화두로 떠 오르며 데이터가 중요하다라는 말은 다들 들어 보셨을 거 같습니다. 컴퓨터가 학습을 잘해야 똑똑한 인공 지능을 가질텐데, 여기서 붙는 단서가 컴퓨터가 학습을 할 때 필요한 데이터가 방대하게 존재하는가, 입니다.

스포티파이는 서비스 초기부터 이 데이터의 확보와 정제에 심혈을 기울였습니다. 추천에 있어 데이터의 중요성이 엄청나기 때문입니다. 사용자가 음악 청취를 하며 일으키는 각종 이벤트들을 모두 수집하기 위해 초당 최대 200만개의 사용자 행동을 수집할 수 있는 구조를 설계하여 적용했습니다. 사용자가 플레이 버튼을 누르고 끝까지 듣는지, 얼마나 빨리 skip을 하는지, 어떤 곡들을 더 오래 듣는지 어떤 섹션에서 음악을 선택을 하여 듣는지, 이동 중에 듣는 것인지, 체류 하며 듣는 것인지 등등 사용자가 음악을 들으며 만들어내는 행동 하나하나를 모두 수집을 하고 있습니다.

“데이터를 잘, 많이 모은다는건 알겠어요. 근데 이런게 왜 추천을 하는데 중요하죠?”

데이터 모아 사용자의 청취 패턴을 파악할 수 있기 때문입니다. 추천한 곡을 잘 듣지 않고 skip을 한 채 넘어간다. 별로 선호하지 않는 곡일 가능성이 커지죠. 잘못 곡을 추천을 한 것이죠. 그런데 곡을 skip 한다는 행위 자체가 사용자가 어떤 상황에 있느냐에 따라서 그 의미가 달라질 가능성도 큽니다. 다시 우리 선남씨를 불러와 보겠습니다. 선남씨의 음악 취향은 소녀 감성의 걸그룹입니다. 출퇴근 길에는 항상 듣던 걸그룹들의 음악을 듣지만, 집중을 해야 될 시간에는 집중력을 높일 수 있는 잔잔한 클래식이나 뉴에이지 같은 음악을 찾습니다.

자, 우리 선남씨에게 추천이 들어갑니다. 최근 트로트 감성의 걸그룹이 뜨고 있네요. 선남씨가 걸그룹을 좋아 하는 걸 알기에 이 걸그룹을 추천 하면 선남씨는 어떻게 할까요? 소녀감성이 아니기에 skip을 할 가능성이 큽니다.

선남씨는 선남씨가 열심히 회사에서 근무를 할 시간입니다. 여기서 선남씨가 좋아하는 소녀 감성 걸그룹들의 신보를 추천을 합니다. 선남씨는 들을까요? 이 역시도 skip을 누를 가능성이 클 껍니다. 집중을 해야 될 시간이기에 소녀감성 걸그룹 음악 보다는 집중을 도와 주는 음악을 찾을 것이기 때문입니다. 사용자로부터 수집된 데이터와 context에 따라 똑같은 skip이라는 행동이 다른 양상으로 해석이 됩니다.

이렇듯 다양한 행동 양상과 주변 환경에 따른 추천을 달리 하려면 다양한 데이터의 수집과 정제,가공은 필수적입니다.

좋은 데이터 활용 레시피를 확보하는 M&A

스포티파이는 앞에서 언급한 바와 같이 데이터의 수집을 염두에 두고 서비스를 만들기도 하지만 부족한 부분에 대해서는 과감한 M&A를 집행하기도 합니다.

스포티파이가 인수한 데이터 관련 회사만 하더라도 Tunigo, Sonalytic, Seed Scientific, Echo Nest, Niland, Loudr, CrowdAlbum 외에도 수많은 데이터 관련 기업들을 인수 했습니다. 이들 대부분이 데이터를 수집하고, 정제하고, 활용하는데 관련된 회사들입니다. 심지어 정교한 날씨 데이터의 수집을 위해 AccuWeather(2017년)와 제휴를 하기 까지 했습니다.

대체 왜 막대한 금액을 들여 가며 알고리즘을 가진 기업 뿐만 아니라 데이터 수집, 가공, 정제 기업을 인수를 했을까요? 추천을 잘하고 싶다면, 그저 알고리즘을 잘 만드는 업체만 인수하면 되는게 아니었을까요?

답은 간단합니다. 데이터가 부실하면, 아무리 좋은 추천 알고리즘을 사용하더라도 그 품질이 매우 낮을 수 밖에 없다는 것을 경험적으로 체득하고, 이론적으로 습득을 했기 때문입니다. 알고리즘을 수행하는 기반에 되는 데이터를 확보하고 정제하는 과정을 생략하고, 사용자들이 만족할 수 있는 추천 서비스를 제공하기는 매우 어렵습니다. 인공지능 분야의 거장인 Andrew Ng 교수는 deeplearning.ai의 기고문에서 다음과 같이 언급하기도 했습니다.

“When a system isn’t performing well, many teams instinctually try to improve the Code. But for many practical applications, it’s more effective instead to focus on improving the Data.”

“If 80 percent of our work is data preparation, then ensuring data quality is the important work of a machine learning team.”

데이터를 준비하고, 데이터의 품질을 담보 하는 것을 Machine Learning 프로젝트에서 간과해서는 안될 가장 중요한 포인트로 이야기 하고 있습니다.

또 대부분의 팀이 AI 시스템이 제대로 동작하지 않으면 본능적으로 코드를 개선하려고 하지만 그것 보다는 결국 데이터 개선에 집중하는 것이 더 효과적이라는 이야기를 아울러 하고 있습니다.

어쩌면 스포티파이는 이러한 기본기에 충실하기 위해 많은 투자를 지속해왔기에 지금의 추천 시스템의 명성을 얻은 것일지 모릅니다.

오래 전부터 데이터 관련 업무를 하는 분들 사이에는 아래 같은 우스개 짤 들이 돌고 있습니다

“이상 : 데이터를 모아 Machine Learning 알고리즘으로 훈련 시켜서
자비스 만들면, 난 떼부자가 될 꺼야. 야호!!”
“현실 : 아..데이터를 모았는데 품질이 꽝이네? 데이터 다시 정제해야겠네..
알고리즘 적용했더니 성능이 안좋네? 데이터가 모자른가봐..
에고..데이터 더 모아야겠네..
음훼훼훼!! 드디어 완성! 난 떼돈 벌꺼야..!!
응? 꼭두 새벽에 호출이네..으악..잘못 됐나봐..다시 원래대로 바꾸래..흑흑…
아..처음부터 다시 해야겠네..아..현실은 시궁창이야…흑흑..”

음악 서비스 플랫폼이라고 해서 다르지 않습니다. AI를 적용해 서비스를 만드는 곳이라면 모두들 가지고 있는 고민과 애환(?)이 담겨 있다고 생각되는 짤입니다. 스포티파이는 진작 데이터의 중요성을 인지하고 엄청난 투자(M&A, 알고리즘 개발 및 배합, 데이터 가꾸기 등)를 통해 이상과 현실의 간극을 메웠고, 완전체에 가까운 추천 서비스를 선보였습니다. 당분간은 스포티파이를 따라 잡을 수 있는 곳은 없다고 봐도 무방할 정도로요.

모든 회사는 데이터 회사다, 란 말이 나온지도 어언 3년이 지났습니다. 스포티파이의 과거는 모든 기업이 가야할 방향에 대해 상당히 근사한 이정표가 됩니다. 무엇보다, 스포티파이는 자신들의 노력을 상세하게 공유합니다. 그 과정을 함께 읽고 음악 데이터에 관심을 가지는 분들이 더 많아지길 바라며 이 글을 닫습니다.

--

--