Problem çözen program nasıl olabilir?

Psikolojideki öğrenme konusuna bir göz atacak olursak; hayvanların daha çok içgüdüleri ile yaşamlarını sürdürdüklerini, içgüdülerin öğrenilmeden yapılan kalıtsal davranışlar olduğunu, diğer bazı davranışların ise öğrenme yoluyla sonradan kazanıldığını görürüz. Biyolojik açıdan içgi düler, doğuştan olan ve sinir sistemi deki sinaptik bağlardan oluşan birtakım değişmeyen sinirsel örüntüler olarak açıklanabilir. Öğrenme olgusuna geri dönecek olursak: Öğrenme, organizmanın çevresine uyum sürecinde geliştirdiği bir davranış değişikiği, ihtiyaçları daha iyi karşılayacak biçimde davranışları düzene koyma ya da karşılaşılan yeni ve beklenmedik bir durum karşısında davranışlarda da yeni bir düzenlemeye gitme vb. biçimlerde tanımlanabilir. Öğrenmenin biyolojik temelini ise yine sinir sistemi oluşturmaktadır. Ancak bu kez, içgüdülerden farklı olarak, sinir sistemindeki yeni sinaptik bağların kurulması ile oluşan örgütlenmeler sözkonusu olmaktadır. Sonuç olarak, öğrenme bir tür davranış değişikliğidir. Fakat iki tür davranış değişikliğini birbirinden ayırt etmek gerekir. Bazı davranış değişikliklerini makineler ve ilkel organizmalar da gerçekleştirebilir. Eğer bir makine karşılaşacağı olası durumlarda nasıl bir davranış değişikliğine giderek 0 durumdaki problemi çözeceği konusunda bilişi ile donatılmış ise, yani bu gibi olası durumlar karşısında nasıl davranacağına önceden programlanmış ise, makinenin karşılaştığı çeşitli durumlara göre değişik alt-programları yürürlüğe koyarak gerçekleştirdiği böylesi davranış değişikliklerini bir tür öğrenme sayamayız. Çünkü bu değişikliklerin kendileri de, kapsayıcı bir programın parçası olmak bakımından önceden belirlenmişlerdir. Bu nedenle bu tür durumlarda, sistemin davranışını gerçek anlamda değiştirdiğini söylemek doğru olmayacaktır. Tek ve değişmez bir davranış biçimi vardır; bu da alt-davranış biçimlerini yöneten ana programın kendisidir. Gerçek anlamda bir davranış değişikliği, yani “öğrenme” hatta “buluş” olarak nitelenebilecek bir davranış değişikliği, nasıl karşılık verileceği önceden belirlenmemiş bir durum karşısında organizmanın O duruma uyum yapabilecek biçimde davranışlarını değiştirebilmesidir. Başka bir deyişle, organizmanın (makinenin ya da bilgisayarın), beklenmedik bir durum karşısında davranacağı konusunda önceden hiçbir bilişiye sahip olmadığı halde, karşılaştığı problemi çözebilmesidir. Ancak sistemin bu gibi durumlara ilişkin hiçbir programı yoksa, sistemden herhangi bir çözüm arama çabası beklemek mümkün değildir. Sistemin genel anlamda bir “problem çözen programı” elbette olmalıdır. Fakat bu genel problem çözücü program, belirli bir problemin çözümüne ilişkin olmamalı; herhangi bir problemin, herhangi bir biçimdeki çözümüne yönelik olmalıdır. Gerçek anlamda öğrenmeden ya da bir problemin çözümünü “bulmak”? tan, bunun gibi genel bir programın işleyişini anlamak gerekir.

