Podcast

AI 011: Tavsiye Sistemleri (Spotify, Netflix, Amazon Sizi Nasıl Tanıyor)

Fularsız Entellik

2 yıl önce
Reklam Alanı (Deneme)

Bölüm Açıklaması

Yapay zeka serimizin üçüncü bölümündeyiz. Geçen seferde oyunların güvenli sınırlarından çıkmış, tavsiye sistemlerinin karışık dünyasına girmiştik Youtube örneği üstünden. Buradan devam ediyoruz. Fularsız Entelliki dinlediniz, sevdiniz, sevdiğinizi ona söylediniz, o da sizden hoşlandı, seviyeli bir ilişkiniz var. Şimdi sistem size magazin haberleri mi önermeli, arı yetiştiriciliğiyle ilgili bir şeyler mi? Makina bu ilişkileri nasıl öğrenecek? Hatta daha temelde makina, bir içeriğin arı yetiştiriciliği hakkında olduğunu nereden bilecek?

.

Konular:


(00:00) Spotify'da çalışan arkadaş

(02:17) Seri Özeti

(03:33) İşbirliğine dayalı filtreleme (kullanıcı bazlı)

(08:48) İşbirliğine dayalı filtreleme (ürün bazlı)

(13:54) Dolaylı işbirliği

(15:49) İçerik bazlı filtreleme

(19:12) Overfitting

(21:50) Çok boyutlu modeller ve Music Genome Project

(24:19) Derin öğrenmeye geçiş

(25:58) Patreon Teşekkürler




Kaynaklar:


Video: How Recommender Systems Work (Netflix/Amazon)


Yazı: A Comprehensive List of Similarity Search Algorithms


Yazı: Basics of Recommender Systems


Yazı: The history of Amazon's recommendation algorithm


Yazı: How AI helps Spotify win in the music streaming world


Yazı: AI’s new workforce: the data-labelling industry spreads globally






Tüm bölümler ve daha fazlası için ⁠podbeemedia.com⁠'u ziyaret et!



----- Podbee Sunar -------

Bu podcast reklam içermektedir.

Bölüm Transkripti

3.733 kelime · ~19 dk okuma

Fullarsızenterli'ye hoş geldiniz, sefa getirdiniz. Yapay Zeka serimizin üçüncü bölümündeyiz. Bu sefer tarihsel bir anekdotla başlamıyorum. Birkaç günlük taze bir anekdotla başlayacağım.

Hatırlarsanız, yapay zeka tarihçesinden bahsettikten sonra oyunların güvenli sınırlarından çıkmış tavsiye sistemlerinin dünyasına girmiştik. YouTube örneği üstünden. Bugün de belki Spotify'ı örnek göstereceğimize söylemiştim. Bunu söyler söylemez, daha kaydı yayını almamışken ta üniversite zamanlarındaki ev arkadaşlarımdan biri aradı ve birkaç güne apar topar ziyarete geldi.

Belki 15 senedir görüşüp konuşmamışızdır ve yıllar sonra görüşen iki erkeğin ritüelini gerçekleştirdik. Yani önce şaşkınlık belirten bir takım hayvan sesleri çıkardık, sonra omuzlarımızdan tutup birbirimizi sarstık, el ense çektik, tam güreşmeye başlayacakken sakinleştik, birkaç hayvan sesi daha ve oturup konuşmaya başladık. Hep bu adımlardan geçmemiz gerekiyor. Meğer yakın zamanda Spotify'da çalışmış.

Transkriptin tamamını oku

Hem de makine öğrenimi kısmında. Zaten ödüllü mödüllü bir matematikçiydi. Olayın merkez üstünden geliyor yani. Nasıl bir şans?

Sabah ayılır ayılmaz bunu esir aldım. Dedim bizde misafir umduğu değil, bulduğu podcast'e konuk olur. Bildiğin her şeyi anlatacaksın. Oturduk, kayda başladık.

Baştan da uyardım. Giriş seviyesinin bir tık üstüne hedefliyorum diye. Fakat daha ilk cümlesinde Markov prosesler, Aygın vektörler havada uçuşuyor. Kardeşim insan dinleyecek bunları.

Birkaç defa tekrarladık ama hep aynı şey. Ben sonradan Türkçeleştirirken jargonu ayıklarım da daha düşünce akışını takip edemiyorum. Uzun süredir bir konuya hakim olan insan o konuya hakim olmamanın nasıl bir şey olduğunu unutmuş oluyor. Kendini o konuyu yeni öğrenen bir insanın yerine koymak çok zor bir şey.

Çünkü bildiğin şeyleri bilmiyormuş gibi yapman gerekiyor. Ayrı bir yetenek, hatta bir bakımı akıl hastalığı. Bunun üstüne matematikçiler zaten ayrı bir dünyada yaşıyorlar. Biz ölümlülerle iletişim kurmak canlarını sıkıyor olmalı, Baktık olacak gibi değil, pes ettik.

