AI는 내 음악 취향을 어떻게 분석할까? 추천 알고리즘의 원리
"이 노래 좋아할 것 같아요"라는 추천은 마법처럼 보이지만, 그 뒤에는 몇 가지 명확한 원리가 있습니다. AI가 음악 취향을 읽어내는 방식과, 그 방식이 잘 통하는 순간과 어긋나는 순간을 함께 살펴봅니다.
추천의 두 축: 협업 필터링과 콘텐츠 기반 분석
음악 추천 기술은 크게 두 가지 접근으로 나뉩니다. 첫 번째는 협업 필터링(collaborative filtering)입니다. "당신과 비슷한 취향을 가진 사람들이 많이 들은 곡"을 찾아주는 방식이죠. 나와 청취 이력이 겹치는 수천 명의 사용자를 모아, 그들이 좋아했지만 나는 아직 듣지 않은 곡을 골라냅니다. 스트리밍 서비스의 '이 곡을 들은 사람들이 함께 들은 곡'이 대표적입니다.
두 번째는 콘텐츠 기반 분석(content-based analysis)입니다. 곡 자체의 특성을 분석해 비슷한 소리를 찾는 방식입니다. 템포(BPM), 조성, 에너지, 어쿠스틱함, 보컬의 유무, 리듬 패턴 같은 오디오 특징을 수치로 뽑아내고, 그 수치가 가까운 곡끼리 묶습니다. 협업 필터링과 달리 다른 사람의 청취 데이터가 전혀 없어도 작동하기 때문에, 아무도 듣지 않은 신곡이나 무명 트랙에도 적용할 수 있다는 장점이 있습니다.
메타데이터: 숫자로 표현되지 않는 맥락
오디오 특징만으로는 놓치는 것이 많습니다. 같은 BPM에 비슷한 에너지를 가진 두 곡이라도, 하나는 2000년대 초 인디 록이고 다른 하나는 최신 하이퍼팝일 수 있습니다. 그래서 메타데이터—아티스트, 발매 연도, 지역, 레이블, 장르 태그, 함께 언급되는 플레이리스트—가 중요한 역할을 합니다.
예를 들어 어떤 곡이 '시티팝', '밤 드라이브', '레트로' 같은 태그가 붙은 플레이리스트에 반복적으로 등장한다면, AI는 그 곡을 단순한 파장이 아니라 특정한 분위기와 문화적 맥락 속에서 이해하게 됩니다. 사람이 음악을 기억하는 방식과 비슷하죠.
좋은 추천은 '소리의 유사성'과 '문화적 맥락', 두 가지를 동시에 봅니다. 하나만 보면 소리는 비슷한데 정서가 전혀 다른 곡을 추천하는 실수가 생깁니다.
취향을 '언어'로 이해하는 최신 접근
최근에는 대규모 언어 모델(LLM)을 활용해 취향을 문장 수준에서 해석하는 방식이 늘고 있습니다. "새벽에 혼자 걸을 때 어울리는, 몽환적이지만 너무 느리지 않은 곡"처럼 사람의 언어로 표현된 요청을 이해하고, 그 뉘앙스를 곡의 특성·맥락과 연결하는 것입니다.
이 접근의 강점은 애매한 감정을 다룰 수 있다는 점입니다. 기존 알고리즘은 "슬픈 곡"과 "쓸쓸하지만 따뜻한 곡"을 잘 구분하지 못했지만, 언어 기반 분석은 그 미묘한 차이를 포착할 여지가 있습니다. tunov가 플레이리스트나 문장 설명을 받아 취향 요약을 만들고 새 곡을 제안하는 것도 이 방향에 가깝습니다.
왜 가끔 추천이 빗나갈까
어떤 알고리즘도 완벽하지 않습니다. 추천이 어긋나는 데는 몇 가지 전형적인 이유가 있습니다.
- 인기 편향: 데이터가 많은 인기곡 쪽으로 추천이 쏠리기 쉽습니다. 그래서 진짜 숨은 명곡은 오히려 잘 안 나옵니다.
- 맥락의 부재: 운동할 때와 잠들기 전에 듣고 싶은 곡은 완전히 다른데, 청취 시각·상황 정보가 없으면 이를 구분하기 어렵습니다.
- 취향의 다면성: 사람은 한 사람 안에 여러 취향을 갖습니다. 재즈도 좋아하고 하드코어 펑크도 좋아하는 사람에게 '평균'을 내면 어느 쪽도 아닌 밋밋한 결과가 나옵니다.
그래서 좋은 서비스는 사용자가 스스로 방향을 좁혀줄 수 있는 장치를 둡니다. 인지도 범위를 조절하거나, 지금의 기분을 문장으로 덧붙이거나, 특정 플레이리스트를 기준으로 삼는 것 모두 알고리즘의 편향을 사람이 교정하는 방법입니다.
결국 중요한 건 '발견의 재미'
추천 기술의 목표는 이미 아는 곡을 다시 확인시켜 주는 게 아니라, 몰랐던 좋은 곡을 만나게 하는 것입니다. 정확도가 100%라면 오히려 지루할지도 모릅니다. 예상과 조금 어긋나지만 결국 마음에 드는 곡—그 '기분 좋은 놀라움'이야말로 음악을 파고드는 이유니까요.