Tuesday, August 9, 2016

ISMIR 2016 - Day 0, Day 1, Day 2

지금 학회가 진행중입니다만 우선 2.5일치 정리합니다.

Day 0: Tutorial

T1은 재즈 역사 소개 / 재즈 데이터셋 및 발표자들이 개발한 툴을 소개했습니다. T1의 발표자인 Jakob Abeßer는 재즈 관련 연구를 많이 한 사람입니다. T4는 EEG에 대한 소개였는데 발표는 매우 지루했습니다. 발표자료를 github에 올렸다고 했는데 어딨을까요..;;

제가 제일 관심있는 내용은 Tutorial: Natural Language Processing for Music Information Retrieval입니다. 내용 자체는 매우 기본적인 NLP입니다. 그리고 링크를 들어가 보시면 음악 관련 데이터로 학습한 word2vec 모델을 공유하고있습니다. 

T2는 MIR에 관심있는분이나 연구/공부를 시작하는 분들을 위한 내용입니다.
T6 - Why Hip-Hop is interesting은 MIR에서 일반적으로 가정하는 음악 신호와 힙합이 어떤 차이를 갖고 있는지에 대한 내용입니다.

Day 1: Papers

12음계의 representation인 chromagram은 STFT/CQT에서 하모닉스를 단순히 더하는 방식으로 계산할 경우 신호의 하모닉스 성분때문에 많은 노이즈를 포함하게됩니다. 이를 deep neural network를 이용해 더 잘 계산해주겠다는 내용입니다.
Chromagram은 오디오 feature representation의 하나로 멜로디나 코드 추출 등에 사용할 수 있습니다. 딥러닝으로 Feature를 학습하는 방식이 정확히 어떤 쓰임새가 있을지 따지긴 어렵습니다만 연구 방식은 유효합니다.

한참 boundary detection논문을 내던 저자가 이번엔 다른 문제를 푸는 논문을 냈군요. 10k 트랙을 이용하는데, 레이블링 정보가 트랙 전체에 보컬이 있냐/없냐로만 되어있습니다. 이걸 컨브넷을 써서 학습시킨 결과를 다시 시간 프레임별로 적용하면 결과적으로 각 프레임에 보컬이 있냐 없냐의 문제 (제목의 Pinpoint이 의미하는 바가 이것이겠죠)를 풀 수 있다는 내용입니다.
즉, 곡 전체의 라벨로 학습시켜도 더 작은 단위의 판단을 잘 내릴 수 있게 된다는 내용이구요.

이 방식이 작동할 수 있는 이유를 대충 설명하자면 그냥 데이터가 많아서, 오차가 상쇄된다고 볼 수 있습니다. 다르게 보면 강화학습의 학습 과정과도 같은 셈입니다. 강화학습에서도 t0부터 t1사이에 일어난 모든 이벤트 중에 사실 중요한 이벤트는 아주 일부일 수 있습니다. 그렇지만 t0-t1사이의 모든 이벤트가 같은 레이블에 의해 reward나 penalty를 받게 되지요. 이 논문의 적용 방식도 같고, 다만 강화 학습에서는 그런 다양한 example이 시간축에 분포하는 반면 여기에서는 spectrogram의 하나의 axis일 뿐인 것이죠. 혹은 이미지 분류에서도 꼭 pixel별 라벨링이 되어있지 않아도 deconvolution을 해보면 어떤 위치에 객체가 있는지 대략 알아낼 수 있는것과 같습니다.

발표 마지막에 아주 재미있는 데모가 있었습니다. 결과적으로 이 컨브넷이 뭘 학습하냐?라는 것이었는데 아무 스펙트로그램에다가 선을 마구 그려서 컨브넷에 보여주니까 대각선 성분이 있으면 보컬이 있는것으로, 대각선이 없고 가로/세로선만 있으면 보컬이 없는 것으로 판단하더군요. 아..아이유의 삼단고음은 어떻게 될지 궁금하군요. 아무튼 그래서 스펙트로그램에 VOICE라고 그림을 확 그렸더니 (그림을 그린 부분이 높은 값을 갖게 되겠지요) V, O, C 처럼 대각선 성분이 있는 곳은 보컬이 있다고 판단을 하더군요.




Last.fm 로그를 수집합니다. 플레이로그와 함께 사용자의 나이/국가/성별을 모았구요.
그리고 사용자 모델링을 통해 3가지 feature를 제안했습니다. Exploratoryness, Mainstreamness, Genderness입니다. 앞의 2개는 EchoNest에서 artist profile에 있던것과 비슷한 내용이고, 이름도 직관적이죠. 마지막 featurer의 경우 저는 정확히 이게 어떤 작용을 할 것인지 잘 감은 안왔습니다만 Paul Lamere (Spotify)의 블로그 포스팅 Gender Specific Listening에서 소개한 것 등 남/녀의 취향 차이는 있겠죠.