Ben de önce piyangoyu kazanıp sonra biletimi kaybetmiş gibi hissettim resmen. Eh, bu da böyle bir anımdı arkadaşlar. Size hiçbir faydası yok. Ama yine de kapabildiğim kadarını aktaracağım bugün.

Tavsiye sistemleri neydi? İlgilenebileceğiniz şeyleri siz daha aramadan önünüze getiren sistemlerdi. Nihai maksat bundan memnun kalmanız. Yoksa mesela sevdiğiniz konularda size sürekli clickbait başlıklar sunan bir haber portalı kısa vadede tıklanmayı arttıracaktır ama uzun vadede sizi bıktıracaktır.

İyi bir sistem zamanla sizi daha iyi tanıyarak hem etkileşimlerinizi hem de memnuniyetinizi arttırmalı. Bu sistemlere geçince işler karışmıştı çünkü işin içine insan girmişti. İnsan tutarlı davranmıyor. Daha bir şeyi beğenip beğenmediğini anlamak bile meseleydi.

Bugün bu sorunla tekrar uğraşmayacağız. Kulanıcıların robot gibi her tavsiyeyi eksiksiz puanladıklarını farz edebiliriz yahut pasif ve çok basit bir beğeni ölçüsü kullanabiliriz. Beğeni eşittir dinlenmedir, satın almadır diye kestirip atabiliriz. Bugünün esas konusu bu bilgileri nasıl kullanacağımız.

Full arsız entelliyi dinlediniz, sevdiniz, sevdiğinizi ona söylediniz, o da sizden hoşlandı, seviyeli bir ilişkiniz var. Şimdi sistem size magazin haberleri mi önermeli, arı yetiştiriciliğiyle ilgili bir şeyler mi? Bunlardan bir tanesi bence bizim podcast ile daha alakalı. Ama kim bilir belki yanlışımdır.

Herhalükâr da makine bu ilişkileri nasıl öğrenecek? Hatta daha temelde makine bir içeriğin arı yetiştiriciliği hakkında olduğunu nereden bilecek? Aslında bunu bilmesine hiç gerek yok. Göreceğimiz yöntemlerden ilki içerik yerine tamamen insana odaklanıyor.

Size benzeyen insanların geçmişine bakarak sizin neyi sevip sevmeyeceğinizi tahmin ediyor. En popüler şarkılar, filmler listeleri bunun ilker bir hali. Ortalama insan bunları beğeniyor, muhtemelen sen de beğenirsin diyorlar. Fakat ortalama demek herkes demek değil, çoğunluk demek bile değil.

Muhtemelen birçok alanda tam ortalamaya denk gelmiyorsunuzdur. Size esas sizin gibilerin ortalaması lazım. Bunu nasıl bulacağız? Herkesin bir tarihçesi var, bir beğeni tarihçesi.

Bazılarınınki epey örtüşecektir. Mesela son dinlediğiniz 100 şarkının 90'ı aynı olabilir. Sistemdeki her kullanıcıyla benzerliğiniz böyle böyle puanlanıyor. Spotify'ın 600 milyon kullanıcısı varmış, yani sırf sizin için tutulan 600 milyon kayıt demek bu.

Bunları büyükten küçüğe doğru sıralayalım ve mesela ilk 100 tanesini alalım veya benzerlik puanı belli bir seviyenin üstünde olanları. Bunlar sizin yakın komşularınız. Şimdi sıra aranızdaki farkları bulmaya geldi. Onların beğenip de sizin henüz dinlemediğiniz ne varsa onlar arasındaki popüleritesine göre sıralayıp size önermeye başlıyorum.

Muhtemelen memnun kalacaksınız. Elbette tek seferde doğru komşuları bulamayabilirim veya zevkleriniz zamanla değişebilir. Sorun değil. Ben bunu tekrar tekrar yapacağım.

Son beğenileriniz, tavsiyelerimi beğenip beğenmemeniz sizi bazı insanlara daha da yakınlaştıracak, bazılarından uzaklaştıracak. Komşular sürekli değişiyor, makina sürekli öğreniyor. Bu yaklaşımın güzel tarafı, müzikten zerre anlamamıza gerek olmaması. Hatta içeriğin müzik mi, podcast mi, video mu olduğunu bilmeme dahi gerek yok.

İçeriği anlamak insanların işi. Sistemin işi, yeterince benzeyen insanları eşleştirmek. Gayet basit gözüküyor değil mi? Yalnız, yeterince benzeyen tam olarak ne demek?

En yakın 100 komşu mu, 10 komşu mu? Kıstası çok sıkı tutarsam tavsiye havuzunuz daralacak, gevşek tutarsam bu sefer isabetten ödün vereceğim. Kıyas aralığı da önemli. Tüm tarihçenizi mi kıyaslamalıyım, son zamanları mı?

