Ana Sayfa 149. Sayı Bilgisayarlar ve Go: Lee Sedol neye/niye yenildi?

Bilgisayarlar ve Go: Lee Sedol neye/niye yenildi?

581

AlphaGo programı Lee Sedol’ü yenerken, Kasparov’u yenen Deep Blue programına göre binlerce kez daha az pozisyonu inceliyordu. Bu da AlphaGo programının insanın oyun oynama süreçlerine daha benzer bir şekilde davranabildiğini ve insan zihninde gerçekleşen süreçlere benzer işlemlerin belki de ilk defa derin öğrenme yaklaşımı ile bilgisayar hafızasında da gerçekleştirilebildiğini öne sürebiliriz.

1997 yılında “Deep Blue” adı verilen bilgisayar programının dünya satranç şampiyonu Gary Kasparov’u yenmesi basında oldukça geniş yer almıştı. Bu durum makinelerin insan zekasına bir meydan okuması olarak algılansa da, birçok tartışmada satranç programının aslında gerçek bir zekaya sahip olmadığı, sadece çok hızlı işlem yapabilme kapasitesi sayesinde Kasparov’u alt edebildiği özellikle vurgulanmıştı. Ayrıca satranç oyununda elde edilen başarıya rağmen, bilgisayarlar Go oyununda ancak vasat bir performans sergilemekteydiler. Bu durum da bilgisayar programlarının aslında “zekice” oyun oynamadıklarına dair en büyük kanıt olarak gösterilmekteydi. Gerçekten de 2015 yılına kadar en iyi Go programı ancak orta düzey bir Go oyuncusu performansına sahipti. Usta bir Go oyuncusunun bir bilgisayar programına yenilmesi mümkün değildi. Ancak “Google Deep Mind” araştırma grubunun geliştirdiği AlphaGo adlı bilgisayar programı önce Avrupa Şampiyonu Fan Hui’yi Ekim 2015’te ve dünyanın en iyi oyuncularından birisi olan Koreli Lee Sedol’ü Mart 2016’da yenmeyi başardı. Go oyununda elde edilen bu büyük ilerleme yapay zeka çalışmalarına ilişkin yeniden bir tartışma başlattı.

Aslında makinelerin oyun oynaması 18. yüzyılda bile gündemde olan bir fikir. Merak edenler 1770 yılında Wolfgang von Kempelen tarafından geliştirilen ve “The Turk” (1) adı verilen dünyanın ilk satranç oynama otomatını inceleyebilirler. İlk bilgisayarların tasarlanması ve geliştirilmesiyle birlikte, bu cihazların çeşitli oyunlar oynamasını sağlayacak yazılımlar üzerinde çalışmalar da yürütülmeye başlanmıştır. Bilgisayarların insan hayatında yer almaya başladığı 1950’li yıllardan beri makinelerin oyun oynayabilmesi ve hatta bu oyunlarda insandan daha başarılı olmalarının sağlanması yapay zeka araştırmacıları için ilgi çekici bir konu olmuştur. Aslında oyun oldukça geniş bir alan. Tek başına oynanan oyunlar bulunduğu gibi, belirli kurallar çerçevesinde iki veya daha fazla kişinin karşılıklı rekabete dayalı bir biçimde oynadığı oyunlardan (satranç, go, briç, vb.) ya da kurallarının oyun sırasında oluştuğu başlangıçta bir belirlenim bulunmayan oyunlardan söz etmek mümkün. Yapay zeka çalışmaları açısından en zoru tabi ki üçüncü kategoride yer alan oyunlar. Örneğin bir insansı robotun bir çocukla oyun oynaması problemini düşünelim. Bu oyunda çözülmesi gereken algı, planlama ve benzeri problemler satranç veya Go oyunu ile karşılaştırılamayacak kadar zor problemlerdir. Ancak bu yazıda tartışılacak yöntem ve yaklaşımlar iki kişinin belirli kurallara dayalı bir biçimde rekabet ederek oynadıkları oyunlara yönelik olacaktır.