이제 계산한 user feature와 demographics 정보를 이용해 추천을 해야하는데, 추가된 정보를 어떻게 user-item matrix에 집어넣어서 factorise를 해줄 수 있을 것이냐가 문제겠죠? 이 논문에서는
S. Rendle. Factorization machines. In IEEE 10th Inter- national Conference on Data Mining, pages 995–1000, Sydney, Australia, 2010. IEEE. 
의 방법을 사용했다고 합니다. 논문을 인용만 했는데 설명이 너무 안된것이 좀 아쉽군요. 안봤지만 아마도 여러 유사한 목적의 다른 논문처럼, factorise하기 위한 objective function에, 추가된 criteria에 맞춘 항을 더한뒤에 SGD로 최적화하는 전형적인 방식이 아닐까 생각합니다.

결과는 심플한데요, 논문의 그림 2를 보시면 이런저런 정보를 다 사용하면 Matrix factorisation의 RMSE가 제일 낮아진다 - 즉 retrospective evaluation의 결과로 제일 좋다 - 는 내용입니다.

뒷부분에 추가로 주말/주중이라는 컨텍스트 정보를 추가했는데 결과는 별로 성능이 좋아지지 않습니다. 제 의견은 사용자 모델링에서 사용자가 얼마나 컨텍스트에 민감한지 - 즉 user.contextualness 같은 내용을 더 모델링하지 않으면 컨텍스트 관련 추천은 늘 이런식이 아닐까 합니다. 저자랑도 비슷한 이야기를 했구요.



USC의 Julian McAuley가 발표한 Amazon review dataset이 있습니다. 여기에서 음악 관련 카테고리만 모아서 열심히 정리를 한 데이터셋인 MARD: Multimodal Album Reviews Dataset을 발표했습니다.

아마존 product ID와 Musicbrainz ID가 매칭이 안된다는 슬픈 이유로 (API에 항목은 있지만 값이 대부분 비어있습니다) Entity recognition을 써서 장르나 밴드 이름등을 뽑아는 등 각종 귀찮은 text preprocessing작업을 거쳐서 만든 데이터셋입니다. 

그리고 이 데이터셋을 이용해 장르 분류 작업을 간단히 보였구요. 

드럼 기초 테크닉인 strike(치는것), buzz roll, flam, drag 네가지를 구별하는 논문입니다. 


Day 2


MIREX라는 이벤트가 있습니다. ISMIR에서 하는 competition인데요, 음.......... 한마디로 이야기하면 이제 정말 문제가 많습니다. 작업 개수는 너무 많고, 관리에 어려움이 많고 비효율적이고 등등. 참다못한 Brian이 Kaggle for MIR을 만들어야한다! 라는 내용을 제안하는 발표였습니다.

각종 인프라를 위한 소프트웨어가 공개되어있고, 이래저래 가능한 시나리오입니다. 다만 중간중간에 돈이 들어가는 부분이 있고, 사람들의 참여가 많이 필요하겠죠. 시도가 잘 되길 빌고있습니다.

각종 스트리밍 서비스 - 정확히는 클라우드 뮤직 서비스, 즉 본인의 음악을 업로드해서 쓰는 iTunes Match, Amazon, Google Music - 에 대한 사용자 조사입니다.

중간에, 60%정도 되는, 많은 사람들이 돈을 지불하고 쓸 용의가 있다고 응답했다. 고 써있는데 저는 좀 회의적입니다. 설문조사에서 사람들이 솔직하게 답하지 않는 흔한 오류가 아닐까요? 그 사람들이 스스로 '돈을 낼 용의도 있는데?'라고 말하거나, 혹은 진심으로 그렇게 믿는다 하더라도 이렇게, 이렇게! 이렇게 좋은 뮤직 스트리밍 서비스가 많은데 지금도 공짜로 쓰는 사람들이 엄청나게 많은 마당에 무슨 의미가 있는걸지 잘 모르겠습니다. 행여나 그게 진심이라면 스트리밍 업체에서는 무료 사용자의 만족도를 일부러 낮춰서 결제를 유도해야하는걸까요?

슬라이드가 공개되어있는지 모르겠습니다만 사진 몇장 첨부합니다.










Michele가 퀸메리에 방문연구와서 연구한 내용이군요. NLP동네에 ANEW라는, Affective Norm for English Words, 즉 각종 감정에 관련된 단어를 Arousal-Valence-Dominance 총 3개의 축으로 된 3d 공간에 맵핑시켜놓은 데이터가 있습니다. 이 데이터가, 즉 벡터 맵핑이, 음악의 감정(mood/emotion) 관련된 태깅이나 분류 문제에 직접 사용하기엔 좀 맞지 않는 면이 있습니다. 저도 한번 테스트해봤다가 너무 맞지 않아서 관뒀는데, 이걸 이래저래하게 고쳐쓰자는 내용입니다.

몇 달동안 같은 연구실에 앞-옆자리에 앉아있던 친군데 이걸 연구했는줄을 오늘 알았습니다...


아주 재밌는 내용입니다. 전에 영문 블로그에 정리했던 ICML 2016: ML4MD 워크샵에서도 비슷한 논문이 있었습니다. 각종 아이템 (song, user, playlist,...)의 co-occurrence를 이용해 word2vec비슷한 embeddings을 학습시키고 그걸 이용해 추천이나 분석을 하는 내용이고 이 논문도 유사한 내용입니다.