Tarihçi uzadıkça komşuluk ilişkileriniz daha yavaş değişecektir. Mesela hep klasik müzik dinlerken şansına o gün başka bir şeye merak salmışsanız, bir filmin soundtrackinden etkilenmişseniz mesela, oradan kaptırıp gitmek istiyorsunuz ve sistem hala size klasik müzik itelemeye çalışacak. Çünkü o günkü aktiviteniz komşularınızı değiştirmeye yetmiyor. Yok eğer sadece güncel aktiviteyi kıyaslarsak, bu sefer tersi olacak.

Komşularımız çok hızlı değişecekler. Her gün bambaşka bir profile sahip olacağız. O da iyi değil. İyi bir sistemin hem anlık modunuza ayak uydurması hem de genel alışkanlıklarınızı aklında tutması lazım.

kimse 7-24 aynı şeyleri dinleyip izlemek istemiyor. Cumartesi gecesiyle pazar sabahı arasında sadece birkaç saat olmasına rağmen istenilen şarkılar arasında uçurum vardır herhalde. Bu ayrımı gözetmemiz lazım. Belki de her kullanıcı için farklı zaman aralıklarını gözeterek hazırlanmış, farklı komşu listeleri tutmamız mantıklı.

Daha temel bir konuda da karar gerekiyor. Herhangi bir liste içindeki komşuluk sıralamasını nasıl yapacağız? Biz demin puanları dümdüz toplamıştık. Yani dinlediğimiz her aynı şarkı başına bir puan almıştık, örtüşme miktarına bakmıştık.

Belki de örtüşme oranına göre sıralama yapsak daha iyi. Hani diyelim sizle ben görece hafif kullanıcılarız, her gün birkaç dakika dinliyoruz ve benzer şeyleri dinliyoruz. Bir de psikolog Beyan Budak var. Unuttuğumu sanmıştınız değil mi?

Unutmam ben onu. Platformun müptelası olmuş. Önüne gelen her şeyi dinleyip beğeniyor. Arasında bizim dinlediklerimiz de var.

Şimdi düz puanlama yapsak hepimiz aynı derecede komşu çıkacağız. Ama belli ki sizle benim zevkim daha benzer. Konuyla ilgilenen olursa Jacquard Endex'i diye aratabilir. Tam da bunu ölçüyor.

Merak etmeyin, ismi kadar korkutucu değil. Alt tarafı iki kümenin kesişiminin o kümelerin toplamlarına oranı demek. O ne kadar yüksekse benzerlik o kadar artıyor. Bunların hepsi birer seçim ve her seçim farklı komşuluk ilişkileri demek, o da farklı tavsiye kalitesi ve müşteri memnuniyeti demek.

Bu kaliteyi doğrudan ölçebildiğinizden, yani tavsiyelerin beğenilme oranını takip edebildiğimizden, tüm ayarları deneye deneye hangisi bize en uygunmuş bulabiliriz. Hele ki devasa bir kullanıcı havuzumuz varsa, Spotify'da olduğu gibi, böl bunları değişik deney gruplarına, farklı yaklaşımları dene, en iyi tavsiyeyi kim veriyor, onu da karar kıl. Hatta herkes için tek bir über algoritma bulmak yerine farklı farklı kullanıcı grupları için farklı yaklaşımlar olabilir. Belki bir ülkede işe yarayan yaklaşım başka bir ülkede o kadar da iyi olmayacaktır.

Bunları da öğrenmemiz lazım. Kısacası bir yandan kullanıcılarımız arasındaki benzerliği öğreniyoruz, bir yandan da bir meta öğrenim var. Benzerlik denen şeyi anlamanın en iyi yolunu öğreniyoruz. Peki, bu yaklaşımın eksik kalacağı durumlar nedir?

Soğuk başlangıç klasik sorunumuz. Yeni bir kullanıcının tarihçesi olmadığından herhangi bir komşusu da olmayacak. Kime benzediğini bulmam için epey bir içerik tüketmesi lazım. Nereden gelecek bu içerik?

Gerçekten ilgilendikleri şeyleri bıkmadan, usanmadan aramalarından gelecek. Ama bunu yapmıyor insanlar, tembeller. Zamanla popüler içeriklere kayıyorlar. Aklına en kolay onlar geliyor çünkü veya sistem bize başlangıçta boş boş durmayalım diye bir tavsiye verecekse onları veriyor.

Sonuçta bir kısır döngü yaratılıyor. Tembellikten popüler olanı dinliyoruz, dinledikçe de iyice popülerleşiyorlar ve zamanla tüm tavsiyeler ona göre şekilleniyor. Benzer insanları bulmaya çalışırken farklı insanları benzeştirdik. Yalnız alternatif bir yaklaşım var.