Şimdi bu anlattıklarımızı bir örnek üzerinde inceleyelim: Yandaki şekil farelerin denek olarak kullanıldığı basit bir dolambacı (labirenti) göstersin. A ucundan içeri bırakılan fareler önce dolambacın içinde gelişigüzel dolaşıyorlar. B noktasına geldiklerinde, bir karar vererek sağa, sola ya da geriye dönmek seçeneklerinden birisini seçmeleri mümkün. Sola dönmüşlerse, D ucuna vardıklarında bu ucun kapalı olduğunu görecekler ve geri dönmekten başka seçenekleri kalmayacak. Sağa dön- Müşlerse, açık olan C ucundan dışarı çıkabilecekler ve böylece dolambaçtan kurtulmuş olacaklar. “Dolambaçtan kurtulmak” bile bir bakıma başbaşına bir ödül sayılabilir. Fakat aç, yiyecek bulmaya güdülenmiş bir farenin, C ucundan çıktıktan sonra bii yiyecek bulması ve böylece fizyolojik bir gereksinimini karşılaması kuşkusuz çok daha değerli bir ödüldür. Böylesi güdülenme ve ödüllenmelerin öğrenme adı verilen olgu için önemli etkenler olduğunu deneysel psikoloji göstermektedir. Farenin dolambacı “öğrenmesi” adını verdiğimiz bu olgu şöyle gelişiyor: Aynı fare, birçok kez aynı dolambaca A ucundan bırakıldığında, ilk kez yaptığı gibi sınama-yanılma yoluyla, ikinci kez ve daha sonraki denemelerde de çıkışı buluyor. Fakat artan sayıdaki deneyimler gösteriyor ki, farenin çıkışa varmak için yaptığı çabalamaların sayısı giderek azalmaktadır. Sonunda öyle bir duruma geliniyor ki, artık fare her denemede, hiçbir sapma yapmadan en kısa yol olan A-B-C yolunu izleyerek ödülüne ulaşabiliyor. Sonuç olarak, farenin gelişigüzel davranışlar arasından karşısındaki problemi çözmeye yönelik en uygun davranışlar dizisini belirleyerek yeni bir davranış geliştirmiş olduğunu, başka bir deyişle, farenin dolambacın çözümünü öğrendiğini söyleyebiliyoruz.

Bu örneği asıl amacımız açısından önemli olan bilgisayar programları ile ilişkisini kurarak incelemeye devam edelim: Örneğin bilgisayar oyunlarındaki gibi “T” biçiminde düzenlenmiş bir dolambaç ve bu dolambacın içinde bir “sprite”ı gelişigüzel hareket ettiren bir bilgisayar programımız olsun. (Bu tür görsel oyunlara aslında gerek yok. Bunlar problemin sunuluşunu kolaylaştırmaya yarıyorlar.) Bu programa sprite'ın ya da farenin 'fizyolojik “F” adını verelim. Fizyolojik program hakkında şunlar söylenebilir:

1. Nasıl ki fare, duyu organları, sinir sistemi ve diğer uzuvları ile hareket halinde olup ileri, geri, sağa, sola dönmek gibi eylemleri otomatik olarak yapabiliyorsa, bilgisayar programımız da sprite'ı sürekli hareket ettirmeli ve random sayılarla işleyen bir karar mekanizması yardımı ile B noktasına geldiğinde sağa, sola veya geri dönmek, D noktasına geldiğinde ise sadece geri dönmek gibi seçeneklerin seçimini gerçekleştirmelidir. Bu hareketler, aç bir farenin yiyecek arama çabasına benzetilebilir; fakat bu genel çabalamalar belirli bir problemin belirli bir biçimde çözümüne yönelik değildir. Sprite'ın (farenin) çıkışa varması tümüyle rastlansal olarak ger-

.. Bilgisayarcılar için büyülü bir sözcük bu. Öğrenen ve öğrendiğini kullanan bilgisayarlar çağın ilk hedefi.