Bilgisayarlar nasıl oyun oynuyor?

Bilgisayarların nasıl oyun oynadıklarını anlamak açısından durum (state) kavramı önem taşır. Bildiğiniz gibi her oyunda farklı konfigürasyonlar oluşması mümkündür. Örneğin satranç oyununda taşların tahta üzerinde oyunun herhangi bir anındaki dizilişleri tekil bir konfigürasyon oluşturmaktadır. Oluşan bu konfigürasyonlar durum kavramıyla ifade edilmektedir. Oluşabilecek olası tüm konfigürasyonlar ise o oyuna ilişkin durum uzayını oluşturacaktır. Bir bilgisayarın oyun oynaması bu durum uzayında yürütülecek arama işlemlerine dayanmaktadır. Tahmin edebileceğiniz gibi bu durum uzayının büyüklüğü de o oyunun zorluğunu belirlemektedir.

Şekil 1: Arama ağacı; bilgisayar X taşını oynamaktadır.

Aslında klasik oyun algoritmaları oldukça basit bir yaklaşım kullanırlar. Oyunun herhangi bir aşamasında bilgisayarın hangi hamleyi yapacağı şöyle bir yöntemle belirlenir: Öncelikle oyunun o durumunda bilgisayarın yapabileceği tüm hamleler ve bu hamleler yapıldığında oluşacak durumlar belirlenir. Daha sonra rakibin yapabileceği karşı hamleler ve yine bu hamlelerin oluşturacağı durumlar listelenir. Sonra tekrar bilgisayarın hamleleri ve yine rakibinkiler derken bu işlem oyunun sonlanacağı bir durum belirlenene kadar devam eder. Bu hamleler ve karşı hamlelerin oluşturacağı durumları Şekil 1’de görülen ve arama ağacı denilen bir yapıda tutmak mümkündür. Oyun sonuna kadar bu yapı derinleştirilebilirse, o zaman bu oyun ağacında bilgisayarın kazanması için gerekli hamle kolaylıkla seçilerek rakibin kaçınılmaz biçimde bilgisayarın kazanacağı patikaya sokulması mümkündür. Dikkat edilirse bu yaklaşım mükemmel oyun stratejisini belirlemektedir ve oyun sonuna kadar bu arama gerçekleştirildiğinde rakibin yenilmekten başka bir çaresi bulunmamaktadır.

Ancak birçok oyun için bu arama ağacını oyunun sonlanacağı durumlara ulaşana kadar ilerletmek mümkün değildir. Örneğin satranç oyununda herhangi bir aşamada oyuncu ortalama olarak 35 faklı hamle yapabilmektedir. Bir satranç oyununun karşılıklı 40 hamlede sonlanacağını düşünsek bile, mükemmel oyun için yaratılması gereken arama ağacında 3580 farklı durumun incelenmesi gerekmektedir. 352’nin yaklaşık olarak bin sayısına eşit olduğunu varsayarsak, 354 milyon, 356 milyar düzeyine çıkmaktadır. 3580’in hayal edilmesi bile zor bir sayı olduğu açık sanırım.

Bu durumda, yani arama ağacının tamamını oluşturmak mümkün olmadığında, oyun programları verilen süre ve diğer kaynak kısıtlarını göz önüne alarak oluşturulabilecek en derin ağacı oluşturmaktadır. Ancak bu ağacın yaprakları (Şekil 1’deki en alttaki durumlar) artık oyun sonlarına sahip olmayacaktır. Bu nedenle de oyunun daha bitmediği durumlara karşılık gelen bu yaprakların hangisi en iyiyse, o duruma doğru bilgisayarın hamle yapması en rasyonel davranış olacaktır. Peki en iyi oyun ortası durumu belirlemek için ne yapılabilir? Bu noktada da bilgisayar programcıları oyun uzmanları ile bir araya gelmekte ve durumları değerlendirebilecek ve onlara puanlar verebilecek çok karmaşık matematiksel fonksiyonlar oluşturmaktadırlar. Ayrıca ağacın her dalını da incelemek gerekli değildir. Bir takım yöntemlerle ağacın belirli dallarının budanması (2) ve daha ince ama daha derine giden arama ağaçlarının oluşturulması mümkündür.

