Meraklısına Spotify Müzik Önerme Algoritması Nasıl Çalışır?

Spotify hayranı olan bir kişi olarak sizlerle sürekli kullandığımız “Discovery Weekly” gibi bizim sevdiğimiz şarkıları karşımıza çıkaran bu algoritma nasıl çalıştığından bahsedeceğim.

Spotify’ın genel olarak mimarisinden bahsetmek yerine daha spesifik konularından bahsedeceğim ama öncelikle hangi Cloud Provider kullandıkları ve neden seçtiklerinden bahsettikten sonra “Müzik Önerme Algoritması” konusuna gireceğim.

Spotify, Google Cloud Platform’u tercih etmektedir. Bundan 1–2 sene önce kadar Google Cloud Platform’a geçtiklerini duyurdular. Geçmelerinde en büyük nedenlerinden birisi Load balancer olduğunu açıkladılar. Google Cloud Platform üzerinde çalışan ve büyük yük kaldıran şirketlerden bir tanesi olarak Spotify yerini almış oldu.

Spotify kullanan kişilerin bölgesel dağılımı bu şekilde gösteriliyor. Spotify +2000 node hadoop cluster çalışıyor ve bu nodelar üzerinde günde 20.000 den fazla Hadoop Job çalışmaktadır.

Peki nasıl bir Flow a sahip bu Discover Weekly. Spotify, uygulama üzerinizdeki hareketleri dinlediğiniz müzikler, Radio aktiviteleri ve onun dışında garip bir şekilde NLP ile blog postları, haberleri ve daha fazlasını analiz ederek size olabildiğince en iyi ilişkili sevebileceğiniz müzikleri karşınıza çıkarmaya çalışmaktadır.

Müzik önerme işlemleri için aslında birden fazla teknik uygulanmaktadır. Klasik yöntemlerden bir tanesi olan “Collaborative filtering” uygulanmaktadır. Kullanıcının ihtiyaçlarını kullanım geçmişine bakarak belirlemek amacında kullanılıyor. Matematiksel hesaplaması olarak aşağıdaki gibi işleniyor.

Implicit Matrix Factorization

2008 yılında 3 araştırmacının yazdığı bir yazıya dayanarak “Implicit Matrix Factorization” konusundan bahsedeceğim.

Kullanıcıların kişisel tercihleri ve özellikleri dikkate alınarak önerme sistemi oluşturulur. Kullanıcıdan bilgi edinmeye çalışarak günden güne kendini geliştirmektedir. Burada Machine Learning kullanılmaktadır. 3 yöntemde bu konuyu inceleyebiliriz

1. Content based filtering (İçerik tabanlı filitreleme)

Bu tür sistemlerde içerikler arasında ortak özellikler belirlenerek yapılmaktadır.

2. Collaborative filtering (İşbirlikçi filtreleme)

Bu yöntemle ise kullanıcılar arası benzerliklerden yola çıkarak tahmin etmesi. Bayesian network (Bayes ağları) ve Clustering (kümeleme) ile kullanıcılar arası benzerlikler hesaplanır ve tahminler çıkarılarak öneriler sunulmaktadır.

3. Hybrid approach (Hibrit yaklaşım)

Bu yöntem anlaşılacağı üzere ilk iki yöntemin bir arada kullanarak daha doğru öneriler yapmaya çalışmak için hata oranını düşürmektir

Implicit Matrix Factorization sürecinde yararlılıklarından değineceğimiz bir diğer konu ise RMSE (Root Mean Squared Error[Kök kareler karesi hatası])’dir. RMSE, ikinci dereceden bir puanlama fonksiyonudur. Buradaki ölçümlerin hata yapının önemliliğinden dolayı bunu minimuma düşürmek için en ideal yöntemdir.

Bir diğer ise Logistic Regression Loss Function dır.

Logistic Loss Function

Ses üzerine Deep Learning