Aynı şeyi kullanıcı odaklı değil de şarkı odaklı yapmak. Yani şarkıların komşularını bulmak. Bohemian Rhapsody'yi beğenen kaç kişi dönenciyi de beğenmiştir? Böyle soracağız.

En çok ortak kullanıcıya sahip şarkılar, en yakın komşular olacaklar. Birini dinleyene o komşuları da önereceğim. Tabii daha önce neyi önerip önermediğimi hatırlamam lazım. Tam olarak ne kadar ısrarcı olacağımız da ayrı bir ayar.

Abi lütfen bunu da dene, çok beğeneceksin. Ya denedim, istemiyorum abi bu sefer bambaşka. Böyle ısrar mı edeceğiz? Yoksa bir önerdiğimizi bir daha önermeyecek miyiz eğer sevilmemişse?

Şimdi bu sayede soğuk başlangıç problemi kullanıcıdan şarkıya kaymış oldu. Artık kullanıcıda değil. Çünkü siz daha ilk gününüzde, ilk dinlemeniz sonrası alakalı bir takım tavsiyeler almaya başlayacaksınız. Şahane.

Ama yeni çıkan şarkıları düşünün. Onların bir komşusu yok. Dağın başında tek başına oturuyorlar. Onların önerilmeleri için eskiden ne oluyordu?

Benim benzediğim bir kullanıcı şansını onları bulursa bana da öneriliyorlar. Öyle öyle yayılıyordu. Ama bu sistemde önerilmeleri için dinlediğimiz şarkılarla yeterince ilişkili olmaları lazım. Yani birçok kullanıcının o şarkıları beraber dinlemesi lazım.

Yeni çıkmış zaten, birçok kullanıcı nasıl dinleyecek bunu? Dolayısıyla onların komşu edilmeleri zaman alacak. Hangisi daha iyi duruma göre değişir? Yalnız bence Spotify'ı bir kenara bırakıp online alışverişi düşünmek daha faydalı olacak.

Çünkü orada hangi ürünlerin birlikte alındığı bilgisi kritik. Buna da daha aşinayız zaten. balta almaya çalışıyorsan mesela, bakıyorum en yakın komşusu eldiven ve maske. Onları öneriyorum.

Onları da alırsan temizlik malzemeleri ve çuval da öneriyorum. Onları da alırsan artık polise haber veriyorum. Yani ne yapayım, belli ki niyetin kötü. Birlikte alınan bir takım şeyler var.

Bununla aynı anda birkaç şeyi kastedebiliriz. Aynı alışveriş sepetinde olmalarını da kastedebiliriz veya 3 haftalık, 3 aylık, 3 yıllık bir pencere içinde alınmış olmalarında. Farklı zaman aralıklarındaki komşuluk ilişkileri bunlar. ve genelde hepsini birden kullanıyorlar.

Ürün bazlı yaklaşımı tahmin edebileceğiniz gibi Amazon popülerleştirdi. Yaklaşık 20 sene önce Item to Item Collaborative Filtering isimli bir makale yayınladılar. Evet, Amazon makale yayınlıyor, onun bünyesinde çalışan araştırmacılar var. O ana kadarki baskın yöntem ilk gördüğümüzdü.

Ona da User-Based Collaborative Filtering deniyor. Kulanıcı bazlı işbirliğine dayalı filtreleme. İkisi de işbirliğine dayalı çünkü ikisi de başkalarının kullanım tarihçesine bakarak karar veriyor. Şarkının türüydü, ürünün fiyatıydı bunları umursamıyor, bilmiyor.

Sadece kullanıcı tarihçelerine bakıyor. Amazon deneysel çalışmalarla ürün bazlı yaklaşımın kendileri için daha iyi tavsiyeler ürettiğini bulmuş. Dahası hesap açısından da daha verimli. Hatırlayın, kullanıcı bazlı yaklaşımda birinin zevkinin değiştiğini anlamak için onu sürekli diğer kullanıcılarla kıyaslamam gerekiyor.

Ha, artık eski komşularına benzemiyorsun, o mahalleden taşındın, bu mahalleye geldin, yeni komşuların bunlar diyebilmem gerekiyor sürekli hesapla. Ürünler arası bağlantılar ise o kadar sık değişmeyebilirler. Özellikle eski ürünlerse, eski şarkılarsa, eski filmlerse veya çoğu ürün için değişimi hemen bulmak gerekmiyor. Benim zevkimin değiştiğini kısa sürede bulamazsan bıkıp gidebilirim.

Ürünler arasındaki ilişkiyi kısa sürede bulamazsan kimse bıkıp gitmeyebilir. Kısacası daha az hesapla daha çok iş yapıyorlar. Benzerliği tam olarak nasıl ölçeceğimiz sorusu burada da ilginç. Amazon şimdi kek gibi gidip, ya şunu alanlar bunu da aldı demekle yetinirse, tamamen alakasız tavsiyeler vereceklerdir.

