Bir Problem Çözüm Metodu Olarak Evrim Kuramı

Sevgili Prenses,

İnsan algısının ve hayal gücünün daraldığı bir çok noktadan üç tanesinin temelinde şunların yattığını düşünüyorum:

  1. Sınırlı paralel düşünme kabiliyeti (ve dolayısıyla paralel süreçlerin gücünü kestirmenin zorluğu).
  2. Rasgeleliğin küçümsenmesi (ve dolayısıyla her makul sonucun arkasında bilincin aranması eğilimi).
  3. Karmaşık tasarımların basit süreçlerin bir sonucu olamayacağı düşüncesi.

Tartışılabilecek onlarca dar boğazdan bu üç taneyi seçmemin sebebi üçünün de, evrim kuramının biyolojik çeşitliliği açıklamak için ortaya koyduğu mekanizmanın çok temel bileşenleri olması. Dolayısıyla bu üç algı pürüzü bir anlamda insanların evrim kuramının gücünü anlayabilmelerini de zorlaştırıyor.

Bu üç tanenin bir diğer ortak noktası ise bilgisayar bilimleri alanında faaliyet gösteren kimselerin, karşılaştıkları klasik problemler ve onların çözümleri sayesinde daha kariyerlerinin başlangıcında kendilerini bu engellerden azat eden bir vizyona kavuşmaları. Belki biraz da bu avantaj yüzünden bilgisayar bilimleri, evrim kuramını anlama ve ondan en etkin şekilde yararlanma noktasında biyolojinin hemen arkasında.

Birisi evrim kuramının beni ilgilendiren kısmını ifade etmemi istese şöyle derdim: “evrim kuramına göre tanık olduğumuz biyolojik çeşitlilik, basit süreçlerin paralel şekilde işlemesi esnasında rasgeleliğin çeşitli noktalarda devreye girmesi ve ortam koşullarının dayattığı uygunluk kriterlerinin bir denge oluşturması ile ortaya çıkmış“. Daha soyut, daha az kaba ve evrim kuramını bilgisayar bilimleri içerisinde de yer edinebilir şekilde yeniden ifade etmeye çalışacak olsam ise şöyle derdim: “her bir canlı türü dünya probleminin olası çözüm uzayından evrim kuramı tarafından bulunup çıkarılmış optimum çözümlerdir“. Bu yaklaşımım şüphesiz evrim kuramını bilgisayar ortamında doğru tanımlanmış problemlerin çözümü için kullanılabilir bir kıvama getirirdi.

Peki gerçekten “basit süreçler“, “paralel işleme” ve “rasgelelik” seçilimin diktatörlüğü altında harmanlandığında ortaya dahiyane şeyler neredeyse kendiliğinden çıkabilir mi?

Problemleri ardışık adımlarla çözme alışkanlığımız paralel çözümleri tezahür etmekte güçlük çekmemize sebep oluyor. Sınırlı paralel düşünme kabiliyetinin, yanıtı aslında çok basit olan bir soruyu nasıl bir bulmaca haline getirebildiğine dair örnek olarak klasik bir problem olan “nehri geçmeye çalışan yamyam ve misyonerler” verilebilir. Soru şöyle: 3 yamyam ve 3 misyoner bir nehri geçmek zorundadır. Bunu yaparken her seferinde yalnız iki kişi taşıyabilen bir sandal kullanmaları gereklidir. Ayrıca sandalı her turda bir kişi geri getirmelidir. Herhangi bir kıyıda yamyamların sayısı misyonerlerin sayısından daha fazla olursa yamyamlar misyonerleri yemektedir. Dolayısıyla karşıya geçiş işlemi öyle bir düzen ile tasarlanmalıdır ki misyonerler ve yamyamlar -kimse birbirini yemeden- karşı kıyıya geçebilsinler.

