스포티파이는 어떻게 취향에 맞는 음악을 추천할까?
처음 듣는 노래인데 왜 이렇게 내 스타일일까? 음악 추천의 비밀
월요일 아침, 출근길 지하철에 오른 서연은 스포티파이를 열었습니다.
매주 월요일마다 새로 채워지는 'Discover Weekly' 플레이리스트를 재생하자, 처음 듣는 노래가 흘러나왔습니다. 그런데 이상하게도 첫 소절부터 마음에 들었죠. 다음 곡도, 그다음 곡도 마찬가지였습니다.
서연은 고개를 갸웃했습니다.
한 번도 들어 본 적 없는 노래인데, 스포티파이는 어떻게 이 노래가 내 취향이라는 걸 알았을까요? 수천만 곡 중에서 어떻게 딱 30곡을 골라낸 걸까요?
이야기 속 IT 개념
- 추천 알고리즘
- 협업 필터링
- 자연어 처리
- 오디오 분석
- 임베딩
- 콜드 스타트
서연의 출근길 플레이리스트를 따라가며, 스포티파이가 음악을 고르는 방법을 알아보겠습니다.
1. 다른 사람들의 플레이리스트에서 단서를 찾습니다
스포티파이에는 사람들이 직접 만든 플레이리스트가 수억 개나 있습니다. 스포티파이는 이 플레이리스트들을 살펴보며 어떤 노래들이 자주 함께 담기는지를 찾아냅니다. 서연이 즐겨 듣는 노래 A와 B가 많은 사람의 플레이리스트에서 노래 C와 함께 등장한다면, 서연도 C를 좋아할 가능성이 높다고 보는 것입니다. 비슷한 취향을 가진 사람들의 선택을 모아 추천하는 이런 방식을 협업 필터링이라고 부릅니다. 이 방법은 노래의 장르나 가사를 몰라도 사람들의 실제 선택만으로 취향의 연결 고리를 찾을 수 있다는 점에서 강력합니다. 서연이 처음 듣는 노래에 반한 첫 번째 이유는, 서연과 비슷한 귀를 가진 누군가가 이미 그 노래를 사랑하고 있었기 때문입니다.
2. 노래에 대한 글을 읽고, 노래 자체를 들어 봅니다
스포티파이는 음악 블로그, 기사, 리뷰처럼 인터넷에 있는 노래와 가수에 대한 글도 분석합니다. 어떤 노래를 설명할 때 '몽환적인', '새벽 감성', '시티팝' 같은 표현이 자주 쓰이는지 살펴보는 것인데, 이처럼 컴퓨터가 사람의 언어를 이해하는 기술을 자연어 처리라고 합니다. 그런데 막 발매된 신곡은 아직 플레이리스트에 담긴 적도 없고 관련된 글도 거의 없어서 추천하기가 어렵습니다. 이렇게 데이터가 부족해 추천이 어려운 상황을 콜드 스타트 문제라고 부릅니다. 이때 스포티파이는 템포가 빠른지, 어떤 악기가 쓰였는지, 분위기가 밝은지를 오디오 분석으로 직접 파악합니다. 덕분에 아직 유명하지 않은 신인 가수의 노래도 서연의 취향과 닮았다면 플레이리스트에 오를 수 있습니다.
3. 노래와 서연을 같은 지도 위의 점으로 표현합니다
플레이리스트, 글, 소리에서 모은 정보는 결국 컴퓨터가 계산할 수 있는 숫자로 바뀝니다. 노래 하나하나를 취향 지도 위의 한 점처럼 숫자 목록으로 표현하는데, 이를 임베딩이라고 합니다. 분위기와 느낌이 비슷한 노래일수록 이 지도 위에서 가까운 자리에 놓이게 됩니다. 서연의 취향도 같은 지도 위의 한 점으로 표현되기 때문에, 서연과 가까이 있지만 아직 들어 보지 않은 노래를 찾으면 됩니다. 마치 도서관에서 내가 좋아하는 책 근처에 꽂힌 책을 집어 드는 것과 비슷한 원리입니다. 스포티파이의 추천 알고리즘은 이렇게 찾은 후보들 가운데 서연이 끝까지 들을 가능성이 높은 곡을 골라 30곡짜리 플레이리스트를 완성합니다.
4. 서연이 듣는 방식이 다음 주의 추천이 됩니다
추천은 한 번 만들어지고 끝나는 것이 아닙니다. 서연이 어떤 곡은 끝까지 듣고, 어떤 곡은 10초 만에 넘기고, 어떤 곡은 내 플레이리스트에 저장하는 행동이 모두 다시 기록됩니다. 끝까지 들은 곡과 저장한 곡은 서연의 취향을 더 정확하게 알려 주는 신호가 되고, 금방 넘긴 곡은 비슷한 노래를 덜 추천하라는 신호가 됩니다. 이 기록이 쌓일수록 서연의 점은 지도 위에서 조금씩 자리를 옮기고, 다음 주의 플레이리스트도 그만큼 더 정확해집니다. 결국 서연이 처음 듣는 노래에 반한 건 우연이 아니라 다른 사람들의 취향과 노래에 대한 말과 노래의 소리를 함께 읽은 결과였습니다. 그리고 그 추천을 다듬어 가는 가장 중요한 재료는 바로 서연 자신의 귀입니다.