Beş yaşında bir çocuğa yüz tane kedi fotoğrafı gösterdiğini düşün. Ona hiçbir zaman "bıyıklı" ya da "sivri kulaklı" diye bir şey açıklamıyorsun. Sadece her seferinde "kedi" veya "kedi değil" diyorsun. Bir süre sonra çocuk, daha önce hiç görmediği kedileri garip açılardan, garip ışıkta çekilmiş olsalar bile kendi kendine tanımaya başlıyor. Kimse ona kural kitabı vermedi ama yine de kendi kendine çözebildi.
Derin öğrenme özünde tam olarak bu.
Peki bu tam olarak ne?
Deep learning, bilgisayarların devasa veri yığınlarından örüntü öğrenmesini sağlayan bir makine öğrenmesi dalıdır. Bunu yaparken yapay sinir ağı denen bir yapı kullanıyor, beynindeki nöronların birbirine bağlanma şeklinden biraz esinlenilmiş bir yapıdır.
Bir programcının oturup "eğer görüntüde yuvarlak bir şeklin üstünde sivri üçgen şekiller varsa muhtemelen kedidir" gibi kurallar yazması yerine, ağ binlerce, hatta milyonlarca etiketlenmiş örneğe bakıyor ve kedi ile tost makinesini birbirinden ayırt edene kadar kendini yavaş yavaş ayarlıyor.
"Derin" kısmı, ağın üst üste dizilmiş birçok katmandan oluşması demek. Her katman, kendinden öncekinden biraz daha soyut bir şeyi fark ediyor:
- İlk katman muhtemelen kenarları ve renkleri fark eder.
- Bir sonraki katman şekilleri fark eder, kıvrımlar, köşeler, dokular..
- Birkaç katman sonra gözleri, kulakları, kürk desenlerini tanımaya başlar.
- Son katmanda ise kendinden emin bir şekilde "evet, bu bir kedi" der.
Bunların hiçbirini bir insan oturup kodlamadı. Ağ, yeterince örnek görüp yanlış yaptığında düzeltilerek kendi iç anlayışını kendisi inşa etti.
Peki gerçekten nasıl öğreniyor?
İşte eğlenceli kısım burada. Ağ bir tahmin yapıp yanıldığında, sadece omuz silkmiyor. Geri yayılım (backpropagation) denen bir süreç çalıştırıyor. Bu süreç aslında ağın kendi kendine şunu sorması gibi bir şey: "Tamam, milyonlarca iç ayarımdan hangileri beni yanlış cevaba itti, ve ne kadar itti?" Sonra bütün bu ayarları doğru yöne doğru biraz kaydırıyor.
Bunu milyonlarca örnek üzerinde, binlerce kez tekrarladığında, ağ yavaş yavaş kendini gerçekten işe yarar bir şeye dönüştürüyor. Buna "programlama" demek yerine, hiçbir insanın tek başına yönetemeyeceği ölçekte, çok sabırlı bir deneme-yanılma süreci demek daha doğru.
Bu yüzden deep learning'in gerçekten iyi olması için iki şeye ihtiyacı vardır:
- Bol miktarda veri.. En azından internet bunu neredeyse bedavaya sağladı.
- Ciddi işlem gücü. Özellikle GPU'lar, çünkü bütün bu işin özünde yatan devasa miktardaki matrix matematiğinde çok iyiler.
Bu ikisi olmadan, fikir yıllarca sadece akademik makalelerde kaldı, pratikte pek işe yaramadı. Ucuz GPU'lar ve internet ölçeğinde veri setleri ortaya çıkınca, deep learning "ilginç bir akademik fikir" olmaktan çıkıp telefonundaki uygulamaların yarısını çalıştıran şeye dönüştü.
Aslında zaten kullanıyorsun
AI alanında çalışmana gerek yok, deep learning zaten etrafını sarmış durumda. Sessizce şunların arkasında çalışıyor:
- Telefonun yüzünü gördüğünde açılıyor
- Spotify veya Netflix neyi seveceğini tahmin ediyor
- Instagram otomatik olarak fotoğraflarındaki kişileri etiketliyor
- Google Translate cümleleri düzgün bir şekilde Türkçe veya İngilizce'ye çeviriyor
- Otonom arabalar yolun nerede bittiğini ve kaldırımın nerede başladığını anlıyor
- En son olarak, büyük dil modelleri, çok büyük, çok derin bir sinir ağıdır
Deep Learning vs. Machine Learning
Kısa bir netleştirme, çünkü insanlar bunları sürekli birbirine karıştırıyor: deep learning, makine öğrenmesinin bir alt kümesi, onun yerini alan bir şey değil.
Klasik makine öğrenmesinde genelde bir insanın hangi "özelliklerin" (feature) önemli olduğuna manuel olarak karar vermesi gerekir. Birinin oturup "modelciğim, bıyık uzunluğuna ve kulak şekline dikkat et" demesi lazım. Deep learning bu adımı atlıyor. Ona ham pikselleri, ham sesi, ham metni ver, neye dikkat etmesi gerektiğini kendisi bulsun.
Peki bedeli ne? Deep learning genelde oraya varmak için çok daha fazla veriye ve çok daha fazla işlem gücüne ihtiyaç duyar. Küçük, basit bir problem için, temel bir makine öğrenmesi modeli gerçekten daha akıllıca bir seçim olabilir. Deep learning, problem karmaşık, çok boyutlu ve arkasında ciddi miktarda veri olduğunda parlıyor. görüntü, ses, dil gibi alanlarda.
O kadar şeyi okuyamam diyenler için
Biri sana bir iş görüşmesinde deep learning'i açıklamanı isterse, şunu diyebilirsin:
"Bilgisayarların; görüntü, ses, metin gibi ham veriden doğrudan öğrenmesini sağlayan bir yöntem. Basit matematiksel işlemlerden oluşan katmanları üst üste dizerek, bir insanın 'şuna dikkat et' diye kural yazmasına gerek kalmadan, inanılmaz karmaşık örüntüleri tanımayı öğreniyor."
Aslında hepsi bu kadar. Ne büyülü bir şey, ne de insan gibi düşünen bir kara kutu. Sadece şaşırtıcı derecede basit parçalardan oluşan, çok büyük ve çok sabırlı bir örüntü tanıma makinesi.
Kaynaklar ve ileri okuma
- LeCun, Y., Bengio, Y., Hinton, G. (2015). Deep learning. Nature, 521, 436–444.
- Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep Learning. MIT Press.