Bilgisayarlar Düşünebilir mi? Bölüm 2: Derin öğrenme nedir, Neden bu kadar başarılı?

Bilgisayarla görmede kullanılan derin ağların çok katmanlı yapısının sadeleştirilmiş bir gösterimi (Ian Goodfellow’un bir çiziminden uyarlama).

Derin öğrenme olarak bilinen yapay öğrenme teknikleri, bilim tarihi açısından çok kısa sayılabilecek 5-6 yıllık bir zaman diliminde konuşmayı, iki dil arasında çevirme yapmayı, araba sürmeyi, Go gibi kutu oyunlarını veya Starcraft gibi bilgisayar oyunlarını oynamayı en az insanlar kadar veya onları geçen düzeyde öğrenmiş durumdalar. Çok değil, daha bir on yıl öncesinde bu başarıların hiçbirini hayal dahi etmek pek mümkün değildi, elde edilen bu sonuçlar bazen bu modelleri geliştiren biz araştırmacıları bile şaşırtıyor. Yapay zekâ yolunda şimdiden önemli bir mihenk taşı olduğu herkesçe kabul edilen derin öğrenme, bilgisayar bilimleri dışında, içinde veri işleme ve öngörme analizi barındıran birçok bilim dalı için de faydalı bir araç haline gelmeye başladı. Örneğin, derin öğrenme yaklaşımları sayesinde patojenlerin hücreleri nasıl etkilediği analiz edilebiliyor, insan soy ağacının kayıp parçaları doldurulabiliyor, düzensiz kalp ritimleri tespit edilebiliyor ve ışık eğrileri analiz edilip ötegezegenler bulunabiliyor. Birleşmiş Milletler’in Ocak 2019’da yayınladığı bir rapora göre, derin öğrenmenin itici güç olduğu yapay zekâ sistemleri teknoloji dünyasının ötesinde günlük yaşamın tüm alanlarında çok  büyük değişimler yapma potansiyeline sahip. Bu teknolojiler toplum yararına da kullanılmaya başlandı ki bunun güzel bir örneğini ülkemizde yakın zaman önce sonuçlanan Mülteciler için Büyük Veri Yarışması‘nda gördük.

İkinci bölümünü okumakta olduğunuz yazı dizimizin ana başlığı, modern bilgisayar bilimleri ve yapay zekâ alanının kurucusu kabul edilen İngiliz matematikçi Alan Turing’in 15 Mayıs 1951’de BBC radyosunda yayınlanan bir konuşmasından geliyor. Amacımız, derin öğrenme sayesinde tekrar alevlenen “düşünen makineler”in insan zekâsına gerçekte ne kadar yaklaştığına dair görüşlerimizi paylaşmak ve bir nebze olsun derin öğrenme etrafında yaratılan bu heyecan perdesini aralayıp arkasına bakmak. İlk bölümünde “Yapay zekâ nedir?” ve “Bilgisayarla Görme Neden Zor?” sorularına yanıt aramıştık. Bu sefer rotamızı doğrudan derin öğrenmeye çeviriyoruz. “Yapay öğrenme dendiğinde ne anlamalıyız? Yapay öğrenmenin klasik anlamda programlamadan farkı ne? Derin öğrenmeye dayalı yaklaşımlar nasıl çalışıyorlar, neden bu kadar başarılılar? cevabını aradığımız sorular olacak. Bu noktada tekrar ufak bir not düşmekte fayda var, kendi araştırma alanımız yapay zekânın özel bir alt alanı olan bilgisayarla görme olduğu için, ele alacağımız konulara çoğunlukla bu pencereden yaklaşacağız. [1]

Yapay Öğrenme Nedir?

Bilgisayarla görmenin zorluğunu anlatan 1425 nolu xkcd.com karikatürü (2014).