İşin özeti böyle. Aslında, bu algoritmayı kullanan bilgisayarların gerçekten zekice davrandığını söylemek pek mümkün değil. Ama öte yandan, iyi hazırlanmış bir değerlendirme fonksiyonu hızlı işlemcilerin sağladığı çok fazla alternatif durumu inceleme kapasitesiyle bir araya geldiğinde insandan daha iyi bir satranç oyuncusu ortaya çıkarmak mümkün.

İnsan beyninin soyut temsil yeteneği

Peki bu yaklaşım Go oyunu için niye yeterli olmuyordu. Nedeni Go oyununun sahip olduğu durum uzayının büyüklüğü. Satranç oyununda her hamlede oyuncunun ortalama 35 alternatifi olduğunu belirtmiştik. Go oyununda ise ortalama hamle sayısı 250’ye çıkmakta. Yani Go oyununun durum uzayı, satranç oyununa göre katbekat fazla bir büyüklüğe sahip. Bu uzayda yer alan durum sayısının evrendeki atom sayısından bile fazla olacağını söylemek sanırım söz edilen büyüklük hakkında bir fikir verebilir. Bu nedenle yukarıda açıklanan arama yaklaşımı Go oyunu için ancak vasat bir oyuncu ortaya çıkarmaktaydı.

Klasik oyun algoritmaları go oyunu için yeterli olmuyordu. Nedeni go oyununun sahip olduğu durum uzayının büyüklüğü.

İnsan da bir oyun oynarken belirli durumları göz önünde bulundurabilir; kendi hamleleri ve bu hamlelere verilebilecek karşılıkları gözden geçirebilir. Ama insanın göz önüne aldığı hamle olasılıkları bir bilgisayara göre çok daha az olmasına rağmen, insan Go veya satranç oyunlarında oldukça iyi bir performansa sahiptir. Bunun nedeni de insanın zeki olmasıdır. Peki insanın bu oyunlarda kullandığı ve bilgisayarlarda bulunmayan “zeka” nedir? Zor bir soru ve bu soruyu tüm yönleriyle ve tam anlamıyla yanıtlamak mümkün değil. Zaten bunu yapabilseydik bu zekayı bilgisayarlara aktarmak ve bilgisayarların da tüm işlerde insan performansına ulaşmasını sağlamak mümkün olurdu.

Öte yandan, bu soruya verebileceğimiz bazı yanıtlar bulunmakta. İnsan beyninin en önemli özelliklerinden birisi kendisine ulaşan veriyi/girdiyi/bilgiyi çok verimli ve soyut bir biçimde temsil edebilmesi. Bu görsel veya işitsel algıda olduğu gibi oyun alanında da geçerli. Somut bir örnek verirsek, etrafa baktığımızda aslında görsel korteksimize etrafımızdaki objelerin çok detaylı bir görüntüsü düşmekte. Beynimiz bu detaylı görüntü üzerinden yapacağı soyutlama ile, bu görüntünün özünü içeren, ama öte yandan gereksiz detaylardan arındırılmış genel bir temsili oluşturmak konusunda çok başarılı. Bu temsili, işimize yarayacak bilgilerin içinde en optimum biçimde yer aldığı, gerçeğin bir soyutlanması olarak düşünebiliriz. Daha sonra yapacağımız çıkarımlar, planlamalar da bu temsil üzerinden gerçekleşecektir. Örneğin bir odadan dışarı çıkmayı planlayacaksak, bu plan odanın beynimize ulaşan görüntüsü üzerinden değil o görüntü üzerinden oluşturduğumuz temsil kullanılarak gerçekleştirilir. İnsanın bu yeteneği oyun oynarken de karşımıza çıkmakta. Oyun tahtasında yer alan taşların tekil olarak pozisyonları ve olası hamleler, evet insanın kullandığı verilerdir. Öte yandan insan için taşların tümünün oluşturduğu bütünsel bir anlam da vardır. Yani görme örneğinde olduğu gibi insan oyunun herhangi bir durumu için soyut temsiller oluşturabilmekte ve bu temsiller üzerinden düşünebildiği için sadece çok fazla hamleyi inceleme kabiliyeti olan bir bilgisayar programına göre, hele Go gibi bir oyunda çok daha iyi stratejiler geliştirebilmektedir.