Bu problemin bilgisayar yoluyla çözümü çok basit. Eğer biz de olası karşıya geçiş düzenlerinin tamamını aynı anda düşünüp paralel şekilde işletebilseydik bu çözüm uzayı içerisinde herkesin sapasağlam karşıya geçtiği düzeni çok kısa sürede seçip çıkarabilirdik … ve muhtemelen dünya şampiyonu satranç ustası Garry Kasparov da IBM’in Deep Blue isimli bilgisayarına satrançta yenilmezdi. Hoş, Kasparov daha sonra yenilgiyi kabul etmemiş, IBM’in hile yaptığını, çünkü bilgisayarın kendisine karşı “derin bir zekâ ve yaratıcılık” ile oynadığını hissettiğini söylemişti… O zamanlar birileri Kasparov’un bu iddiasını, insanın yalnızca kendisine yakıştırdığı kurnazlık ve dehanın, tüm olasılıkların çok uzun adımlar boyunca denenip değerlendirilebildiği koşulda bir makine tarafından dahi taklit edilebilecek bir yetenekten ibaret olabileceği fikrine muhalefet etme arzusuyla ortaya çıkmış hüzünlü bir tepki olarak gördü mü, bilemiyorum.

 

http://www.wired.com/images/article/wide/2007/05/dayintech_0511_wide.jpg (Fotoğraf, Louie Psihoyos / Corbis)

Aradan geçen 12 yılda bilgisayarların hesapsal kabiliyetlerindeki parabolik ivmeye bağlı olarak bazı şeylere şaşırmamayı öğrendik…

Satranç gibi kuralları ve çözümü çok belirgin olan bir oyun için uzun adımlar boyunca deneme ve değerlendirmeyi paralel şekilde yapabilmenin sunduğu avantajı görmek zor olmasa da evrim kuramının gücünü anlamak için bunu görmeyi başarmış olmak yeterli değil ne yazık ki. Çünkü satranç oyununun kuralları sayesinde “amaç” ve “kazanma durumu” belli olduğu için, paralel devam eden süreçlerden hangilerinin bu hedefe yakınsadığı kolayca kontrol edilebilir iken evrim, tamamen amaçsız. Buradan yola çıkarak “sonucun ne olması gerektiğini bilen bir mimarın olmadığı durumda paralel süreçlerin marifeti pek bir anlam ifade etmez” denebilir. Bu düşünce, kısmen doğru olsa da, mevzu evrim olduğunda mimarın potansiyelini abartırken rasgeleliliğin gücünü küçümseyen, insanca, fakat hatalı bir varsayımın sonucu.

Son söylediğim şeyin bir diğer telaffuzu ise bilincin olmadığı yerde rasgeleliğin makul sonuçlara vesile olabileceği.

Rasgeleliğin nelere kadir olabildiğine uzun yıllar boyunca bilgisayar grafikleri üzerine çalışmış olan Karl Sims’in 1990 yılında yaptığı ilham verici bir çalışmasından yola çıkarak yaklaşmak istiyorum. Sims, “Bilgisayar Grafikleri için Yapay Evrim” isimli çalışmasında Lisp programlama dilinde sembolik ifadelerin mutasyonu yolu ile iki boyutlu görüntüler oluşturan bir evrim benzetimi uygulaması hazırlamış. Öyle ki, Sims’in uygulamasının oluşturduğu resimlerin herhangi bir pikselindeki renk bilgisi bir takım eşitliklerle hesaplanıyor ve bu eşitliklerin kaynağı da standart Lisp fonksiyonları, vektör transformasyonları, yapısal gürültü (noise) üreticileri ve görüntü işleme fonksiyonları gibi dar bir ifade setine dayanıyor. Set içerisinde yer alan fonksiyonların her birisi son derece basit işler gerçekleştiriyorlar ve tek başlarına karmaşık işlevleri yok. Lisp biliyor olduğunuzu ya da aşağıdaki fonksiyonların her birinin ne iş yaptığını tam olarak anlayacağınızı varsayıyor değilim, fakat basitliklerine dair bir miktar da olsa fikir vereceğini tahmin ettiğim için fonksiyon listesine yer vermek istedim:

+, -, *, /, mod, round, min, max, abs, expt, log, and, or, xor, sin, cos, atan, if, dissolve, hsv-to-rgb, vector, transform-vector, bw-noise, color-noise, warped-bw-noise, warped-color-noise, blur, band-pass, grad-mag, grad-dir, bump, ifs, warped-ifs, warp-abs, warp-rel, warp-by-grad.

Bu listede yer alan her bir fonksiyon belirli sayıda parametre alıp bir x,y koordinatında yer alan piksel için renk bilgisi hesaplıyor.

Sims, bu ifadelerin ortaya çıkardığı görüntüleri insanlara 16 değişik monitörde gösteren bir sistem hazırlıyor. Arka planda çalışan uygulama ise izleyicilerin önünde daha çok vakit geçirdiği monitörlerdeki resimlerin daha çok tercih edildiği varsayımı ile, bu ilgi çeken resimlerin mesulü olan Lisp ifadelerini çiftleştirerek ve ortaya çıkan ifadeler üzerinde rasgele mutasyonlar ifa ederek yeni nesil ifadeler, dolayısıyla yeni nesil resimler oluşturuyor. İzleyicilerin ilgilenmediği resimleri ortaya çıkaran Lisp ifadeleri ise haliyle yavaş yavaş bu döngünün dışında kalıyor ve siliniyorlar. Bu süreç başta basit ve kısa olan ifadelerin adım adım daha karmaşık -ya da daha az karmaşık- hale gelmesini ve bir anlamda, hasbelkader orada bulunan ve bu görüntülere dair tercihleri yapan insanların hoşuna giden bir noktaya doğru evrilmesini sağlıyor.

 

Sims’in, 10 ila 40 nesil sonra ortaya çıkan görüntülere verdiği örneklerden birisi şu:

Bir diğer örnek de şu:

Daha önce bahsettiğim set dışında hiç bir fonksiyonun kullanılmadığı, tamamen rasgele mutasyonlar ile ortaya çıkmış olan ve yukarıdaki görüntüyü oluşturan Lisp ifadesi de şöyle:

(cos (round (atan (log (invert y) (+ (bump (+ (round x y) y) #(0.46 0.82 0.65) 0.02 #(0.1 0.06 0.1) #(0.99 0.06 0.41) 1.47 8.7 3.7) (color-grad (round (+ y y) (log (invert x) (+ (invert y) (round (+ y x) (bump (warped-ifs (round y y) y 0.08 0.06 7.4 1.65 6.1 0.54 3.1 0.26 0.73 15.8 5.7 8.9 0.49 7.2 15.6 0.98) #(0.46 0.82 0.65) 0.02 #(0.1 0.06 0.1) #(0.99 0.06 0.41) 0.83 8.7 2.6))))) 3.1 6.8 #(0.95 0.7 0.59) 0.57))) #(0.17 0.08 0.75) 0.37) (vector y 0.09 (cos (round y y)))))

Her bir nesilde rasgeleliğin her yöne gelişi güzel saldırması ile meydana çıkan görsel kaos, seçilimin rehberliğinde bilinçli gibi görünen bir süreci besliyor ve kural setini tanımlayan kişinin baştan öngörmediği –adeta bir tasarımcının elinden çıkmış gibi görünen- sonuçlar ortaya koyuyor. Tamamen teknik detay olarak gördüğüm için açıklamaya değer bulmadığım “çiftleşme“, “rasgele mutasyon” gibi adımları Sims’in bilgisayar programında nasıl gerçeklediğini merak ediyorsanız makalenin tamamına göz atabilirsiniz (http://www.karlsims.com/papers/siggraph91.html).

Sims’in çalışmasının güzel resimler dışında bana göre iki önemli sonucu daha var. Birincisi rasgeleliğin, “öngörülmeyenin” de denenmesi için yabana atılmaması gereken bir itki olduğu ve uzun vadede bilinç ile karıştırmaya yatkın olduğumuz makul sonuçları ortaya çıkarabileceği. İkincisi ise çok normal olan beklentilerimizin aksine, bir tasarımın karmaşık olmasının ne bu tasarımı ortaya çıkaran süreçlerin ne de bu süreçler içerisinde kullanılan araçların karmaşık olmasını gerektirmediği. Bu iki sonuç da evrim kuramının gücünü aslında nereden aldığına dair düşünmeye başlamak için ciddi ip uçları veriyor.

Peki evrim kuramı gerçekten problem çözme yeteneğine sahip mi? Pratikte gerçek hayat problemlerine uyarlanmışlığı var mı? Bu soruların yanıtları “görünen o ki, evet” ve “evet“. Yazının kalan kısmı bununla ilgili.

Mesleki birikiminin bir sonucu olarak hem paralel süreçler ile neler yapılabileceğini hem de basit kural setleri ile karmaşık sistemler ortaya çıkarılabildiğini pek iyi bilen bilgisayar bilimcilerinin, bilgisayarla problem çözme kabiliyetini bir üst seviyeye çıkarmak ümidiyle evrim kuramına ilgi duymaya başlamaları çok fazla sürmemiş. Evrim kuramının nimetlerinden yararlanan bu tekniklerin tümü, bilgisayar bilimlerinde Evrimsel Hesaplama başlığı altında 80′li yılların sonlarından itibaren artan bir ivme ile incelenmeye başlanmış ve halâ değişik problemlere adapte edilmeye çalışılıyor (erişiminiz varsa ve göz atmak isterseniz bu alandaki çalışmaların yayınlandığı bir çok bilimsel dergiden önde gelen iki tanesinden birisi MIT’den Evolutionary Computation, diğeri de IEEE’den Transactions on Evolutionary Computation).

Bilgisayar bilimlerinin çok uzun süredir değişmemiş olan temel gayesi “optimum çözümler bulan algoritmalar üretmek“. Daha az kaba hale getirmek için bu cümle “optimum çözümleri makul zamanda bulan algoritmalar üretmek“, daha da az kaba hale getirmek için “-yerel minimum/maksimumlarda takılmayan- global optimum çözümleri makul zamanda bulan algoritmalar üretmek” şeklinde revize edilebilir olsa da mevzunun özü “optimum” kelimesinde saklı. “Optimum” denen şeyi bulmanın çok fazla parametre, çok fazla boyut olduğu durumda ne kadar güç olabildiği konusunda yeterince dirsek çürütmüş bir bilgisayar insanının, evrim kuramının çizilen bir sınır içerisinde elde edilebilecek en mükemmel optimum çözümlerin bulunabilmesi için ihtiva ettiği gerekli-yeterli dehayı kaçırması neredeyse mümkün değil. Evrim kuramı bilgisayar bilimleri penceresinden değerlendirildiği zaman, bence, son derece “sezgisel“, son derece “elbette” bir kuram. O kadar ki, eğer biyologlar bu kuramı ortaya atmış olmasalardı bilgisayar bilimleri karmaşık ve çeşitli problemlerin karmaşık olmayan araçlarla çözümü için yöntemler araştırırken benzer bir kuramı çoktan geliştirmiş olabilirdi.

Bilgisayar bilimlerinin Evrimsel Hesaplama’sı tarihi nedenler ve bir takım temel farklar nedeni ile kendi içerisinde evrimsel stratejiler, evrimsel programlama, genetik algoritmalar, genetik programlama gibi farklı dallara ayrılmış olsa da, ortaya çıkan uygulamalarının problem çözümündeki yaklaşımları birbirine benziyor. Hatta akışlarını şu şekilde genellemek mümkün:

  1. i = 0 olarak belirle.
  2. Rasgele bir P(i) başlangıç popülasyonu üret.
  3. Popülasyon sabitlenene kadar ya da maksimum ideğerine erişilene kadar aşağıdaki adımları tekrarla:
    1. P(i) içerisindeki her bir bireyin fit olma durumunu (seçilim değerini) değerlendir,
    2. Fit olma değerlerine göre ebeveynler seç,
    3. Çiftleşme (crossover) ve rasgele mutasyonlar ile yeni bireyler oluştur ve P(i+1) neslini elde et,
    4. i değerini bir arttır.

Yukarıdaki akışın Sims’in çalışmasındaki adımlar ile örtüştüğünü görebildiğinizi tahmin ediyorum. Örneğin, Sims’in çalışmasındaki iki boyutlu görüntüler yukarıdaki akıştaki ‘birey’lere tekabül ediyor (burada meraklı biyolog için bir ayrıntı: iki boyutlu görüntüler fenotiplere, o görüntüleri oluşturan Lisp ifadeleri de genotiplere denk geliyor). Bir bireyin fit olma durumu görüntülerin karşısında vakit geçiren izleyiciler tarafından değerlendiriliyor, karşısında fazla vakit geçirilen bireylerin seçilim değeri yüksek olduğu varsayılıyor ve ebeveyn olarak seçiliyor, ilgi görmeyen görüntülerin ise seçilim değerinin düşük olduğu varsayılıyor ve P(i+1) popülasyonu üzerinde etkileri olmuyor, vesaire.

Bilgisayar bilimlerinin Evrimsel Hesaplama’dan destek alarak üstesinden geldiği pratik problemler arasında veri iletimini maksimuma çıkarmak için optik fiber mikro-tasarımı, optimum akustik özelliklere sahip konser salonu planlanması, süpersonik hava taşıtları için optimum kanat tasarımı, maksimum kapsama alanı için optimum uydu yörüngelerinin hesaplanması, elektrik geçirgenliği olan karbon temelli polimerlerin tasarlanması, elektrik üretimini maksimuma çıkaran optimum rüzgar değirmenlerinin tasarlanması, dizel motorların etkinliğinin arttırılması gibi enteresan çalışmalar var.

Örneğin Boeing firması, Boeing 777′nin motoru içindeki türbin geometrisinin nasıl olması gerektiğine dair hesaplamaları bir de evrimsel algoritmaya devretmeye karar vermiş ve sürecin sonunda elde ettikleri sonuç önceki tasarıma göre %1 yakıt tasarrufu sağlayan bir tasarım imiş (motor ve içindeki bileşenlerin performansını yükseltmek için çalışan mühendis ordusu düşünüldüğünde, eldeki tasarımın %1 yakıt tasarrufu sağlayacak şekilde güncellemenin ne kadar ciddi bir iyileştirme olduğunu tahmin edebilirsiniz). Boeing firması yeni nesil uçakların kanat tasarımlarını da evrimsel hesaplama metotlarına devretmiş.

Bendeniz de, -daha yakın, daha küçük bir örnek olarak- bir süredir destek vektör makineleri (support vector machines) ile moleküler sinyallerin sınıflandırılması için inşa ettiğim modelleri belirlerken kullandığım kernel parametrelerinin optimum değerlerini bulma işini evrimsel hesaplama metotları ile çözülebilecek bir probleme dönüştürmeye çalışıyor ve evrim kuramının nimetlerinden bu şekilde faydalanmaya hazırlanıyorum.

Evrimsel Hesaplama alanının ilgi çekici bir alan olmasının en önemli nedeni biraz da, Barış’ın geliştirdiği bir uygulamanın, verilen bir problemin çözümü için Barış’ın başka türlü bulmayı beklemediği etkinlikteki bir çözümü bulabilmesi olasılığı. Evrimsel Hesaplama şemsiyesi altındaki metotların bunu ne kadar başarılabildiği ziyadesiyle problem bağımlı olsa da, biyolojik çeşitlilik ve biyolojik sistemlerin optimumluğunu en mantıklı şekilde açıklayan evrim kuramının, bilgisayar bilimlerinin platonik “optimum” gayesine yanıt olmaya en çok yaklaşmış çözümleri sunduğu söylenebilir.

 

A. Murat Eren

(Bu mektubun bir kopyası Evrim Çalışkanları’nın günlüğüne de gönderilmişti).

Yorumlar
2 Yorum to “Bir Problem Çözüm Metodu Olarak Evrim Kuramı”
  1. said nursi says:

    sen kendin söylediklerini mantıklı buluyor musun ?

  2. JoKeR says:

    metod güzel çözümler için

Yorum Bırakın