Yapay öğrenme bilgisayar sistemlerinin belirli bir görevi örnekler üzerinden öğrenmesini sağlayan bir yapay zekâ yaklaşımıdır. Geleneksel programlama anlayışında herhangi bir yapay zekâ programı pekala bir programcı tarafından kodlanabilir ki bu kuralcı yaklaşımda her bir kod satırı aslında programcının program uzayında bilgisayarın izlemesi gereken bir davranışı modeller. Bu noktada, isterseniz,  ele aldığımız görüntü sınıflandırma problemine geri dönelim. Yani amacımız, verilen bir görüntünün belli sayıda nesne sınıfından hangisine ait olduğunu bulmak olsun. Bu işlem, küçük miktardaki bir veri üzerinde yerine getirilecekse belki bu kısıtlı verideki bazı özellikler incelenip bu eldeki örnekleri başarıyla sınıflandırabilecek bir bilgisayar programı yazılabilir. Ancak asıl beklentimiz bu tarz bir programın daha önce hiç görmediğimiz görüntüler üzerinde de doğru tahminlerde bulunmasıysa işimiz bir hayli zor! İşte yapay öğrenme sistemleri, girdi ile çıktı arasındaki bu tarz karmaşık dönüşümleri önceden belirlenmiş (yetersiz) kuralları takip ederek değil, verinin kendisinden öğrenerek gerçekleştirirler. Örneğin, farklı kedilerin değişik pozlardaki hallerini makineye göstererek, makinenin bu nesne sınıfını diğer sınıflardan doğru ayırt edecek özellikleri otomatik olarak ortaya çıkarmasını sağlayabiliriz ve doğal olarak böyle bir sistemin genelleme performansı çok daha yüksek olacaktır.

Geleneksel programlama karşısında derin öğrenmede izlenilen yaklaşım (Pieter Abbeel’in bir slaytından uyarlama)

Derin Öğrenme Nedir?

Derin öğrenme, insan sinir sisteminin bir parçası olan sinir ağlarından ilham alan bir “gösterim öğrenme” yaklaşımıdır. Bir derin ağ modelinde karmaşık bir düzende birbirine bağlı çok fazla sayıda “yapay” nöron yer alır ve her nöron çoklu işlem katmanlarından oluşan bu yapı içinde farklı soyutlama düzeylerinde ham verinin bir gösterimini kodlar. Veri işlenirken bu nöronlar, aynı biyolojik emsalleri gibi çeşitli tetikleyicilere bağlı olarak ateşlenip diğer nöronlara sinyal gönderirler. Bu karmaşık yapay öğrenme modelini yazının başındaki örnek çizim üzerinde açıklamaya çalışalım isterseniz. Uygulanan hiyerarşik veri işleme sürecinde her katman bir önce gelen katmandan bir girdi alır ve bu veri üzerinde bir sonraki katmana girdi oluşturacak bir dönüşüm gerçekleştirir. Burada ilk katman ham veriye karşılık gelen girdi görüntüsündeki piksellerin parlaklık değerleri iken son katmanın çıktısı ise ilgili nesne sınıflarına ait olma olasılıklarını gösterir. Milyonlarca nöron içeren bu derin ağlar, karmaşık problemlerle işte bu şekilde, yani onları daha küçük ve basit aşamalara bölerek başa çıkarlar. Binlerce örnek üzerinden gerçekleşen öğrenme esnasında bu karmaşık ağ yapısı içinde yer alan nöronlar arasındaki bazı bağlar kuvvetlenir veya zayıflar ki ilgili derin ağ modeli girdi verisinden daha doğru sinyalleri yakalayabilsin. Örneğin, kedi örneğimize geri dönecek olursak görüntüdeki bir kediyi tanıyabilen bir derin modelde kedileri kedi yapan görsel özellikler bir grup nöron tarafından kodlanır. Bir katmanda bir grup nöron kedilerin dokusal özelliklerini yakalarken (sarman kedilerin kendilerine has sarımsı ve turuncu desenleri gibi), başka bir katmandaki farklı bir grup ise gözleri veya bacakları görüntüde bulmaya çalışır. Görüntü piksellerinden yola çıkarak yakalanan tüm bu özelliklerin hiyerarşik olarak birleştirilmesi ile de görüntüde yer alan nesne için nihai olarak “kedi” veya “kedi değil” kararı verilir.