Neural Network’de input olarak kullanılan 599 frames ve 128 frekanslardan oluşan mel-spectrogram lardan oluşmaktadır. Bu mel-spectrogram ları zaman/frekans gösterimidir. Ses sinyallerini analiz ederek kısa ve üst üstte gelen dalgaların Fourier dönüşümleri elde edilir. Fourier dönüşümlerinin her biri birer frame oluşturur. Oluşan framelerin ardışık hale gelmesinin sonrasında spectrogram oluşturmak için matris olarak birleştirilir. En son olarak boyutsallığı azaltmak için frekans ekseni lineer bir ölçekten mel ölçeğine dönüştürülür ve büyüklükler logaritmik olarak hesaplanır

Latent Space Visualization

Deep learning konularından bir diğeri de önerme algoritmaları üzerinde çalışmaktadır. Müzik önerme işlemlerinde kullanıcıya önerebilecek müzikleri anlayabilmek için kullanılmaktadır.

Deep content-based music recommendation algoritması olarak geçen bu yapıdan biraz bahsedersek, üstte gördüğünüz müzisyenlerin ve şarkıların birbirine olan ilişkilerini ortak bir alanda görselleştirmesini sağlamaktadır. t-SNE algoritması ile görselleştirilerek ilişkileri çıkarılmaktadır. Peki kullanıcılara hangi şarkının önerileceği nasıl belirleniyor. Biraz daha basit görsellerle bahsedelim.

Üstteki gördüğünüz alanda müziklerin yerleşimi gözüküyor. Burada kullanıcılar merkezi noktadan vektörleri çizdirilir ve yakınlığına göre öneriler yapılmaktadır.

Kullanıcı vektörüne yakın olan müzikler bize öneri olarak gösterilmektedir.

Peki bu veriler nasıl toplanıyor?

Spotify’da haftada 75M playlist oluşturuluyor ve paylaşılıyor. Aynı zamanda Facebook Insight üzerinden müzik ile ilgili bilgilerde toplanmaktadır. Playlist lerde oluşturulmuş ve müzikler, müzisyenler arası ilişkilendirilmeler yapılmaktadır. Aynı zamanda müziklerin adları, playlist adları üzerinde de NLP uygulanarak veriler ilişkilendirilmektedir.

Kullanıcının bölgesine göre her pazar günü playlist ler yenileniyor. Discover Weekly playlist lerinin paylaşma süreci de bir farklı işlemektedir.

Discover Weekly kalitesini arttırma

Yukarıda anlattığım yöntemlerini bir arada kullanarak çıkan sonuçların bir playlist e dönüşmesi ve her pazartesi karşımıza çıkan bu güzel playlistlerin genel olarak özeti bu şekildedir.

Spotify, bu playlistlerin kullanıcısına kaliteli bir playlist oluşturduğunu öğrenmek için ise feedback toplamaktadır. Bunu playlist i dinlerken yapılan davranışlar üzerinde oluyor.

Kullanıcılarının %1'ini A/B testine tabii tutmaktadır. Eğer sizde aşağıdaki gibi bir şey görüyorsanız, A/B testinde olduğunuzu bilin :)

Sonlandıralım

Bu yazıda çok deep-dive yaparak aşırı teknik bir şekilde algoritmalardan bahsettim. Okurken Machine Learning, Deep Learning gibi konulara hakim olmanızın gerektiğini düşünüyorum. Ben sadece okuyucusuyum. Benim merakım ilk başlangıcı girdiğim basit bir Yapay Öğrenme dersi ile ben bu işi okuyarak öğrenebilirim dedim. Fırsat oldukça kenara kaydettiğim dersleri, yazıları boş zamanlarımda, telefonumda okuyarak ve izleyerek öğrendiğim birtakım bilgilerden oluşmaktadır. Yanlışım var ise affola, bilgili insanlardan daha fazlasını da öğrenmek isterim.

Daha fazlası için Twitter ve Github üzerinden takip edebilirsiniz. Eğer müzik zevklerimi merak edenleriniz olursa da Spotify’dan takip edebilirsiniz.