본문 바로가기
ML&DL/Recommender System

[Recommender System / Paper review] #15 Deep content-based music recommendation

by 거북이주인장 2023. 4. 12.

Summary

  •  weighted matrix factorization을 이용해 음악의 latent factor vector을 추출하고 이를 target y로 삼는다.
  • audio signal에서 time-frequency representation을 추출하고 neural network의 입력값으로 넣는다. 이때 cnn을 사용한다.
  • WMF로부터 추출한 latent factor vector와 audio signal로부터 추출한 time-frequency representation가 유사해지도록 학습을 진행하고 학습한 latent vector 기반으로 유저에게 음악을 추천한다.
  • 음악의 audio signal을 기반으로 생성한 latent vector을 사용하여 추천을 하기 때문에 content-based recommendation으로 볼 수 있다.

Motivation

  • 음악 추천 분야에서는 음악의 종류가 매우 많기 때문에 새로운 음악이 아닌 인기있는 음악이 대체로 추천되는 cold-start 문제를 해결해야 좋은 품질의 추천을 유저에게 할 수 있다.
  • CF는 유저들이 소비한 아이템을 기반으로 추천을 진행하기 때문에 새로운 아이템에 대한 추천 빈도는 낮을 수밖에 없다.
  • content-based 추천은 이런 cold-start 문제에서 CF보다는 상대적으로 자유롭다. 본 논문에서는 음악추천 시에 cnn을 활용하여 음악의 audio signal로부터 latent vector을 생성하고 이를 추천에 활용하는 content-based 추천을 제안한다.

Approach

Weighted matrix factorization

WMF는 implicit feedback을 이용해서 confidence 계수를 정의하고 유저와 아이템에 대한 latent factor를 학습한다. 학습시 사용하는 변수와 objective function은 아래와 같다.

  • $p_{ui} = I(r_{ui} > 0)$: 유저 u가 음악 i을 들었는지 여부를 나타낸다.
  • $c_{ui} = 1 + \alpha \log (1 + \epsilon^{-1}r_{ui})$: 유저 u의 음악 i에 대한 선호정도를 나타낸다. 많이 들으면 들을수록 값이 커진다.
  • $\min_{x_{*}, y_{*}} \sum_{u,i} c_{ui} (p_{ui} - x^T_u y_i)^2 + \lambda (\sum_u ||x_u||^2 + \sum_i ||y_i||^2)$
    • $x_u, y_i$: 유저 u에 대한 벡터, 아이템 i에 대한 벡터
    • L2 정규화를 통해 overfitting을 방지한다.
    • 관측된 데이터에 대해서만 최적화하는게 아니라 모든 데이터에 대해서 최적화를 진행한다.
    • 이때, 연산시간을 줄이기 위해서 최적화 기법으로 ALS을 사용한다.

Predicting latent factors from music audio

  • 본 논문에서 음악으로부터 latent factor을 추출하는 과정은 regression 문제로 인식한다.
  • 유저x음악 행렬에서 WMF을 통해 얻은 음악의 latent vector을 ground truth로 보고 이를 예측하는 방향으로 모델을 훈련시키는 것이다.
  • 이때 MIR(Music Information Retrieval)에서 쓰이는 고전적인 방법과 cnn을 이용한 방법을 사용하여 실험을 진행한다.

Bag of words representation

  • MIR에서 audio signal을 벡터로 변환하는 작업 중 많이 쓰이는 방법으로 벡터를 추출한다.
  • 이 벡터를 PCA를 통해 차원 축소를 하고 1000개의 hidden units을 layer로 가지는 MLP을 학습한다.
  • 이때 사용되는 ground truth는 WMF로부터 생성된 음악의 latent vector이다.

Convolutional neural networks

  • neural networks의 입력값으로 넣기 위해 autio signal로부터 time-frequency representation을 추출한다.
  • log-compressed mel-spectrograms을 사용한다. (자세한 과정은 논문 참조. audio processing이라서 생략)
  • cnn을 활용해서 latent factors을 예측한다.
  • why cnn?
    • 서로 intermediate feature을 다른 factors 간에 공유할 수 있다.
    • alternating feature extraction layer와 pooling layer을 구성하는 계층적 구조가 다수의 timescale에서 동작하게끔 해준다.
  • objective function
    • $y_i$: WMF로부터 얻은 latent vector
    • $y^{'}_i$: 모델에 의해 얻은 prediction vector
    • MSE: $\min_{\theta} \sum_i ||y_i - y_i^{'} ||^2$
    • weighted prediction error: $\min_{\theta} \sum_{u,i}c_{ui}(p_{ui} - x^T_u y^{'}_i)^2$

Results

가장 인기있는 9330개의 음악에 대한 데이터의 학습 결과

  • CNN 방법이 mAP와 AUC 방법에서 더 나은 성능을 보인다.
  • WPE로 학습한다고 해서 더 나은 결과를 얻는 것이 아니다.

모든 음악에 대한 데이터의 학습 결과

  • CNN 방법이 월등히 좋다.

추천 결과

  • 음악에 대한 벡터들간에 코사인 유사도를 통해 일부 음악과 가장 유사한 음악들을 리스트업했다.
  • WMF로 학습한 벡터에 비해 cnn을 통해 생성된 벡터를 사용했을 때 더 다양한 음악이 추천되는 것을 확인할 수 있다.

Conclusion

  • audio signal을 neural network의 input으로 변환하는 과정이 정확히 이해가 가질 않아서 아쉽다.
  • cnn을 사용한다고 했는데 layer는 얼마나 쌓았는지 등 모델 아키텍쳐가 상세하게 나오지 않아서 이해가 부족하다.
  • 이해가 안 가는게.. WMF를 ground truth로 하고 cnn을 통해 벡터를 학습했으면, 그 벡터고 WMF와 비슷한 벡터가 나오는 것이 아닌가? 근데 결과가 다르게 나오는 것이 정확히 이해가 가지를 않는다.
  • 100% 이해를 하지 못한 논문..

댓글