6 Nisan 2017 Perşembe

Yapay Zeka ve Yapay Öğrenme - I

Günlük hayatımızın her köşesinde artık bir uygulamasını bulduğumuz 'yapay zeka', bilim kurgu kitap ve filmlerinden fırlamışçasına son zamanlarda epey sesini duyurmaya başladı. Konunun ismi gereği epey iddialı olduğu kesin; fakat bahsedilenler ve elimizdeki teknoloji ne ölçüde 'zeki' bilgisayarlar iddiasını karşılıyor? Konuyu robotlar ve zeki bilgisayarlar düzleminden biraz daha pratik ve günümüz problemlerine getirilen yeni yaklaşımlar perspektifinden incelemek çok daha sağlıklı olacak. Kendim de fizik tarafında son dönemlerde uygulamalarıyla ilgilenmeye başladığım bu konu birçok alanda çığır açma eşiğinde (örnekler için tıklayınız). Yakın zamanda yayınlanmaya başlayan ve sinir-bilim konusunda güncel tartışmalara yer veren 'Nöroblog Podcast' sesli yayınının geçen haftaki bölümünde, programın yapımcıları Onur Arpat ve Taner Yılmaz ile bu konuyu tartıştık.


Yayını yukarıdaki arayüz (Soundcloud) üzerinden (şu bağlantıdan) ya da iTunes'dan abone olarak dinleyebilirsiniz. 

Programın temeli benim de kitaplarını ilgiyle okuduğum (biri Pulitzer ödüllü: 'Tüm Hastalıkların Şahı-Kanserin Biyografisi'), kendisi aynı zamanda kanser uzmanı bir doktor olan Siddhartha Mukherjee'nin New Yorker'ın 3 Nisan tarihli sayısında yayınlanan yazısı: AI vs MD: 'Yapay zeka tıp doktoruna karşı'. Programda, makalede dile getirilen konuları detaylıca tartışmaya çalıştık; klasik 'kural tabanlı sistemler'den günümüz öğrenen sistemlerine ve bunların başardıkları ve eksikliklerine işaret ettik; aynı zamanda bu sistemlerin bir takım rutin işleri yapmak konusunda biz insanların yerini alıp alamayacaklarına dair 'spekülasyon' seviyesinde olsa da birkaç şey söylemeye çalıştık.

Bu konu artık gündemin büyük bir kısmını oluşturuyor. Her geçen gün insanı en zorlu oyunlarda yenen yapay zeka sistemlerinden, sürücüsüz arabalara, Elon Musk ve diğer Silikon Vadisi tayfasının beyin-bilgisayar arayüzü üzerine 'vizyoner' girişimlerinden ses ve görsel tanımada insanları çoktan geride bırakmış sistemlere kadar birçok ilginç ve belki de haklı  olarak 'kaygılandıran' gelişmelere tanık oluyoruz. İnsanı tanımlayan ve birçoklarına göre diğer tüm canlılardan ayıran 'bilinç' ve 'zeka' özelliklerinin artık yavaş yavaş bilgisayarlar için kullanılmaya başlaması bu tartışmaları alevlendiren şeyler. Bu gibi tartışmaları sağlıklı bir şekilde yapmak, konuyu abartılardan ve 'naif iyimserlik'ten uzak bir düzlemde, yanlış anlaşılmalara neden olmayacak bir şekilde yapmak için her yönden inceleyip, açık bir şekilde ele almak büyük önem taşıyor.

Sesli yayında konuştuklarımız üzerine birkaç ekleme yapıp, podcast ortamında yalnızca konuşarak ifade edemediğimiz kavramları biraz daha detaylı bir şekilde ele almak amacım. İki bölüm olacak bu yazının ilk kısmında ele alacağım konu, şu anda elimizdeki yapay öğrenme yöntemlerinin ne olduğu ve ne olmadığı.