Şekil 2: Yapay sinir ağı.

Yapay sinir ağları modelleri ve sınırlılıklar

Aslında yukarıdaki tartışma yapay zeka alanında ne yapılması gerektiğine ilişkin bir yol da göstermekte. Eğer bilgisayarların da insanın oluşturabildiği temsilleri oluşturmasını sağlayabilirsek, o zaman bilgisayarların birçok alanda insanla rekabet edebilmesi mümkün olacaktır. Peki bunu sağlayabilecek modeller nelerdir? Burada ön plana çıkan yöntemler yapay öğrenme (Machine Learning) algoritmaları olmaktadır. Bu yöntemlerle belirli bir veri kümesi üzerinden analizler yürütmek ve çeşitli düzeylerde temsiller oluşturabilecek öğrenme süreçlerini gerçekleştirmek mümkündür.

Bu modeller içinde yapay sinir ağları insan beyninden etkilenilerek oluşturulduğundan oldukça dikkat çekicidir. Klasik yapay sinir ağları farklı katmanlar şeklinde organize edilmiş yapay nöronlardan oluşur (Şekil 2). Bir katmanda yer alan her nöron bir sonraki katmandaki tüm nöronlara bağlıdır ve belirli koşullar sağlandığında bağlı olduğu nöronlara sinyal yollar. Yani bu yapay nöronlar belirli girdilere göre belirli çıktılar üretirler. Model belirli girdilerden istenen çıktıları üretebilmek için kendini uyarlayabilir.

Bu model, denetimli öğrenme problemleri için kullanılır. Örneğin el yazısı ile yazılmış rakamları tanımak için bir yapay sinir ağı eğittiğimizi düşünelim. Bu durumda elimizde farklı insanlar tarafından yazılmış yeterli miktarda rakam bulunması gerekir. Eğitim aşamasında her bir rakamın resmini tek tek sinir ağına veririz, ayrıca her girdiyi verdiğimizde bu girdinin hangi rakama karşılık geldiğini yani sinir ağının hangi çıktıyı üretmesi gerektiğini de sisteme aktarırız. Böylelikle sinir ağı verilen girdi için üretilmesi gereken çıktıyı sağlayacak şekilde kendisini yapılandırır. Yani verilen girdiyi farklı bir matematiksel uzayda temsil etmeyi ve bu temsil sayesinde o girdiyi doğru bir biçimde sınıflandırmayı, yani doğru çıktıyı üretmeyi öğrenir.

Kullanılan yaklaşım ilgi çekici. Öte yandan, yaklaşık elli senedir kullanılan bu model insan beyninden esinlenmiş olsa da, pek gelecek vaat etmediği çok geçmeden anlaşılmış bir yöntem. Çünkü bu yaklaşımın oldukça önemli teknik bir takım problemleri bulunmakta.

