Son dönemlerde hızla popülerliği artan ve aynı zamanda da korkulan bir konu Yapay Zeka ve Makine Öğrenmesi.
Kimileri zor olduğu için öğrenmekten korkuyor kimileri de konunum distopik yanları üzerine düşüncelerden korkuyor. Gelecekte bir skynet olabilir mi? makinalar dünyayı ele geçirebilir mi?
Bu tip korkular genellike olayların teknik boytunun dışında kalan kişiler için daha fazla.
Öncelikle nedir bu Yapay Zeka:
Bir yazılımın insanın yapabildiği bir işi yapabiliyor olması, diye çok genel bir tabirde bulunabiliriz. Örnek olarak satranç motorları yada oyunlardaki botları verebiliriz tabi. Ama aşağıda daha güzel bir örnek var:
Bu video Google’ın yeni sanal asistanını tanıttığı bir etkinlikten. Sanal asistan, telefonla kuaförleri arıyor ve randevu ayarlıyor. Telefonun diğer ucundaki kişi bir robot ile konuştuğunun farkıında bile değil. Farkedebileceğiniz gibi “hımm hımm” demesi herkesi hayrete düşürüyor.
Neden?
bir bilgisayara 6 basamaklı iki sayıyı çarpmasını söylerseniz. Size anında cevap verecektir. Öte yandan bu durum onun bir bilgisayar olduğunu ele verir. İnsanı insan yapan küçük nüanslar vardır. “Evet” yerine “hımm hımm” demek gibi.
Aslında bu durumu açıklamak için biraz daha geriye gitmemiz gerek. Bilgisayarların ve hatta Yapay Zeka’nın babası sayılabilecek Alan Touring dönemine. Alan Touring hakkında yazılacak pek çok şey var ancak bunlar başka bir blogun konusu.
Touring, bir yapay zekanın başarısını test etmek için “Touring Testi” adında bir sınav önerir. Önerdiği sınav çok farklı yöntemlerle yapılabilir ama özetle, karşısındakinin makina olup olmadığını bilmediği bir gözlemci, makinanın insan olduğuna kanaat getirdiğinde yapay zeka testi geçmiş sayılır. Şimdi şöyle bir örneğimiz daha var:
Görseli gördüğü anda tanıyacak fanatikler vardır elbette ama açılayalım. Bu fotoğraf Dönemin Dünya Satranç Şampiyonu G.Kasparov’un IBM tarafından geliştirilen Satranç Motoru Deeper Blue(Deep Blue 2) ile 1997’de oynadığı maç serisindem. Sonuçta G.Kasparov Depper Blue’ya yenilmişti.
İşin ilginç tarafı G.Kasparov oyunlardan birinde insan müdahalesi olduğunu öne sürmüştü. Eğer Kasparov yanılıyorsa, Deeper Blue, Touring testini geçen ilk yazılım sayılabilir.
Satranç motorları gibi bir işe odaklanmış olarak çalışan pek çok yazılım vardır. Bu tip yazılımlara Uzman Sistem denir. Yakın gelecekte uzman sistemlerin çeşitliliğinin gittikçe arttığına şahit olacağız. E-Postaların spam olup olmadığına karar veren sistemler, çeviri yapan sistemler, görüntü işleme ile nesneleri tanıyan sistemler bu gün çokça kullanılan uzman sistemlerdir.
Peki Makina Öğrenmesi nedir?
Makina öğrenmesi temeline istatistiği alan, tahmin temeline kurulu bir sistemdir. Bu tahmin yazılımın hangi davranışı seçeceğini belirlemek için de kullanılır. Basit bir örnek vermek gerekirse. Bir e-postanın spam olup olmadığını tahmin etmek için e-posta içinde geçen kelimeleri kullanabiliriz.
spam olarak ve spam değil olarak önceden sınıflandırılmış e-postalar üzerinde bir değerlendirme yapılır. Bu değerlendirmede örneğin e-postanın kelimeleri kullanılabilir. spam olan e-postalarda sıklıkla geçen kelimeler yada spam olmayan e-postalarda sıklıkla geçen kelimeler çıkartılır. Bu işleme “öğrenme” denir. sonunda yeni bir e-posta geldiğinde elimizdeki istatistiklere göre bu e-postanın spam olabilme olasılığı belirlenir. Özetle istatistik biliminin bize öğrettiği her şey bilgisayar biliminde Makina Öğrenmesi olarak yeniden vücut bulmuştur.
Neural Netwoking (Yapay Sinir Ağları)
Neural Networking makina öğrenmesinin bir başka versiyonudur. Burada İstatistik bilimi kullanılmaz. Onun yerine “Öğrenme Fonksiyonu (Learning Function)” denilen fonksiyonlar ile bir tür Lojik devre kurulmaktadır. Gözlemci yoluyla önceden sınıflandırılmış veriler (öğrenme verisi) çıktı olarak bir aktivasyon fonksionuna dönüştürülmeye çalışılır. Bu amaçla da çeşitli katmanlardan geçer.
Her bir katmanda düğümler ve bu düğümlerin de ağırlıkları vardır.
Başlangıçta bu ağırlıklar belirsizdir. Öğrenme sırasında Öğrenme Fonksiyonu ile tekrar tekrar hesaplanırlar.
Deep Learning (Derin Öğrenme)
Neural Networking’in bir aşama sonrası Deep Learning’dir. Çalışma mantığı aynı olmakla birlikte. Deep Learning’de çok sayıda gizli katman kullanılmaz. Her bir katmanın ayrı özellikleri ve işlevleri olabilir.
Neural Networking ve Deep Learning konuları özellikle son bir kaç yıldır çok yoğun bir şekilde kullanılmaktadır, oysa ki bu yöntemler onlarca yıl önce de bilinmekte idi.
Peki neden şimdi:
- Artık elimizde işlenecek çok veri var
- Artık elimizde bu işlemleri yapabilecek yeterince hızlı bilgisayarlar var.
Özellikle ikinci konu oldukça ilginç. Yapay zeka işlemlerinde matematiksel işlem gücü kuvvetli olduğu için GPU (ekran kartı işlemcisi) kullanılmaktadır. GPU’ların gelişmesini de Gamer’lar finanse etmiştir. 🙂
Bu çok kısa olmayan girişten sonra ileriki yazıların daha teknik olacağını belirmem gerek.
Eğer bu konuya meraklıysanız ve asgari düzeyde teknik bilginiz var ise, makina öğrenmesi konuları için
Java ile Spark kütüphanesini
Python ile Scikit-learn kütüphanesini kullabilirsiniz.
Derin Öğrenme Konularında ise ekran kartınızın nVidia olması şart yoksa CPU kullanmak durumundasınız ve mutlaka Python kullanmak gerekiyor. Derin Öğrenme ile ilgili öne çıkan kütüphaneler
Tensorflow ve Theano.
Her ikisi de açık kaynak kodlu. İşleri basitleştirmek için keras kullanabilirsiniz. Keras backend olarak sizin seçtiğiniz kütüphaneyi kullanır ancak daha az kod yazarsınız.
Bir sonraki yazıda görüşmek üzere