Derin Öğrenmenin Kökleri

NY Times’ın 8 Temmuz 1958 tarihli sayısından Algılayıcı Perceptron’un ele alındığı bir haber küpürü.

Derin öğrenmenin köklerinin yapay sinir ağlarına uzandığından bahsetmiştik. Bu araştırma alanının çıkış noktası olarak Warren McCulloch and Walter Pitts’in 1943 yılında nöronların birer mantıksal geçit olarak modellenebileceğini öne sürdükleri çalışma gösterilir. Bunu takiben 1958 yılında Frank Rosenblatt tarafından önerilen algılayıcı modeli ise basit bir eğitim algoritmasıyla ikili sınıflandırma problemlerini çözebilen ve bu alana olan ilgiyi körükleyen sığ bir ağ modelidir. Marvin Minsky and Seymour Papert, 1969’da yayınlanan Perceptrons adlı kitaplarında bu modelin barındırdığı bazı eksikliklere dikkat çektiler ki bu kitap pek çok kişi tarafından ilk yapay zekâ kışı olarak adlandırılan bir dönemin başlangıcı kabul edilir. Bu dönemde yapay sinir ağlarına verilen finansal destekler bitme noktasına gelmiş ve bunun sonucunda bu modellere olan ilgi büyük ölçüde azalmıştır. 1990’lı yıllarda, algılayıcılardaki bu eksiklik çok katmanlı bir yapıya taşınmalarıyla çözülmüş olsa da eğitimlerindeki zorluklar ve mevcut bilgisayar sistemlerindeki yetersizlikler, bu modelleri diğer sığ yapay öğrenme modellerinin gerisinde tutmuştu. Bu süreçte Geoffrey Hinton, Yann LeCun ve Yoshio Bengio gibi az sayıdaki araştırmacı ise yapay sinir ağları ile ilgili önemli çalışmalar gerçekleştirdiler ve derin öğrenmenin temellerini attılar. Meraklısına Geoffrey Hinton’ın, ondokuzuncu yüzyılda gerçekleştirdiği çalışmalarla simgesel yapay zekâ çalışmaların omurgasını oluşturan Boole cebirine adını veren George Boole’un büyük büyük torunu olduğunu not düşelim. Ayrıca bu noktada, Kanada’nın derin öğrenmedeki rolünü es geçmememiz gerekiyor. Tüm dünyada bu araştırma konusundaki destekler tırpanlanırken Kanadalı bir araştırma enstitüsü olan Canadian Institute for Advanced Research (CIFAR) bu araştırmacıların çalışmalarına devam etmeleri konusunda onların en büyük destekleyicisi olmuştur.

Günümüze yaklaşacak olursak, 2012 yılında yapay zekâda bugünlerin işaret fişeğini ateşleyen sessiz bir devrim yaşandı ve bilgisayarla görme bunun tam göbeğinde yer alıyordu. Kanada Toronto Üniversitesi’nden pek de bilinmeyen bir grup, her yıl düzenlenen zorlu ImageNet görüntü sınıflandırma yarışmasında bu problem üzerinde yıllardır çalışan ünlü araştırma gruplarını geride bırakarak, ezici bir üstünlükle birinci oldu. Geoffrey Hinton’ın gözetimindeki grubun bu devrimsel nitelikteki başarısının altında bir derin sinir ağ modeli kullanmaları yatıyordu. Bakacak olursak bir yapay öğrenme yaklaşımı olarak derin öğrenmenin şu üç ana düşünceye dayandığını söyleyebiliriz:

  1. Bileşimsellik (Compositionality)
  2. Uçtan uca öğrenme (End-to-end learning)
  3. Dağıtık gösterimler (Distributed representations)

