Machineboy空

MusicKit과 음악 추천 알고리즘.. 공부해보자! ① - 추천 시스템 개요 본문

카테고리 없음

MusicKit과 음악 추천 알고리즘.. 공부해보자! ① - 추천 시스템 개요

안녕도라 2024. 5. 8. 11:53

추천 알고리즘과 딥러닝과 단순 데이터 필터링간의 차이가 무엇일까..

사전 지식이 없어 개발 프로세스가 어떻게 되는지를 모르니 어떤 방법을 택할지 고민해볼 수조차 없어 간략하게나마 공부해본다.

 

>> 결국, 추천 시스템은 데이터 필터링이고, 데이터 필터링을 직접 인간이 하지 않고 AI가 하는 것


음악 추천 알고리즘?

데이터를 통해서 사용자가 아직 소비하지 않은 아이템 중 선호할 만한 것을 예측하는 것.

어느 데이터를 사용하느냐에 따라 구분된다.

 

 

콘텐츠 기반 필터링 알고리즘
(Contents-based 
Recommender System)
협업 필터링 기반 알고리즘
(Collaborative Filtering)
하이브리드 알고리즘
(Hybrid Recommender System)
음악의 장르, 가사 등 콘텐츠의 데이터를 분석해 비슷한 음악을 추천해주는 방식 사용자들(다른 사용자들 포함)의 과거 구매 기록과 평가, 리뷰 등을 바탕으로 그와 유사한 음악을 찾아 추천 앞선 두 개 합쳐진 알고리즘
사전에 프로필을 작성하고 이를 기반으로 추천 프로필 데이터 없이 과거 행동 데이터만 가지고 추천  
  콘텐츠 기반 필터링에 비해 정확하다고 알려져 있다.  
  코사인 유사도(Cosine similrality)  

 

***

Netflix Prize

 

넷플릭스 사용자들의 영화 별점 데이터를 가지고 영화 평가 데이터를 예측하는 대회.

기존에 넷플릭스가 사용하던 Cinematch 알고리즘보다 10%이상 성능이 향상된 경우에 최종 상금 백만 달러가 주어진다.

 

Collaborative Filtering 기반의 알고리즘들이 매년 우승을 거두었으며,

특히 우승팀의 SVD(특이값 분해)를 활용한 SVD++은 이후 굉장히 많은 분야에서 활용되었다.

 

https://www.shalomeir.com/2014/11/netflix-prize-1/

 

NETFLIX PRIZE - 다이나믹 했던 알고리즘 대회 (1) - shalomeir's blog

기계학습, 알고리즘 대회에서 연구원들이 치열하게 연구결과를 가지고 경쟁하는 대회가, 대회 기간이 하루 이틀도 아니고 1년 단위로 이뤄진다면 과연 스포츠 경기 종료 휘슬 직전과 같은 흥미

www.shalomeir.com


딥러닝(Deep Learning)이란?

컴퓨터가 스스로 외부 데이터를 조합, 분석하여 학습하는 기술.

 

기존의 머신 러닝은 축적된 데이터 바탕으로 패턴을 통해 결론을 내리는 기술이며 이에 학습까지 나아간 것이 딥러닝이다.

인간의 두뇌가 수많은 데이터 속에서 패턴을 발견한 뒤 사물을 구분하는 정보처리 방식을 모방함으로써 

기존 머신러닝의 한계를 뛰어넘었다.

 

지도학습(Supervised Learning) 비지도학습(Unsupervised Learning)
먼저 정보를 주고 가르치는 방법 배움의 과정이 없다.
(고양이 사진을 보여주며) "이건 고양이야!" "이걸 고양이라고 파악해!"

 

 

+ 강화 학습(Reinforcement Learning)이란?

 

체스를 두는 컴퓨터 프로그램의 경우,

경우의 수가 너무 많고, 정해진 하나의 답이 없어 입력과 출력에 대한 학습 훈련 데이터를 제공하기 쉽지 않다.

 

하지만 체스 게임이 종료되면 그 직전에 둔 일련의 수(手, 행동)들이 좋았는지 나빴는지 학습 알고리즘에게 알려줄 수 있다.

행동의 좋고 나쁨을 학습 알고리즘에게 알려주는 것을 보상 또는 강화(reinforcement)라고 한다.

 

이러한 정보를 이용하는 기계학습을 강화 학습이라고 한다.

 

* 에이전트(agent): 강화형 기계 학습의 대상이 되는 컴퓨터 프로그램

* 정책(policy): 주어진 상태에서 자신이 취할 행동을 표현하는 것

 

에이전트가 최대의 보상을 받을 수 있는 정책을 수립하도록 학습시키는 것이 강화형 기계학습의 목표!

(사용 예) 자율 주행 자동차 개발, 게임, 로봇 제어 등

 


+ 인공 지능 활용?

앞선 알고리즘을 바탕으로 모든 데이터를 인간이 필터링한다? 

비효율적일 수 있기 때문에 다양한 인공지능 기술을 활용한다.

 

 

* 설명가능한 인공지능(XAI, explainable AI)

대부분의 추천 시스템은 딥러닝에 기반하고 있으므로 그 과정을 명확하게 파악하기 어려운 문제점이 있다.

인공지능은 본인이 도출한 결과에 대한 근거가 없다. 사람이 설계한 논리에 따라서 모델이나 결과가 만들어진 것이 아니기 때문이다. 

데이터가 스스로 모델을 만들었기 때문에 데이터의 어떤 속성이 AI가 내린 결론에 영향을 미쳤는지 AI 스스로도 알지 못한다.

https://brunch.co.kr/@herbeauty/8

 

* Cold-start : 새로 가입한 사용자, 신제품에 대한 추천의 경우 상대적으로 데이터가 부족하여 추천 시스템의 성능이 낮은 것

* Long-tail: 단순히 많이 팔리는 물건 위주로 추천되어 추천이 일부 상품에 집중되는 것


 

선택한 첫곡을 바탕으로 다음 노래들이 이어지게 하려면 초보자 입장에서 어떻게 구현해야하지?

AI를 쓰지 않고 추천 시스템을 만드는 방법은 없을까.. 구글링해보아도 나오지 않는다.

 

만약 AI를 쓴다면 학습 시키는데 필요한 시간과, 데이터를 얼마나 제공해야하는 걸까.

 

우선 AI를 쓰지 않는다고 했을 때, 생각나는 방법은 

MusicKit에 아티스트,장르 등으로 필터를 걸 수 있다는 것과,

SpotifyAPI에 곡마다 정리된 속성 중에 danceability라는 수치의 유사도를 활용해볼 수 있지 않을까? 한다.

 

그걸 활용해 간단하게 2단계, 길면 3 단계정도의 처리 과정을 거쳐 다음 곡을 선정해 리스트를 만들기.

 

(예시)

  • 같은 가수의 앨범
  • danceability가 비슷한 것 추리기
  • 그 중 랜덤 뽑기 

 

** spotify DJ 기능

https://youtu.be/pGntmcy_HX8?si=2nfcKaI2s5eNckrb