이 연구의 특징은 Song, Session, User 이렇게 3가지 카테고리를 하나의 평면에 맵핑했다는 내용입니다. 여기서 Session이란 대략 플레이리스트 비슷한건데, 곡 하나가 끝나고 다음 곡 재생되는 시간 간격이 10분이 넘으면 별도의 session으로 보는걸로 정의했습니다.


그리고 위의 그림처럼 같은 network에 있으면 co-occurrence라고 보구요.

시각화를 위해서는 직접 2D로 embedding을 구했고, 추천에 이용한 벡터는 128차원입니다.

사용한 데이터는 타이완의 KK Music이라는 곳의 로그이고 2015년 상반기 6개월간의 데이터를 썼습니다.


평가는 precision-recall을 보았는데 가장 기본적인 MF보다 좋은 성능을 보입니다.



이 데이터가 좀 재밌습니다. 사용자 한명을 고정하고 그 사용자가 들은 음악을 2D 평면에 배치시킨 것입니다. 여기에 Clustering을 써서 사용자가 현재 듣는 세션이 어떤 '모드'의 세션인지 (즉 어떤 cluster에 해당하는지) identify한 뒤에 그에 맞는 추천을 해준다면 자연스럽게 personalised contextual recommendation이 될 것 같습니다.

제 연구 분야이기도 해서 저는 아주 맘에드는 내용이었습니다.

제가 포스터 세션이 조금 일찍 갔는데, 3저자인 지도교수가 1저자인 학생에게 아주 자세한 내용을 묻더군요. 음... 그러니까 와서 발표할때까지 지도교수는 이 논문이 어떤 내용인지 잘 몰랐다는 이야기가 되겠습니다. 거기에서라도 물어보고 관심 가지는게 어디냐 하는 생각을 했습니다.

그리고 이 세션이 끝나고 어쩌다가 아마존 뮤직(@씨애틀)에서 엔지니어로 일하고있는 사람과 이야기를 했는데, 자세한건 이야기할 수 없지만 이 논문과 아주, 아주 비슷한 알고리즘을 회사에서 사용중이라고 하더군요. 그 정도면 이미 말해선 안되는 내용을 말한 것 같습니다만... 


서울대 이교구교수님 연구실에서 나온 논문입니다. DNN을 스펙트로그램이 아닌 cepstrogram에 적용하는 내용입니다. 왜냐하면,
...because a cepstrogram is shown to be a more robust representation to capture the dymanics of the overall timbre than a spectrogram.
이라고 합니다. 제가 잘 모르는 내용이라 논문 본문을 인용했습니다.

...input representation을 잘 몰라서 뒷부분 내용을 리뷰하기가 어렵군요...

실험에서는 GTZAN dataset을 사용했습니다. 너무 오래된 데이터셋이라 좀 문제가 있는데, 
  1. Corey Kereliuk, Bob L. Sturm, and Jan Larsen. Deep learning and music adversaries. IEEE Transactions on Multimedia, 17(11):2059–2071, 2015. 
에서 제안한 splitting을 사용했습니다. 그리고 random splitting의 결과도 같이 본문에 포함했습니다. 



음악 추천 관련입니다. 사용자의 skip/playing을 기반으로 현재 곡에서 다음 곡으로 나아가야할 '방향' 벡터를 구해주고, 이에 맞춰 곡을 추천해주는 알고리즘입니다. '방향'을 구하는 알고리즘이 핵심이구요.

대략 설명하면, 사용자의 log를 보고 co-occurrence를 통해 곡과 곡의 관계를 graph로 정의합니다. 이 때 co-occurrence를 사용해 곡와 곡을 잇는 edge의 값 (=similarity)을 구해주구요. 그리고 그 graph를 그대로 사용하기엔 연산량이 많아서 ISOMAP으로 n-dimensional space로 맵핑해줍니다. 

그리고 그 space에서 각 곡의 '진행 방향', 즉 공간에서 곡과 다음 곡의 상대적인 위치를 이용해 현재 사용자의 '관성' (혹은 진행 방향/속도..)를 구하고, 이를 통해 다음 곡을 고릅니다. 만일 사용자가 스킵할경우엔 그 방향의 반대방향으로 진행하게 되구요.

상당히 잘 진행한 연구라고 생각합니다. 다만 평가하는 부분에서 와닿지 않는 부분이 많이 있었습니다. 실험 설계가 과연 제안한 알고리즘을 평가하기에 적합한지도 잘 모르겠구요. 하지만 dynamic listening 상황을 가정한 연구라 평가하기가 엄청나게 어려웠을걸 감안해야겠죠. 아주 아주 유효한 접근 방식이라고 생각합니다. 실험까지 잘되었으면 (그리고 지도교수의 도움으로 앞부분이 좀 더 멋지게 포장이 된다면) 진짜 훌륭한 논문이 되었을거란 생각이 들었습니다.

No comments:

Post a Comment