Diyelim ki bu modeli, insanın oyun oynarken oluşturabildiği ve böylelikle hangi oyun durumlarının tercih edilebilir olduğuna karar verdiği temsilleri oluşturmak için kullanmak istiyoruz. Karşımıza çıkan birinci sorun modelin sadece denetimli bir öğrenmeye açık olması, yani kendi kendine öğrenme kapasitesinin bulunmaması. Bu durumda eğer Go oyunu için bir öğrenme gerçekleştireceksek, bir Go uzmanının oyuna ilişkin binlerce (ya da milyonlarca?) değişik durumu tek tek inceleyerek bunların hangilerinin iyi, hangilerinin tercih edilmemesi gereken durumlar olduğunu belirlemesi gerekmekte. Pratikte neredeyse gerçekleştirilmesi imkansız bir iş. Diyelim ki birileri bunu yaptı, ama Go gibi büyük bir durum uzayına sahip bir oyun için doğru durumların seçilmiş olduğunu ve öğrenilen temsilin işe yarayacak doğru temsil olacağını öne sürmek oldukça zor.

Bir ikinci problem ise yapay sinir ağlarının büyüklüğü ile ilgili. Sistemin verilen girdiyi istenilen çıktıya eşleyebilmek için kendisini uyarlamaya çalıştığını söylemiştik. Sinir ağı bu işleme başlangıçta rasgele bir konfigürasyon ile başlamaktadır. Bu nedenle ilk başta istenilen çıktıları üretemeyecektir. Öğrenme sürecinde yanlış ürettiği çıktılar üzerinden bir hata miktarı hesaplanmakta ve bu hata miktarı sisteme geri yüklenerek söz edilen uyarlama süreci gerçekleştirilmektedir. Ancak hata ölçümü doğal olarak sinir ağının çıktı katmanı üzerinden gerçekleştirilmektedir. Bu hatayı sisteme geribildirim olarak verdiğimizde, çıktı katmanına yakın katmanlardaki nöronların başarılı bir biçimde uyarlanması mümkün olmakta; ama çok fazla katman kullanıldığında kullanılan yöntem daha derindeki katmanların uyarlanması için yetersiz kalmaktadır. Yani hatanın etkisi sinir ağında daha derinlere indikçe yok olmaktadır. Bu durum da pratikte zor problemlerin çözümü için gereken, çok karmaşık fonksiyonları temsil edebilecek çok katmanlı sinir ağlarının oluşturulmasını engellemektedir. Yani bu model onlarca yıldan beri kullanılmasına rağmen, ancak bir kaç katmandan oluşan ve bu nedenle sadece göreli basit problemleri çözmeye yarayan bir model olarak kalmıştır.

Söz edilen yapay sinir ağı modelinin alternatifleri de bulunmaktadır. Ancak tüm modellerin bir takım benzer dezavantajları bulunmakta ve yukarıda belirtildiği gibi bu sinir ağı modellerini kullanarak ancak belirli zorlukta problemler çözülebilmektedir. Bu sinir ağı modelinin daha zor problemleri çözebilmesi için ise araştırmacılar ham verilerden manuel olarak bir takım daha soyut özellikler çıkartıp, sinir ağlarını ham veri yerine bu özellikler kullanılarak eğitmeye çalışmaktadırlar. Örneğin görüntü işleme uygulamalarında doğrudan görüntüde yer alan piksel değerleri yerine, önce o görüntüye ilişkin daha genel/soyut bir takım özellikler belirli algoritmalar kullanılarak belirlenmekte ve daha sonra bu çıkarılan özellikler kullanılarak sinir ağları eğitilmektedir. Böylelikle sinir ağının görevi azaltılmakta ve yukarıda söz edilen ve çok derinleştirilemeyen ağlar ile daha zor problemler çözülmeye çalışılmaktadır.

Derin öğrenme yaklaşımı