çekleşmektedir. Bu arada, sprite'ın hızının değişmediğini varsayıyoruz. 2. Farenin “acıkması”, “açlıktan ölmesi” ve “açlığını gidermesi” gibi olgulara karşılık olmak üzere bilgisayar programımızın da “mide”si diyebileceğimiz bir alt-programı olsun. Bu programın çalışması şöyle olabil: Fare dolambaca girdikten sonra çalışmaya başlayan bilgisayarın iç-saati bu amaç için kullanılabilir. Saatin alabileceği en büyük değer Tm olsun. Bu Tm değeri, yukarıda anlattığımız random sayılarla işleyen programın çıkışa ulaşabilmesine ortalama olarak imkan verecek kadar büyük seçilmelidir. Burada bir “ortalama değer”den söz etmek gerekir; çünkü “F” programı random sayılarla işlediğinden salt rastlansal olarak en kısa yolu i: leyerek çıkışa ulaşmış olabileceği gibi, gene salt rastlansal olarak çok uzun bir süre geçtiği halde çıkışa ulaşamamış olabilir. Şimdi, ortalama varış zamanı olan Tm'den daha uzun bir süre geçtiği halde sprite çıkışa varamamışsa bunun anlamı “açlıktan ölmek” olsun, Tm kadar veya daha kısa bir sürede çıkışa vardığında “yiyeceğe ulaşmış”, yani “açlığını gidermiş” sayılsın ve saatin değeri sıfırlansın. 3. Sistemin, geçireceği deneyimlerin kaydını tutan bir de belleği olsun. Bilgisayarların belleği bu amaç için yeterlidir. Buraya kadar “öğrenme” ya da “çözüm bulma” ile ilgili herhangi bir şeyden söz etmedik. Aynı program yürürlükte olduğu sürece benzer olaylar tekrarlanıp duracaktır. Böyle bir fizyolojik programla sistemin dolambacın çözümünü bulması mümkün değildir. Bu noktada şöyle bir programımızın daha olduğunu varsayalım: Bu yeni programa “Çözüm Öneren Program-M” adını verelim. Varsayalm ki bu programın şu işlevleri olsun: 1. “M” programı “F” programının içindeki herhangi bir satırı tümüyle iptal edebilsin. 2.“M” programı “F” programının içindeki bir satırı oluşturan çeşitli komutlar, işlemler, semboller, parametreler vb. üzerinde değişiklikler yapabilsin. 3. “M” programı “F” programının satır no. vb. üzerinde değişiklikler yaparak “F”nin akış şemasını değiştirebilsin. 4. “M” programı “F” programına gelişigüzel oluşturulmuş bir satır ekleyebilsin. “M” programı, bu değişiklik türlerinden hangisini, nasıl gerçekleştireceğine tümüyle random sayılarla işleyen bir mekanizma ile karar vermektedir; fakat bu değişiklikler bilgisayarın kullandığı dilin sentaksına uygun olmak zorundadır. Bu nedenle “M”nin ürettiği her değişiklik, yani her çözüm önerisi, hemen “F” üzerine uygulanmamalı, önce değişikliği sentaks yönünden inceleyerek uygun olup olmadığına karar veren bir “denetleme” programının onayından geçirilmelidir.

miz “M” programının ürettiği değişiklikler ile biyolojik sistemlerin evriminde önemli bir rol oynayan “mutasyonlar” arasında sıkı bir benzerlik vardır. Canlılarda genetik yapı her yeni kuşaklara aktarılışı sırasında mutasyonlar vb. nedenlerle değişime uğrar. Bu değişimlerden b: zıları organizmanın çevresine daha uyum yapmasını sağlarken kendi geçerliliklerini de onaylatmış olurlar. Yani, gelecek kuşaklara aktarılma şansını elde ederek türün bir özelliği olmaya hak kazanmış olurlar. Olumsuz yönde ortaya çıkan değişimler ise, eğer bireyin ölümüne neden olacak kadar önemli iseler, daha işin başında, bireyin ölümü ile birlikte eleneceklerdir. Fakat değişimler genellikle bu iki türden de değildirler. Ne sistemin çevresine daha iyi uyum yapmasını sağlarlar, ne de sistemin ölümüyoblem çözmek bilgi ve deneyim birikimi gerektirir. Öncelikle bu oluşturulmalıdır.