Burada bileşimsellikten kastedilen derin ağların doğrusal olmayan dönüşümler gerçekleştiren çoklu katman yapısından oluşmasıdır ki buna dayalı olarak bu ağlar farklı soyutlama düzeylerinde çoklu öznitelikler çıkartırlar. Uçtan uca öğrenme kavramı ise çıkartılması amaçlanan bu özniteliklerin belirli bir amaca yönelik olarak ham verinin kendisinden öğrenilmesidir. Klasik programlama anlayışı ile yapay öğrenme arasındaki farkı anlatırken değindiğimiz üzere, özel olarak tasarlanmış, el yapımı öznitelikler kullanmaya kıyasla probleme özgü hiyerarşik özniteliklerin otomatik ve etkin biçimde örneklerden öğrenilmesi çok daha yüksek başarımlar elde edilmesini sağlar. Dağıtık gösterimler ne diye sorarsanız o da derin modellerde hiçbir nöronun bir kavramı tek başına kodlamıyor oluşunu ifade eder. Yani her kavram bir grup nöron tarafından temsil edilirken bir nöron birden fazla kavramın gösterimine etki edebilir durumdadır ki bu modellerin temsiliyet kabiliyetinin yüksek olması demektir. Örneğin, görme problemlerini çözmek için eğitilmiş derin modellerde, en alt düzeyde yer alan nöronlar, kendi görme sistemimizde olduğu gibi, kenar, köşe ve renklere özelleşmiş durumdayken, orta düzeydeki nöronlar geometrik desenleri ve nesne parçalarını kodlarlar. Nesne veya sahne gibi soyut kavramların gösterimleri ise en üst katmanlarca yakalanır.

Neden dün değil de bugün başarıyoruz?

Derin öğrenmenin geçmişini ve ana dayanak noktalarını anlattık. Peki bu modeller bu başarıları neden dün değil de bugün elde ediyorlar, değişen ne oldu? Bu sorunun tek bir yanıtı yok elbette; tekniklerdeki ve ağ mimarilerindeki gelişmelerin yanında birkaç önemli etkenin daha bir araya gelerek buna neden olduğunu söyleyebiliriz.

Bu etkenlerden belki de en önemlisi, sayısal verinin hacmindeki büyük artış. Büyük veri çağında yaşıyoruz. Bir diğer etken ise bu modellerin eğitiminde kullanabileceğimiz büyük çaplı veri kümelerinin bulunuyor olması ve her geçen gün bunlara yenilerinin eklenmesi. Hiç süphesiz donanım alanında yaşanan teknolojik gelişmeler de bu milyonlarca parametre içeren devasa modellerin eğitimlerinin pürüzsüzce gerçekleşmesinde büyük pay sahibi. Bilgisayar işlemciniz çok kuvvetli bile olsa aylar sürecek model eğitimleri günümüzde binlerce çekirdeğe sahip olan ve matris işlemlerini çok hızlı yapabilen yeni nesil grafik işlemcilerde birkaç saat içinde tamamlanabiliyor. Son olarak şunu da eklememiz gerekiyor ki yapay öğrenme alanındaki araştırmacıların bir çoğunun benimsemiş olduğu açık veri/açık yazılım hareketi alana yeni araştırmacıların girişini kolaylaştırıyor.

Bugün neyi başarıyoruz?

Bilgisayarla görme özelinde son yıllarda yaşanan gelişmelere bir kaç örnek vermek gerekirse nesne tanıma ve bölütleme, poz kestirimi, görüntü altyazılama ve bilgisayar oyunu oynama gibi farklı konuları sayabiliriz. Artık bir sahnedeki farklı nesneleri hatasız biçimde tespit edip görüntü içinde onları diğer nesnelerden ayırabiliyoruz.