Ancak bundan yaklaşık yedi sekiz yıl önce araştırmacılar (3) var olan sinir ağı modellerini farklı bir şekilde eğitmenin mümkün olduğunu keşfettiler. Bu çalışmalarda yeni bir sinir ağı modeli önerilmedi. Ama var olan modellerin farklı bir şekilde ele alınabileceği ve böylelikle derin öğrenme denilen, yani istediğimiz kadar katmandan oluşan sinir ağı modellerinin kurulabileceği ortaya çıktı. Bu durum yapay öğrenme alanında oldukça önemli bir gelişmeydi. Çünkü kullanılan sinir ağlarının sadece birkaç katmandan oluşmasını gerektiren teknik zorluk ortadan kalkmıştı. Artık istediğimiz “derinlikte” ağ yapıları kurabilirdik. Bunun yanı sıra bu yeni yaklaşımla birlikte yine yukarıda söz edilen denetimli öğrenme zorunluluğu da ortadan kalktı. Yani istediğimiz büyüklükteki sinir ağlarına, yine istediğimiz miktarda (gerekirse milyonlarca) ham veriyi hiç etiketlemeden, yani sinir ağına üretmesi gerektiği çıktının ne olduğunu hiç söylemeden vermek mümkün hale geldi.

Şekil 3: Otomatik kodlayıcı.

Peki bu derin modeller denetimsiz bir şekilde ham veri ile eğitildiğinde ne elde edebiliyoruz? Bunu anlamak için derin öğrenme yaklaşımında gerçekleşen süreçler hakkında bir miktar bilgi vermekte fayda var. Derin öğrenme yaklaşımında farklı sinir ağı modelleri kullanmak mümkün. Bu modellerden otomatik-kodlayıcı (Autoencoder) derin öğrenme sürecini anlamak için iyi bir örnek teşkil etmekte. Şekil 3’te bir kodlayıcı yer almakta. Sistemin basit bir işlevi bulunmakta: Bir kodlayıcı kendisine verilen girdilerin aynısını çıktı olarak üretmeye çalışır, tek işlevi budur. Yani öğrenme sürecinde kodlayıcı kendi içsel yapısını girdinin aynısını çıktı olarak üretebilecek şekilde uyarlamaya çalışır. Şimdi bu kodlayıcıya girdi olarak bir resim verelim. Kodlayıcı kendi içsel yapısını bu resmin aynısını üretmek için uyarlayabilir ve hatta tek bir resimden söz ediyorsak bu resmi ezberlemeyi de başarabilir. Ama bu kodlayıcıya birden fazla resmi girdi olarak adım adım verirsek ve her defasında kodlayıcının amacı bu girdileri çıktı olarak üretmek ise nasıl bir uyarlama sürecinden geçecektir?

Bu modelde dikkat çekici olan kodlayıcının ara katmanında yer alan nöron sayısının girdi ve çıktı katmanlarından az olması. Tahmin edersiniz ki bir grup resim bu kodlayıcıyı eğitmek için kullanıldığında, bu kodlayıcının bu resimlerin tamamını çıktı katmanında tekrar üretmesi mümkün olmayacaktır. Ama optimum davranışa zorlanan bu model verilen resimlerden bir takım korelasyonlar/özellikler elde edecek ve bunları ara katmanındaki çıktılar olarak temsil ettikten sonra, çıktı katmanında elde ettiği bu özellikleri kullanarak girdi olan resmi tam olmasa da, onun bir benzerini olabildiğince oluşturmaya çalışacaktır.