ne neden olacak kadar kötüdürler. Bu üçüncü tür değişimler türün evriminde çok önemli bir görev yaparlar. Bunların varlığı sayesinde belli bir oluşuma giden yolların sayısı artar ve hemen her türlü çözüm yolunun denenebilmesine olanak sağlanır. Aynı konuya aşağıdaki “c” maddesini incelerken tekrar değineceğiz. Problem çözme metodumuzun işleyişi de buna benzer bir yoldan olacak. Metodun işleyişini şematik bir biçimde inceleyelim: 1. Rasgele (random) hareketlerle sprite'ı çıkış noktasına Tm veya daha kısa sürede (ortalama olarak) ulaştırabilen bir başlangıç programı FI olsun. 2. Çözüm öneren program tarafından üretilmiş ve sentaksa uygunluğu onaylanmış olan bir değişiklik FI üzerine uygulanarak FI, F2 gibi bir programa. dönüştürülsün. Fakat Fl tü- Müyle yitirilmesin ve onun bozulmamış ilk biçimi bellekte saklansın. 3. Yürütme organları tarafından F2 yürürlüğe konsun. Başka bir deyişle, P2 işletilerek onun yeterli bir sürede çıkışa ulaşıp ulaşamadığı ve ortalama olarak ne kadar sürede ulaşabildiği belirlensin. Karşımıza şöyle durumlar çıkabilir: a) Eğer F2'nin ortalama varış süresi Tm'yi aşmışsa (fare açlıktan ölmüşse), bu başarısızlık Fi üzerindeki değişiklikten kaynaklanmıştır, o halde bu mutasyon olumsuz bir mutasyondur. F2 iptal edilip, başka bir değişiklik denenmek üzere Fl'e geri dönülmelidir. b) Eğer F2'nin ortalama varış süresi daha kısa ise (genel olarak: Fn'nin ortalama varış süresi Fn- 1'den daha kısa ise), bu son program öncekinden daha iyi bir program demektir. O halde yapılmış olan değişiklik onaylanabilir. Onaylama işlemi, bellekteki mevcut programın yerine son programın geçirilmesidir.

c) Değişikliklerin bazıları ise ne “a*

"daki gibi Tm'den daha uzun bir sürede, ne de “b”deki gibi daha önce yürürlüğe konmuş en iyi programdan daha kısa bir sürede varış noktasına ulaşabilmişlerdir. Bu tür programlar başarısız bir program olarak nitelenerek iptal edilmemeli, başarılı bir program olarak ana belleğe de aktarılmamalı; fakat bunlar üzerinde ikincil değişikliklerin yürütülmesine devam edilmelidir. Bu tür değişiklikler, problemin çözümüne giden yolun tıkanmaması ve hemen her olası çözümün denenebilmesini sağlamak için gereklidirler. Eğer böylesi bir esneklik getirilmemiş olsaydı, en son onaylanmış programdan daha başarılı bir programı bir tek değişiklik ile elde etmenin olanaklı olmaması durumunda sistemin işleyişi tikanacaktı. Çok iyi olmayan programlara da geri dönülmesi ve bunlar üzerinde de değişikliklerin denenmesine olanak tanınması, inişli çıkışlı bir süreç izlenmesine yol açmakla birlikte, çözüm arama yollarını zenginleştirerek er veya geç en iyi çözümün bulunabilmesini güvence altına almaktadır. Bu son anlattıklarımız şu tür bir eleştirinin ileri sürülmesini de engellemektedir: Örneğin FI üzerinde yapılan ilk değişiklik olumsuz olduğu halde, F2 iptal edilmeyip onun da üzerinde bir veya birkaç değişiklik yapılmasına izin verilse idi, elde edilecek olan Fm gibi bir program problemin çözümüne çok daha uygun olabilirdi. Oysa yukarda anlatılan metod yalnızca bir tek değişikliğe izin vermektedir. Bu doğrudur, fakat amacımız açısından Fm gibi bir programa hangi değişiklikler dizisini izleyerek ulaştığımız önemli değildir. Fm gibi bir programa her denemede yalnızca bir tek değişikliği değerlendirerek pek çok değişik yoldan ulaşabilme olanağımız gene vardır ve bu olanak “c'de anlatılan, “çok iyi olmayan” programların da üzerinde değişikliklerin yapılması yoluyla sağlanmaktadır. Benzer düşünceler “M” programının ürettiği değişiklikler için de ileri sürülebilir. “F”ler üzerinde yapılmak istenen bir tek değişiklik sentaksa uygun olmayabileceği halde, her biri teker teker ele alındığında sentaksa uygun olmayan değişikliklerin uygun bir dizisi sentaksa uygun olabilir. Burada da sözkonusu değişikliğe pek çok yoldan ulaşabilmenin olanaklı olduğunu ve “M” programının içinde buuygun düzenlemelerin yapılmış olduğunu varsaymakla yetinelim. 4. Yukarıda anlattığımız süreç, en kısa yoldan çıkışa varan program elde edilinceye kadar ya da en azından oldukça iyi olarak nitelenebilecek bir çözüm yolunun bulunuşuna kadar sürdürülebilir. Bu anlattığımız metoda genel ola rak şöyle eleştiriler yöneltilebilir: Yapılabilecek olan olası değişiklil lerin ve bunların çeşitli kombinasyonlarının sayısının sonsuz olabileceği ileri sürülerek en kısa yolu bulmanın pratik olarak olanaksız olduğu söylenebilir. Bu eleştiri geçerlidir. Fakat tam çözümün bulunması çok uzun bir süreyi gerektirdiği için olanaksız olsa bile, oldukça iyi çözümlerin gerçekleştirilebilmesi beklenebilir. Çoğu kez, çok karmaşık labirentlerin içinde farelerin, hattâ insanların da yapabileceği böyle nisbeten iyi çözümlerden ibarettir. Üstelik pek çok seçeneği kısa bir sürede sınamak ve bıkmadan uzun süre çalışmak gibi niteliklere sahip olan bilgisayarlar tam da bu tür çözüm yolları için geliştirilmiş en uygun araçlardır.