Yapay öğrenme (İng: machine learning) 'yapay zeka' olarak bilgisayar bilimleri-matematik-istatistiğin kesiştiği alanda kullanılan yöntemlerin bir kısmını ifade ediyor. Bu alanda temelde üç farklı yöntem var:
  • Güdümlü öğrenme (supervised learning): Elinizde bir probleme dair verileriniz var ve bu verilerin her biri etiketlenmiş. Örneğin kanser hücrelerini tanıyabilen, öğrenebilen bir sistem oluşturmak istiyorsunuz. Bu sisteme öncelikle kanser hücresi olduğu ya da olmadığı bilinen örnekleri gösterip sistemi eğitiyorsunuz. Sistem bu örnekler ve örneklerin etiketleri ('sınıfları') üzerinden istatistiksel çıkarımlarda ve genellemelerde bulunup öğreniyor. Artık sisteme etiketlenmemiş, örneğin kanserli olup olmadığı bilinmeyen bir doku örneği verdiğinizde sistem size bu dokunun kanserli olup olmadığını (belirli bir olasılık dahilinde) çıktı olarak veriyor. Günümüzdeki yapay öğrenme yöntemlerinin büyük bir çoğunluğu (Google'ın metin çevirme sisteminden, Facebook'un yüz tanıma sistemine, Whatsapp'ın yazdıklarınızı tanımlama sisteminden sürücüsüz arabalara kadar) bu yöntemle çalışıyor. 
  • Güdümsüz öğrenme (unsupervised learning): Elinizde yine verileriniz var fakat bu verilerin etiketleri yok. Yine aynı örnek üzerinden ilerleyelim; kanserli doku hücreleri görüntüleriniz var fakat bunlardan hangisinin kanserli hücre barındırdığını bilmiyorsunuz. Bir model kurup, görüntüler üzerinde bir takım özellikler belirleyerek (örneğin hücrelerin yarıçapı, renk yoğunlukları vb.) bu özellikler üzerinden verinizin birbirinden ayrılabilir belirgin kümeler oluşturup oluşturmadığına bakıyorsunuz. Oluşan kümeleri de sonrasında inceleyerek hangi durumlara karşılık geldiğine bakıp eline geçecek yeni bir veriyi bu kümelerden hangisine düşeceğine bakarak karar veriyorsunuz. Hatta daha da ileri giderek, sınıflandırma için herhangi bir özellik tanımlamadan sistemin bu örnekleri birbirinden ayıran özellikleri kendisinin bulmasını sağlıyorsunuz. Eldeki verileri tek tek etiketlemenin kolay olmadığı durumlar için kullanılan bu yöntem kendi içinde birçok teknik zorluklar barındırıyor ve bu nedenle güdümlü öğrenme gibi 'popüler' değil, fakat geleceğin en etkili öğrenme biçimlerinden biri olacağı düşünülüyor.
Solda güdümlü öğrenme (supervised learning) yönteminde çarpı ve yuvarlak ile etiketlenmiş örnek veriler üzerinden öğrenme gösterilirken, sağda aynı veriler etiketlenmeden güdümsüz öğrenme (unsupervised learning) ile elde edilen farklı gruplar gösterilmiş (Kaynak: Andrew Ng. Coursera Machine Learning dersi materyalleri)
  • Ödüllendirme ile öğrenme (reinforcement learning): İnsanın öğrenmesine en yakın yöntem olan bu yöntemde elinizde eğitmek istediğiniz belirli bir amaca sahip bir sistem var. Örneğin satranç ya da Go gibi bir oyunda karşıdaki kişiyi yenmeye çalışan ya da  bir atari oyununda en yüksek skoru almaya çalışan bir sistem. Bu sistem belirli hareketleri yaparak ilerliyor: satranç ya da Go'da yaptığı hamleler, atari oyununda ise sağ-sol-ileri-geri gibi hareketler. Sistemin şu anki durumu üzerinden yapacağı hamlelere karşılık olarak amaca yaklaşma ihtimali yüksek olanlar için sistemi ödüllendirip bu tip hareketleri teşvik edip, aksi durumda olanları yani kaybetmeye doğru götürme ihtimali yüksek olan hamleleri baskılayıp cezalandırıyorsunuz. Böyle böyle binlerce kez deneme-yanılma yapan sistem sonunda hedefe doğru hızla koşan etkili bir sistem haline geliyor. Aşağıda AlphaGo projesi ile dünya Go şampiyonlarını deviren Google'ın Deepmind şirketinin geliştirdiği, atari oyunlarını birkaç yüz deneme sonunda öğrenen sistemleri görebilirsiniz.


Google Deep Mind'ın geliştirdiği öğrenen sistem yukarıda atari oynuyor. İlk 100 oyun sonunda epey başarısız görünen sistem birkaaç yüz oyun sonunda kısa yollar bulup adeta uzmanlaşıyor. (Kaynak: Google Deepmind)

Bu üç yöntemden şu anda 'yapay zeka'ya doğru giden yolun 'güdümsüz öğrenme' ve 'ödüllendime ile öğrenme' olduğu düşünülüyor. Fakat günümüzde en çok revaçtaki yöntem ise güdümlü öğrenme; bunun iki sebebi var:
  • Birincisi ilgili-ilgisiz herkesin 'büyük veri' diye bahsettiği konu. Artık elimizdeki tüm araçlarla sürekli veri topluyoruz. Girdiğiniz bir internet sitesinde tıkladığınız bağlantılardan, kameranız açıksa gözünüzün hareketlerine; okulda, metroda, her yerde dijital kameralarla, üzerimizdeki cep telefonları ile sürekli güncellenen konum bilgilerimizden, yürüyüş hızımıza, hangi uygulamayı ne kadar kullandığımıza türlü türlü gerekli-gereksiz tüm verileri alıp bunları kaydedip saklayabiliyoruz. Çünkü artık bunu kolaylıkla ve ucuz bir şekilde yapabiliyoruz (yapabiliyor olmamız 'yapmamız' gerekliliğini doğuruyor mu? İşte bu tartışılır!). Evimizde ufacık bir alet üzerine yerleştirilen mikroçip saniyede milyonlarca veri alma kapasitesine sahip. Üstelik bunları saklayacağı hafızalar da hızla büyüyüp ucuzlaşıyor; bu veriyi bir yerden başka bir yere aktarırken artık geniş bant internet bağlantısı sayesinde hiçbir zorluk da yaşamıyoruz.
  • İkincisi bu veriyi işleme gücümüzdeki muazzam artış. Bilgisayar işlemcilerinin performanslarındaki üssel artış (ve aynı zamanda ucuzlama), birden fazla işlemi 'paralel' bir şekilde yapabilme imkanı, tipik bilgisayarların merkezi işlemci birimlerinden (CPU-Central Processing Unit) farklı olarak ilk başta oyun ve grafik amaçlı geliştirilmiş 'grafik işlemci birimleri' (GPU-Graphical Processing Unit), hatta son zamanlarda sırf yapay öğrenme uygulamaları için Google tarafından geliştirilen özelleştirilmiş işlemciler (TPU-Tensor Processing Units) bu konuda bir devrim yaratmış durumda. Öğrenilmesi gereken milyonlarca parametre barındıran yapay öğrenme uygulamalarında milyonlarca örneği ele alıp birkaç saat/gün mertebesinde sonuç üretebilen sistemler var artık elimizde. Yakın geçmişe kadar bunun hayali bile kurulamıyordu. Donanım tarafındaki bu gelişmenin yanında, yazılım tarafında da yapay öğrenme ve istatistiksel örüntü tanıma konusunda geliştirilen programları ve bunların 'açık kaynak kodlu' olarak sunulup birçok kişi tarafından özenle geliştiriliyor olması tüm bu gelişmelere büyük bir ivme kazandırdı.

Bu gelişmeler sayesinde beş yıl öncesine kadar bir kediyi, köpekten ayırmakta zorlanan sistemler şu anda kedinizin hangi açıdan çekilmiş olursa olsun bir fotoğrafından hangi tür olduğunu söyleyebiliyor. Aynı şey tıp görüntülemelerinde kanser öncesi oluşumları erkenden tanımlayabilen sistemler için de geçerli. Örnekler birçok alan için çoğaltılabilir.

Peki bu ilerlemelere ve tüm bu çığır açan uygulamalara bakarak her şeyin kusursuz olduğunu iddia edebilir miyiz? Maalesef hayır; çünkü:
  • Şu anda kullanılan yöntemler büyük ölçüde 'veriye aç' yöntemler. Etkili sonuçlar elde edebilmeniz için sistemi kurarken çok fazla veriye ihtiyacınız var, ki sonunda size etkili örüntüler oluşturup yeni bir durumlar için daha iyi 'genellemeler' yapabilsin. Birçok alanda bu ölçekte veri bulmak çoğu zaman zor ya da tıp gibi alanlarda bu veriye erişmek 'gizlilik' sebebiyle mümkün değil. Bunu aşmak için birçok çözümler uygulanıyor (Amazon'un 'Mechanical Turk' servisi ya da daha 'pratik' doktora öğrencilerini verileri etiketlemek için kullanmak gibi) fakat bu çözümler sistemlerin veriye açlığını gidermeye yetecek gibi durmuyor. Tıpkı insan gibi birkaç örnek üzerinden etkili bir şekilde öğrenen sistemlere ihtiyaç var ve bu konuda çalışmalar bu işin geleceği olarak görülüyor (bknz: one-shot learning).
  • Kullanılan yöntemler her ne kadar bilgisayar gibi tamamen 'mantık' üzerine kurulu bir sistem üzerinde gerçekleniyor olsa da bu sistemlerin programlanmasından, sistemi eğitmek için sağlanan verilerin seçimine kadar onlarca faktör kaçınılmaz bir şekilde 'yanlılık' (bias) oluşturuyor. Örneğin bankalar kredi verecekleri müşterileri artık bu yöntemlerle belirliyorlar. Algoritmalar kredi başvurusunda bulunan kişinin sosyo-ekonomik bir takım bilgilerini değerlendirip bir sonuç çıkarıyor ve şu kişiye şu kadar riskle kredi verilebilir diyor. Fakat bu sistemi eğitirken kullanılan veri içinde tüm sosyal grupların eşit bir şekilde temsil edilip edilmemesi, çıkacak sonucu doğrudan etkileyebilme gücüne sahip. Bir sonraki yazıda da göreceğimiz gibi bu sistemler çoğu zaman geriye dönük sorgulanamadığı yani bu kararı neden verdiğinin cevabını bize vermediği için bu yanlılıkları fark etmek çok çok güç. Bu özellikle toplumsal-sosyal konularda büyük tehlikeler barındırıyor. Bu konular 'teknoloji çılgınlığı' ve fütürizm modunda ilerleyen tartışmalara henüz yansımasa da günlük hayatta bizi çoktan etkilemeye başladı bile. (Konuyla ilgili şu etileyici kitabı tavsiye ederim: Weapons of Math Destruction: How Big Data Increases Inequality and Threatens Democracy)
  • Her ne kadar tüm sorunlarımıza çare olacak gibi pazarlansa da bu yöntemler şu anda kabaca tahmin etme, sınıflandırma gibi 'alt-seviye' işler yapıyor; 'karar alma', 'muhakeme etme', 'karşılaştırma' gibi daha üst-seviye işler yapabilmeleri için mevcut yöntemlerin üzerine tamamen farklı bir perspektif gerektiği vurgulanıyor. Şu anki baş döndürücü gelişim hızına bakarak bunun için yakın gelecek için umutluyuz, fakat bahsi geçen problemlerin epey çetin problemler olduğunu göz önünden çıkarmamak gerek!
Bir sonraki yazıda sesli yayında da bahsettiğimiz 'Yapay Sinir Ağları' konusunu biraz daha detaylı ve bir örnekle açıklamayı planlıyorum.

Kaynaklar:

0 yorum:

Paylaş!

 

Copyright © 2010 Gök Günce | Blogger Templates by Splashy Templates | Free PSD Design by Amuki