Yani kodlayıcı için optimum davranış ara katmanda verilen resimlerin daha soyut bir temsilini oluşturmak için gereken özelliklerin toplanması olacaktır. Peki bu özellikler nelerdir? Kodlayıcının ne yapacağını anlayabilmek için şöyle bir örnek düşünelim. Diyelim ki yüzlerce parçaya bölünmüş iki resim verildi bize. Amacımız bu resimlerin parçalarının sadece bir kısmını (diyelim ki 20 tanesini) kullanarak orijinal resimlere olabildiğince benzer resimler oluşturmak olsun. Sınırlı sayıda resim parçası alabileceğiz ama her bir parçayı istediğimiz kadar tekrar tekrar kullanabiliriz. Bu durumda yapılacak en optimum davranış nedir? Tabi ki içinde farklı açılarda çizgilere sahip resim parçalarını seçmek. Eğer yeterince farklı açılara sahip çizgiler toplayabilirsek, orijinal resimlerin aynısı olmasa da, bir şekilde resimlerde yer alan objeleri temsil edebilecek şekiller oluşturmamız mümkün. İlginç olan nokta, bir kodlayıcıyı bir grup resim üzerinde eğittiğimiz zaman kodlayıcı da ara katmanında resimlerde yer alan farklı açılardaki çizgileri özellik olarak çıkartıp ve tam da bizim yapacağımız gibi bu çizgileri kullanarak çıktı katmanında orijinal girdiyi tekrar oluşturmaya çalışacaktır. Çünkü bu görev için yapılabilecek en optimum davranış budur. Daha da ilginç olan beynimizde de objelerde yer alan kenarlara duyarlı olan nöronların bulunması. (4) Ama en ilginç olan birden fazla kodlayıcıyı bu süreçte kullandığımızda elde ettiğimiz temsil. İlk kodlayıcıyı eğittiğimizde kodlayıcının resimlerde yer alan çizgileri çıkartarak ilk soyutlamayı gerçekleştireceğini belirtmiştik. İkinci aşamada ise, resimlerden çıkartılan bu en alt düzeydeki özellikleri kullanarak yeni bir kodlayıcıyı eğitebiliriz. Bir önceki kodlayıcının ara katman çıktıları ile yeni bir kodlayıcıyı eğitmeye devam ettiğimizde, her eğitme işleminden sonra soyutlama düzeyi biraz daha artacaktır. Resim örneğinden devam edersek, yeterince derin bir yapı kurduğumuzda, elde edilen çizgilerin birleşerek obje parçalarını ve obje parçalarının birleşerek obje modellerini oluşturduğunu görmek mümkündür. (5)

On seneden daha az süre önce yapay öğrenme alanında ortaya çıkan bu yaklaşım yapay zeka alanında oldukça önemli bir atılım sağlamış durumda. Klasik sinir ağı modellerinin belirli algoritmalar kullanılarak ham veriden çıkarılan özelliklerle eğitilmeye çalışıldığını belirtmiştik. Derin öğrenme yaklaşımı ile artık doğrudan ham veriyi kullanarak tamamen denetimsiz bir biçimde ve istediğimiz büyüklükteki sinir ağları ile veriye dair bir model veya bir temsili otomatik olarak oluşturmak mümkün hale geldi. İnsan zekasını tarif ederken, beynimizin ona ulaşan ham veriyi çok hızlı bir biçimde işleyerek, verinin daha soyut bir temsilini oluşturabildiğini belirtmiştik. Tabi ki insan zihninin sırlarını çözmüş, beynin işleyişini tamamıyla anlamış değiliz, ama şu yaygın bir kanı; derin öğrenme yaklaşımı ile ilk defa beyinde gerçekleşen süreçlerle paralel bir yaklaşım geliştirmiş olabiliriz. Bu sadece bir tahmin değil, pratik alanda da derin öğrenme yaklaşımı ile gerçekleştirilen görüntü işleme ve doğal dil işleme uygulamalarının performansı, bu alanlardaki klasik yaklaşım ve algoritmaların performansını net bir biçimde aşmış durumda.

Deep Mind grubunun Go oyununa uyguladığı yaklaşım bir takım klasik arama metotları ile zenginleştirilince dünyanın en iyi oyuncusu kabul edilen Lee Sedol’ü yenebilecek düzeye çıkılmış oldu.

AlphaGo derin öğrenince…