Mask R-CNN modeli ile nesne tanıma ve bölütleme.

Benzer şekilde insanların üç boyutlu poz bilgisini de gerçek zamanlı olarak çıkabiliyoruz.

DensePose modeli ile üç boyutlu poz kestirimi.

Bilgisayarla görme ve doğal dil işlemeye birleştiren görüntü altyazılama modelleri ile artık derin modeller kullanarak verilen görüntülerin doğal dilde açıklamalarını otomatik olarak başarıyla üretmek olası. Kendi araştırma grubumuz bünyesinde öğrencilerimizin gerçekleştirdikleri çalışmalar sayesinde bu modeller artık Türkçe de konuşabiliyorlar.

Derin öğrenme ile görüntü altyazılama. Örnek iki görüntü için solda Mind’s Eye modelinin ürettiği İngilizce ve sağda araştırma grubumuzca geliştirilen modelin ürettiği Türkçe açıklama

Görüntü düzenlemeden bir örnekle devam edecek olursak, derin modeller sayesinde bir görüntünün stilini bir başka görüntüye aktarmak hiç bu kadar kolay olmadı. Bu tarz uygulamalar akıllı cep telefonlarımıza bile girmeye başladı.

Derin öğrenme ile stil aktarımı. Solda örnek bir girdi görüntüsü ve sağda ortadaki hedef görüntüsünün stili esas alınarak elde edilen çıktı görüntüsü.

Yapay zekâ alanında ImageNet ile başlayan devrimsel gelişmelere bir örnek de pekiştirmeli öğrenme özelinde oyun oynayan yapay sistemlerde yaşanıyor. Bu etkileşimli yapay öğrenme sistemler, çok temel olarak gerçekleştirebilecekleri eylemlerin olası sonuçlarını tartarak uzun vadede toplayacakları birikimli ödülleri en üst düzeye çıkarmayı öğreniyorlar. Kuşkusuz bu kolay bir öğrenme problemi değil; bu modeller klasik Atari oyunlarında ortalama bir oyuncunun başarısını yakalamak için oyun başında aylarını geçirmeleri gerekiyor. Örneğin bu oyunlardan bir tanesi sıra sıra dizilmiş tuğlalara bir top attığınız ve bunların her birini yok etmeye çalıştığınız Breakout oyunu. Breakout oyununa yazımızın bir sonraki bölümünde tekrar döneceğiz. Bu arada daha geçenlerde bu bağlamda bir başka önemli gelişme daha yaşandı. Deepmind’ın AlphaStar modeli, profesyonel oyuncuları StarCraft 2 gibi zorlu bir oyunda 10-0 yendi.

DeepMind’in DQN modeli Breakout Atari oyununu kendi başına oynuyor.

Starcraft 2 oyununda profesyonel oyuncuları yenen DeepMind’ın AlphaStar modelinin öyküsü.

Son yıllarda yapay zekâ ve yapay öğrenmede elde edilen başarıların altında ağırlıkla derin öğrenme yatıyor. Yazı dizimizin bu bölümünde bu modellerin çalışma prensiplerini açıklamaya çalıştık ve güncel çalışmalardan örnekler sunduk. Peki bu modeller insan zekâsı ile kıyaslandığında hangi noktadalar, tahminen en çok bunu merak ediyorsunuz. Yazı dizimizin son bölümünde bu soruyu derinlemesine mercek altına alacağız.

Aykut Erdem (Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü öğretim üyesi)
Erkut Erdem (Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü öğretim üyesi)

[1] Bu yazı dizisinin temeli 6 Mayıs 2018’de Boğaziçi Üniversitesi’nde düzenlenen International Symposium on Brain and Cognitive Science 2018 etkinliğinde Ethem Alpaydın moderatörlüğünde gerçekleşen panelde Aykut Erdem’in sunumuna dayanıyor.