Sonuçta bir düşünün, Harry Potter kitapları alanların çok ciddi bir kısmı Kindle veya Airfryer de almıştır. Ama bu ürünler alakalı olduklarından değil, sadece hepsi çok popüler olduklarından. Aynı mantıkla benim gündelik hayatımda sürekli aldığım bir takım şeyler var. Otobüs bileti var, çöp torbası var.

Ama her çöp torbası aldığımda otobüs bileti tavsiye edilmesini istemem. Biz bunların alakasız olduğunu biliyoruz hayat tecrübemizden ama makine bunu bilmiyor. Onun tek bildiği şey tarihçe. Bu sefer ne yapmış olduk?

Benzer ürünleri bulmaya çalışırken bambaşka ürünleri benzeştiriverdik. Bu sorunun çözümü puanlamayı göreceli yapmakta. Yani Kindle alanların kaçta kaçı Airfryer almış demiyoruz da ortalama kullanıcıya kıyasla Airfryer almaya daha mı yatkınlar diye soruyoruz. Hatta bu da yeterli değil.

Çünkü bazı müşteriler, dev müşteriler, toptan alım yapıyorlar, çok sayıda farklı şey aldıklarından birçok alakasız ürünün arasında alaka varmış gibi bir etki yaratacak. Ha tabii ki kendileri açısından bir alaka var. Var ki o ürünleri beraber alıyorlar. Bir fabrika için lazım olacak her şey mesela veya bir ofis için.

Ama çoğu kullanıcı için o ürünler arasında böyle bir bağlantı yok. Eğer kullanıcı bazı tavsiye yapıyor olsaydım, bunun ayrımı kolay olurdu. Buradaysa bir karar vermem lazım. Harry Potter'la Air Fryer arasında kurduğum ilişki birkaç büyük müşteriden mi kaynaklı, çok sayıda normal kullanıcıdan mı?

Ona göre o ilişkiyi ayar çekerim. Şimdi ben mühendis kafalı olduğum için böyle şeyleri bir puzzle gibi görüp uğraşmayı çok seviyorum. Bir çözüm yolu oturtmayı seviyorum. Ama çok da matematiksel detaya girince sıkılıyorum.

Ya onu da akıllı birileri halleder işte diyeyim, kaçıyorum. Belki size de bunun detayı ilginç geliyordur. Bir başkasıysa tam tersi. Onun aklı arı yetiştiriciliğinde kalmıştır, hala onu bekliyordur.

Bu farklılıklar gayet normal. Yalnız puzzle'ın tüm parçalarına sahip değiliz. Bazıları başka kutularda. Örneğin kullanıcılar hesap açtıklarında, başka yerlerdeki hesaplarını bağladıklarında, yaş değil ülke gibi kendileri hakkında birçok bilgiyi beraberlerinde getiriyorlar.

Komşu edinmelerini kolaylaştıracaktır bu. Daha ilginci, ürünler arasındaki ilişki de dış kaynaklardan çekilebilir. Bunun bir yolu sosyal medyayı ve blogları taramak. İnsanlar benzer şeylerden birlikte bahsetmeye yatkın.

Ne zaman bir şarkının ismine rastlasam, bir başkasının da ismi geçmiş mi, not alırım. Hatta dil analizini biraz ilerletip herhangi bir ürünle birlikte kullanılmış anahtar kelimeler de ararım. İyi, kötü, hesaplı, pahalı, heyecan verici, sıkıcı. Tekerleği yeniden icat etmeye gerek yok.

İnternette hali hazırda kurulmuş sonsuz sayıda ilişki var. Bunlar sayesinde benim sistemde hiç satılmamış iki ürünün veya pek aktif olmayan iki kullanıcının bağlantılı olduklarını anlayabilirim. Elbette insan dilini anlama konusu çok daha geniş. Belli anahtar kelimelerin gözlenme sıklığından ibaret değil.

Ama şimdilik bize bu kadarı yeter. Mühim olan çaktırmadan önemli bir eşiği aşmış olmamız. Beğeni ve alışveriş tarihçelerinin ötesine geçtik, evet. Ama genel olarak ilişki kavramının da ötesine geçtik.

Doğrudan içerik hakkında bilgi sahibi olmaya başladık. Eğer bir şarkıyı heyecan verici, sıkıcı gibi anahtar kelimelerle özdeşleştirebiliyorsam, neden başka özelliklerini de kullanmayayım? Türü, temposu, şusu busu her şarkı için bu bilgilere sahip olmanın bir yolu olabilir mi? Ayşe ile Ali'nin zevkleri epey benziyormuşun yanında, Ayşe genelde Türk müziğini, özellikle de Buse'lik makamını seviyor diyebilir miyiz?