Deep Mind grubunun Go oyununa uyguladığı yaklaşım tam da yukarıda anlatılan süreçleri içermekte. Araştırma grubu ilk aşamada yaklaşık 30 milyon farklı Go oyun konfigürasyonu kullanarak 13 katmana sahip bir derin sinir ağını eğitiyor. Her bir Go durumu sinir ağına 19×19 pikselden oluşan bir resim şeklinde sunuluyor. Yukarıda söz edildiği gibi bu ilk aşama sistemin herhangi bir Go konfigürasyonu verildiğinde bir şekilde bu konfigürasyonun soyut bir temsilini kurmasını sağlamakta. Sonraki aşamada ise programın kendi kendine ve diğer Go programlarıyla yaptığı maçlarda ortaya çıkan hamleler kullanılarak gerçekleştirilen destekli (reinforcement) öğrenme süreci ile sistem iyi bir Go oyuncusu olmak için gerekli stratejileri öğreniyor. (6) Oluşturulan bu temel sistem bir takım klasik arama metotları ile zenginleştirilince de vasat bir Go oyuncusu pozisyonundan dünyanın en iyi oyuncusu kabul edilen Lee Sedol’ü yenebilecek düzeye çıkılmış oldu.

Elde edilen başarı yapay zeka alanı için birkaç açıdan önem taşımakta. Öncelikle Go oyunu gibi yapay zeka alanı için meydan okuyucu bir karaktere sahip bir problem başarı ile çözülmüş oldu. Ayrıca oyun programları aslında sadece oyun programları değildir. Bu alanda kullanılan yaklaşım ve çözümler kısa sürede başka endüstriyel problemlerin çözümü için de kullanılagelmiştir. Bu nedenle derin öğrenme ile oyun alanında elde edilen bu başarının etkilerini önümüzdeki yıllarda başka alanlarda da görmemiz muhtemel. Ama belki de en önemlisi AlphaGo programı Lee Sedol’ü yenerken, Kasparov’u yenen Deep Blue programına göre binlerce kez daha az pozisyonu inceliyordu. Bu da AlphaGo programının insanın oyun oynama süreçlerine daha benzer bir şekilde davranabildiğini ve insan zihninde gerçekleşen süreçlere benzer işlemlerin belki de ilk defa derin öğrenme yaklaşımı ile bilgisayar hafızasında da gerçekleştirilebildiğini öne sürmemiz için bize destek sağlamakta.

Dipnotlar

1) Tom Standage, “The Turk: The Life and Times of the Famous Eighteenth-Century Chess-Playing Machine”, New York: Walker, 2002, 22–23.

2) Judea Pearl, “Heuristics”, Addison-Wesley, 1984.

3) Bengio, Yoshua, “Hata! Köprü başvurusu geçerli değil”, Foundations and Trends in Machine Learning 2 (1): 1-127, 2009.

4) Hubel, D. H. and T. N. Wiesel, “Brain and Visual Perception: The Story of a 25-Year Collaboration”, Oxford University Press, 2004.

5) Q. Le, M. Ranzato, R. Monga, M. Devin, K. Chen, G. Corrado, J. Dean, and A. Ng. “Building high-level features using large scale unsupervised learning”, In International Conference on Machine Learning, 2012

6) David Silver, Aja Huang, Chris J. Maddison, Arthur Guez, Laurent Sifre, George van den Driessche, Julian Schrittwieser, Ioannis Antonoglou, Veda Panneershelvam, Marc Lanctot, Sander Dieleman, Dominik Grewe, John Nham, Nal Kalchbrenner, Ilya Sutskever, Timothy Lillicrap, Madeleine Leach, Koray Kavukcuoglu, Thore Graepel, Demis Hassabis. “Mastering the game of Go with deep neural networks and tree search”. Nature, Vol. 529, No. 7587. (28 January 2016), pp. 484-489.

Önceki İçerik “Köpekdişi” filminin düşündürdükleri
Sonraki İçerikDarwin devrimi – 4: Genetik çeşitlilik ve elektroforetik devrim