Örnekteki gibi bir dolambacın çözümünün, şeklin geometrik özellikleri gözönüne alındığında hemen bulunabileceği ileri sürülerek anlattığımız metodun gereksiz bir zaman kaybı olduğu da söylenebilir. Oysa biz burada sistemin daha önceden karşılaştığı durumlara hiç benzemeyen yeni ve bilinmeyen durumlardaki davranışları ile ilgilenmekte ve bu gibi durumlar için genel bir çözüm yolunun nasıl olabileceğini tartışmaktayız. Dolambacın çözümünü bir bakışta çözmek dolambaç problemine benzer bir du- Tumun daha önceden çözülmüş olmasını ya da en azından bu gibi durumlarla önceden pek çok kez karşılaşılmış olmasını gerektirir. Eski deneyim ve alışkanlıkların pek bir işe yaramadığı durumlarda ise, insanların da çoğu kez yaptıkları gibi, denenebilecek tek geçerli yol, anlattığımız metoda benzer bir yoldur. “Kanser problemi” gibi karmaşık ve bilinmeyenlerle dolu problemlerin çözümünde, tüm bilimsel bilgi ve deneyim birikimine rağmen problemin çözümüne götürecek olan belli başlı aşamaların gerçekleştirilmesi için yapılagelen çalışmalar ve buna ilişkin “bilimsel bulma metodunun” özü, yukarıda anlattıklarımızdan pek farklı değildir. Bir problemin çözümünde, problemi oluşturan ögelerin niteliklerini ve ögeler arasındaki ilişkileri sezinleme, analoji vb. yollardan faydalanma gibi etkinliklerin de önemli olduğunu yadsımıyoruz. Fakat bütün bunlar, ancak belli bir bilgi ve deneyim birikiminden sonra etkili olabilirler. zim üzerinde durduğumuz metod ise, sistemin deneysel birikiminin içeriğinin oluşturulmasını sağlayacak olan metoddur.

Hattâ belli bir bilgi ve deneyim birikiminden sonra bile gerek bilgisayarlarda, gerek insanlarda önerdiğimiz metoda benzer bir biçimde, çeşitli olası durumların sınanmasına dayanan, bedensel, zihinsel ve çoğu kez de bilinç altından yürütülen pek çok sayıdaki sınama-yanılma deneyimlerinin bulunduğunu gösteren olgular vardır.

Anlattığımız metodun her türlü öğrenme, bulma ve dolayısıyla bilginin temelini teşkil ettiği kabul edilirse, insanlardakine benzer öğrenme, bulma ve bilme gibi olguları bilgisayarların da gerçekleştirebileceği söylenebilir.