Bu serik makamı nedir hiçbir fikrim yok da zaten makinenin de anlaması da gerek yok. Onu bir takım etiketlerden tanısın yeter. Böylece sistemin tek bir kullanıcısı olsa dahi, hiçbir komşuluk ilişkisi mümkün olmasa dahi onu doğru içerikte buluşturmak mümkün olur. Madalyonun diğer yüzüne içerik bazlı filtrelemeye hoş geldiniz.

Hazır Türk müziği demişken Spotify modeline dönelim. Müzik türü başlangıç için iyi bir örnek çünkü sınırlı sayıda. Bir sınıflandırma problemi yani. Gerçi şimdi baktım bazı sitelerde yüzlerce tür listelenmiş de bize 10-20 tanesi yeter.

Atmosferik tarrak metal olmasa da olur. İlk iş sistemdeki tüm şarkıları sınıflandırmak. Bunun en basit yolu da müzikten anlayan birilerinin her şeyi tek tek dinleyip etiketlemesi. İşin bu kısmı pahalı, yoğun emek gerektiriyor.

O yüzden genelde Hindistan, Nijerya, Filipinler gibi İngilizce bilen iş gücünün ucuz ve bol olduğu yerlerde hallediliyor. Eskiden oralardan crowdsourcing yapılıyordu. Mechanical Turk gibi yeni nesil amele pazarları üstünden parça parça iş dağıtılıyordu saatlik ücretle. Hala da devam ediyor bu.

Ama artık büyük çaptaki veri etiketleme işlerinde özelleşmiş şirketler var. Tıpkı çağrı merkezleri gibi küresel hizmet veriyorlar oralardan. Milyar dolarlık endüstri olmuş. İlgili bir yazı ekledim açıklamalara.

Şimdi, kütüphanedeki tüm şarkıların türü belli ise, hepsinden kaç tane dinlediniz, kaçını beğendiniz, bunun hesabını tutarım. Türk sanat müziği beğeni oranınız diğer türlere göre yüksekse, o oranları önerilere yansıtırım. Belki arada yeni şeyler keşfedin diye sizi biraz yoklarım, alakasız tavsiyeler de katarım, olur biter. Başka bir özelliği düşünelim.

Tempoyu mesela. Temponun müzik türünden farkı objektif biçimde ölçülebilmesi. Bunu yapan programlar var. Şarkıyı yüklüyorsun beats per minute, yani dakika başına vuruş cinsinden tempoyu söylüyor.

Mesela Hotel California normalde 75 bpm ile çalınıyormuş. Master of Puppets neredeyse 3 kat daha hızlı. Bunlar ortalama değerler tabii. Moby'nin bir şarkısı var, 1 noktada 1000 BPM'i aşıyormuş.

İsmi de Thousand zaten. Ama sadece birkaç saniye içinde aşıyor. Yoksa kafa kalmaz. Yine her şarkı için bu tempo bilgisini edinip belki basitleştirmek için sadece ortalama değeri edinip beğenilerinizle arasında bir ilişki var mı bakacağım.

Tabi bu ilişki biraz daha karmaşık çünkü tempo devamlılık arz eden bir ölçüdür. Sadece Türk sanat müziği seven biri olabilir de sadece 75 bpm tempo seven biri olmaz herhalde. Bir dağılımınız olacak. Diyelim ki düşük ve yüksek tempolarda sevdiğiniz birkaç şarkı olmuş ama beğenilerinizin çoğu orta tempolarda yoğunlaşmış.

Zaten insanların geneli de böyle. Merkezi 120-130 bpm olan bir çan eğrisini andırıyor genel beğeniler. Kalabalıkların alkışından tut, askeri yürüyüşlere kadar birçok yerde karşımıza çıkıyormuş bu 120-130 aralığı. Tabii sizin beğeni dağılımınız biraz farklı olabilir.

Belki orta noktası daha düşüktür, belki şekil bir çan eğrisini bile andırmıyordur. Fark etmez. Her halükarda sizin beğenilerinize göre çizdiğim bir eğri var. Ve bunu henüz dinlemediğiniz şarkıların ne kadar beğeneceğinizi tahmin etmekte kullanacağım.

Tempoyu gir, eğride karşılık geldiği noktaya bak, tahmini beğeni seviyesini gör. Neyse ki bunları elle yapmamıza gerek yok. Basit bir çan eğrisi formülü bile epey karışık. Hiç uğraşmıyoruz, en kötüsü Excel'e veriyoruz yapsın.

Tüm noktalarla arasındaki mesafeyi minimuma indiren bir eğrinin formülünü bulsun. Her zamanki gibi bu sadece ilk adımımız. Defalarca tekrarlayacağız. Zira verdiğimiz her yeni tavsiye, kullanıcının yaptığı her yeni dinleme, grafiğe eklenen yeni bir nokta gibi.

Bazıları tam da tahmin ettiğim yerde olacaklar. Modelimin doğru olduğuna işaret. Bazıları ise tahmin eğrisine uzak kalacaklar. Belki müzik zevkim değişiyordur yavaş yavaş.

Her noktayla biraz daha güncelliyorum. Böylece gelecekteki tahminlerim daha isabetli olur. Yalnız burada tehlikeli bir tuzak var. O da gerekenden fazla iyi bir model bulmak.

Overfitting denen bu sorunla aslında daha önce karşılaşmıştık bu podcast'ta. Bu podcast'ta her şeyle daha önce karşılaştık zaten. Çan eğrisi kalıbı bir ipucu olmuş olabilir. Zira aynı ismi taşıyan o meşhur kitap hakkında yaptığım üçlemede IQ ve işsizlik arasındaki ilişkiden bahsederken değinmiştim.

Kısa bir alıntı yapayım. Esas amacım elimdeki veri setini kusursuz biçimde açıklamak değil. Zaten biliyorum kimin ne kadar işsiz olduğunu. Onlara bizzat sormuşum.

Esas amacım oluşturduğu model sayesinde deneyin dışında kalan milyonlar hakkında tahmini yürütebilmek. Bugünkü sorunumuz da aynı. Esas amacım geçmişinizi açıklamak değil, geleceğinizi tahmin etmek. Bunu geçmişinizdeki bir takım genel trendleri, genel örüntüleri bulmaya çalışarak yapıyorum.

Bunların ötesine geçip oradaki rastgelelikleri de modellersem, bir bakımağa geçmişinize dalıp gidersem bu sefer geleceğinizi hiç göremem. Hemen örneklendirelim. Diyelim ki genelde hızlı şarkıları sevmişsiniz ama düşük tempoda, tam 50 bpm civarında beğenileriniz tekrar zirve yapmış. Bu istisnanın herhalde tempo ile bir alakası yoktu.

Belki siz de bir anısı olan birkaç şarkıya özeldi. Belki yanlış şeye basıp dinlediniz. Sonuçta herkesin tarihçesinde böyle rastgelelikler olur. Model bunlara karşı aşırı hassas olursa diyecek ki, ya siz gelecekte de 48, 49, 51, 52 BPM'lik tüm şarkılardan nefret edeceksiniz ama tam 50'ye bayılacaksınız.

Öyleyse ona uygun bir sürü öneri sıralayayım. Sonuçta bu bir eğitim ve her eğitimin amacı tam da derste gördüğünüz soruların cevabını ezberletmek değil, gelecekte karşılaşacağınız benzer soruları çözmenizi sağlamaktır. Matematiksel düşünmeyi sevenler için bir ekleme yapayım. Burada anlatılanların matematikteki karşılığı ne?

Çok basit bir linear model düşünün, bununla anca bir çizgi çizebiliriz. Deminki örnek için yetmeyecektir. Çünkü orada nasıl bir çizgi olursa olsun bazı noktalara çok uzak kalacak. Ama çok dereceli bir polinomyal kullanırsam, o zaman tüm noktaların tam da üstünden geçecek garip grup bir eğri yapabilirim.

Hatta bu kaçınılmaz olur. Aynı şey çok sayıda özelliğe aynı anda bakınca da olur. Yani çok değişkenli bir formülün varsa da mümkün. Genel amaç, modelin toplam karmaşıklığının örneklem büyüklüğüne, burada nokta sayısıyla belirttiğimiz şeye fazla yaklaşmaması.

Örneklem ne kadar büyük olursa, overfitting ihtimali o kadar azalır. Dolayısıyla biraz karmaşık model ve epey büyük örneklem en iyi kombinasyon gibi gözüküyor ama örneklemin büyüklüğü bana bedavaya gelmiyor. Size bir tavsiyede bulunmadan önce bin tane şarkı dinlemenizi bekleyemem. Mühendislikte kusursuz çözümler yok.

Her seçimin bir bedeli var. Parantezi kapayalım. Biraz önce çok sayıda özelliğe aynı anda bakmaktan bahsettim ya, biraz ileri atlamış oldum. Biz şu ana kadar sadece iki özelliğe baktık.

Şarkı türü ve tempo. Onlara da tek tek baktık. Muhtemelen tek başlarına pek işe yaramazlar. Ben mesela hızlı rock severim ama hızlı elektronik müzik sevmem.

Sırf tempoya göre bir ayrım yapsam hata oranı yüksek çıkar. Öyleyse ikisini birden ele alalım. Her şey deminkiyle aynı olacak, sadece fazladan bir boyut ekliyoruz. İlişki grafiği üç boyutlu olacak mesela.

Tür, tempo ve beğeni seviyesine birlikte bakıyorum. Dinlediğiniz her şarkı bu üç boyut içinde dağılmış birer nokta. O noktalar arasındaki ilişkiyi modellemek için de bir çizgi veya eğri yetmeyecek, iki boyutlu bir yüzey gerekecek. Emektar Excel'imiz yine öfleyip öfleyip bunun formülünü bulur ve artık yeni şarkıları ne kadar beğeneceğinizi bulmak için tek yapmam gereken tür ve tempo bilgisinin o yüzeydeki iz düşümüne bakmak olur.

Bunları gözümüzde canlandıralım diye söylüyorum. Yoksa hesap kitap için gerekli değiller. Zaten başka başka özellikler ekledikçe artık gözümüzde canlandıramayacağımız kadar çok boyutlu bir hesap olacak. Enstrümanlar, ses seviyesi, dans edilebilirlik, uzunluk, şarkı sözü yoğunluğu, duygusal mod... Kimini insanlar dinleyip etiketlemiş,

kimi objektif olarak ölçülmüş. Pandora bu konuda ayrı bir seviyede. Music Genome Project diye kendi geliştirdikleri bir sistem kullanıyorlar. Rock ve pop şarkılar için 150 farklı özellik belirlemişler.

Rap için 350, jazz için de 400. Elektro gitarın distortion seviyesinden tut, vokalistin cinsiyetine kadar akla gelen gelmeyen her şey var. Bunlara gen diyorlar. Valla rock ve popun aynı sayıda gen sahibi olması beni biraz üzdü.

Ne yapalım artık? Bir müzisyen oturuyor, yarım saatlik bir değerlendirme süreci sonunda hepsini notlandırıyor. Bazen başka bir müzisyen de bakıyor kontrol için. Muhtemelen çıkan her şarkı için bunu yapamıyorlardır.

Ama tüm klasikler için yapılmıştır. Ve onları baz alarak diğer şarkıların bu özelliklerini öğrenmek de mümkün. Mesela enerji diye bir özellik var. Bunu birileri dinleyip karar vermiş, bin tane şarkının enerji seviyesini etiketlemişler.

Şimdi yapmamız gereken enerji için bir makine öğrenimi modeli geliştirmek. Şarkının diğer bilinen özelliklerini kullanacak bu model. Eğer enerji, tempo vs. gibi o diğer özelliklerin bir kombinasyonuna indirgenebilirse makine bunu öğrenir ve gördüğü bin birinci şarkının enerjisi neymiş kendi tahmin edebilir.

Sonra da onu kullanarak sizin beğenilerinizi daha rahat modeller. Sonuç olarak ne yapıyoruz? Birkaç adım geriden bakalım tüm bunlara. En baştan insanlar oturup önemli bir takım özellikleri belirlemişler.

Sonra başkaları o özellikleri ölçmüşler veya makineye ölçmesini öğretmişler. Sonra siz gelip bunları dinleyip geri bildirimde bulundukça makine o özellikler üstünden sizi öğreniyor. Genel gidişat bu. Ve tabii bu öğrendiklerini de diğer gördüğümüz yaklaşımlarla birleştiriyor.

Ki o birleştirmenin tam olarak nasıl yapılacağı da insanlara kalmış. Adı makine öğrenimi ama her tarafı insan iziyle dolu. Peki ya makine, tüm bu verileri yorumlamakta kullanacağı özellikleri de verinin kendisinden çekip çıkarabilirse? Yani bizim gelip, bak ya tempo diye bir şey var, süper faydalı, şöyle ölçüyorsun dememize gerek kalmadan bunu kendi başına bulursa?

Hatta daha garibi, tam olarak tempoyu değil de ona benzeyen bir şeyler bulursa, bize anlamlı gelecek özellikler yerine kendisi için anlamlı gelecek özellikleri çekip çıkartmasını öğrenirse. Bu modelin içini açıp baktığımızda manasız bir takım denklemler göreceğiz. Ne neye karşılık geliyor belli değil. Ama bir şekilde hepsinin toplamı eskisinden de daha isabetli tahminlerle sonuçlanacak.

Ve bu teknik öneri sistemleriyle sınırlı kalmayacak. Görsel tanımaktan tutun karmaşık metin yorumlamaya, hatta o metinleri yoktan yaratmaya da yarayacak. Evet flarsızlar, tahmin ettiğiniz gibi geldik işin gerçekten garip kısmına, derin öğrenmeye veya bazen eş anlamlıymış gibi kullanılan sinir ağlarına. Tüm bölümü pür dikkat dinlemiş, hiç bir kere bile es dememiş tüm cengaverlere buradan selam gönderiyorum.

Hepiniz arasında en azından bir açıdan birbirine komşu olan bir grup insan var. Bu podcast'ı uzun zamandır destekleyenler, kaldığımız yerden devam, Bülent Boyacı, Zafer Faydalı, Çağlar Pir, Özen Kandıralı, Rıdvan Duran, Vedat Kürşün, Sezer Sunar, Bahadır Batır, MLCT, Kadir Hacıkurt, Tanzer Bilgen ve Elad Azizli. Yakında görüşmek üzere.

Bu transkript otomatik olarak oluşturulmuştur; küçük hatalar içerebilir.

Reklam Alanı (Deneme)