Bilgisayar Nasıl Haberdarımsı Gösterilir? — Joseph Weizenbaum

General Electric Bilgisayar Laboratuvarı’ndan (Mountainview, California) Joseph Weizenbaum’un (ChatGPT’nin babuşkası ELIZA’yı kodlayacak kişi) Datamation dergisi Şubat 1962 sayısında çıkan yazısı: (Kova’da dev stelyum) “How to make a computer appear intelligent?” (zekanın türevi muhaberattır) (intelligence her iki anlama da gelir; zeka fallik, muhaberat mamillar halidir) (yapay zeka heykeltraşlığı çağrıştırır, suni muhaberat ek malumatı çağrıştırır)

Hem genel anlamda muhaberatın hem de suni muhaberatın teşekkülüne dair rivayetler muhteliftir. Deneme yanılma yöntemiyle suni muhaberat betikleri kodlayan işçiler de teyit eder ki bu mefhumu netleştirme gayreti –en azından şimdilik– teşekkürsüz bir uğraştır (betik: script: program). Bu özel anlam göbeğinin mücerret tefekküründen fiiliyata tesir edecek katkılar gelmesi beklenemez.

Minsky’nin kimi konuşmalarında önerdiği tanıma göre belli bir gözlemcinin anlayamadığı neticeler üreten herhangi bir faaliyet o gözlemciye sanki bir şeylerden ‘haberdar’ımsı (ne yaptığını biliyormuş gibi) veya en azından ‘nispeten bihaber’imsi (az çok fikri varmış gibi) gözükecektir.

Gözlemci nihayet olan biteni anlamaya başladığı zaman muhtemelen kendini bir miktar kandırılmış hissedecektir ve o ana dek gözlemekte olduğu ‘haberdar’ımsı davranışın aslında ‘salt mekanik’ veya ‘algoritmik’ olduğunu ilan edecektir [1].

‘Suni muhaberat’ betikleri kodlayan birisi o halde belli ki –yukarıdaki mantığa göre– kimi gözlemcileri bir süreliğine kandırma işine girişmiştir. Başarı ölçüsü de maruz kalanlar arasında kanan gözlemcilerin oranı çarpı jetonları düşene kadar geçirdikleri süredir.

Kendini kodlayan kişiye dahi izini kaybettirecek kadar müşkülleşen betiklerse (ya sahiden bir şeyler öğrenerek ya da kodlayan kişinin belgeleme ve böcek ayıklama işlerini savsaklaması nedeniyle) belli ki en çok haber getiren betiklerdir [ç.n. bağlamına göre bu haber böcek ihbarı veya ayıklama müjdesi olabilir, hepsi parapraksis kapsamına girer].

Bu makalede tarif edilen betik Gomoku adıyla bilinen Beşle! oyununu oynar. Yazarın bildiği kadarıyla bu oyunda galibiyeti –veya en azından beraberliği– garantileyen belirli bir strateji yoktur, olası hamleleri tek tek gözden geçirmek haricinde. Nim ve XOX oyunlarında ise galibiyeti garantilediği bilinen stratejiler kodlanabilmiştir.

Yukarıda verilen kıstası sağlayan bir betik elbette (birçok gözlemci nazarında) bilgisayarı ‘haberdar’ımsı gösterecektir. Rakibin konum tutmasına müsaade ederken bir süreliğine kendi durumuna odaklanan ancak zaman zaman belli hamlelerle açıkça savunmaya geçen bir betik harika bir spontanlık yanılsaması kurup yürütebilir. Oysa betik aslında aşağıda tarif edilen basit algoritmadır.

Belki ironiktir ama yazarın asla yenemediği bu betik Beşle! oyununda ustalaşması gereken öğrenci betiklerin otomatik rakibi (öğretmeni) olarak kullanılmaktadır.

Beşle! genelleşmiş XOX gibidir: Beşle! oyununda beşlemek XOX’te üçlemek gibidir, ayrıca 3×3 tahtada oynanan XOX’in aksine Beşle! oyunu geleneksel 19×19 Go tahtasında oynanır. Tahta üzerinde kendi taşlarını art arda ve tek sıra halinde (herhangi bir yönde) beşlemeyi başaran ilk oyuncu galip gelmiştir.

Temel strateji –hem oyuncu (O) hem de makine (M) açısından– bütün olası hamlelere çeşitli değerler tayin edildikten sonra, rakibin yapabileceği planları olabildiğince boşa çıkarırken kendi yararını eniyilemeyi amaçlayan bir teknikle bir sonraki hamleye karar vermektir.

Stratejinin püf noktası değerlenme fonksiyonlarını eniyileyecek özel teknikleri bulmaktır. O zaman taktiklere ince ayar çekmek de kolaylaşır. Tabi elinizde hazır bir terminoloji olmalı ki değerlenme stratejinize gereken fonksiyonları netlikle tarif edebilesiniz.

Tanımlar

Yatay, dikey veya çapraz yönde art arda beş kareye bir zincir denir. Her nokta dört zinciri çıpalıyor denir. (i, j) noktasında çıpalanan zincirler şunlardır (s=0,1,2,3,4 için):

B(i, j) ≡ (i–s, j)
KB(i, j) ≡ (i–s, j+s)
K(i, j) ≡ (i, j+s)
KD(i, j) ≡ (i+s, j+s)

[batı, kuzeybatı, kuzey, kuzeydoğu]

Böylece her olası zincire özel bir ad verilmiş olur (tahtaya konan ilk taşı koordinat sistemine merkez alabilirsiniz). Her zincirde iki değer vardır: O değeri (OD), M değeri (MD). Bir zincirin O ya da M değeri o zincirde bulunan O veya M taşlarının sayısından ibarettir. O-değerli zincirler M’yi alakadar etmez, M-değerli zincirler de O’yu alakadar etmez. Kimi zincirlerse ne O’yu ne de M’yi alakadar eder. Alakasız olmayan her zincir alakalıdır. Her (i, j) noktası yirmi zincire aittir denir (o noktaya konan taşla değer değiştirecek zincirler). (i, j) noktasının ait olduğu zincirler şöyledir (s=0,1,2,3,4 için):

B(i, j) ≡ (i+s, j)
KB(i, j) ≡ (i+s, j–s)
K(i, j) ≡ (i, j–s)
KD(i, j) ≡ (i–s, j–s)

Ayrıca her (i, j) noktası 32 noktayla bağlaşıktır denir (o noktanın ait olduğu yirmi zinciri oluşturan diğer noktalar). (i, j) noktasına bağlaşık noktalar şöyledir (t=1,2,3,4 için):

(i±t, j)
(i, j±t)
(i±t, j±t)
(i±t, j±t)

Konum değerleri

Artık hem O’nun hem de M’nin konum değerleri tanımlanabilir (OKD’ler ve MKD’ler). Bunları hesaplama algoritmalarını kıyaslayıp seçmeniz gerekecek. Özel bir algoritma tarif etmeden önce konum değerlerinin stratejiye nasıl oturduğuna bakalım.

Boş (i, j) konumu için OKD(i, j) oyuncunun yürüttüğü planda o özel konumdan sağlayacağı yararın sayısal ölçüsü olmalıdır: O bu hamleyi yaparsa O-alakadar zincirlerin ne kadar zenginleşeceğini yansıtmalıdır.

Bunu hesaplama yöntemi ise dört muhtemel zincir değerine özel birer yük y(OD) tayin etmek, sonra da (i, j) konumunun ait olduğu bütün O-alakadar zincirlerdeki yükleri toplamaktan ibarettir. Yani OKD(i, j) hesaplaması şöyledir:

OKD = Σs=1r y(OD)s

s’nin dolaştığı r tane O-alakadar zincir vardır. MKD(i, j) de aynı yöntemle hesaplanır.

Bu fonksiyon tanımı halen geneldir çünkü yükleme yordamını henüz tarif etmedik. Bir makinenin oyunculuk vasfı büyük ölçüde ona tarif edilen yükleme kurallarına bağlı kalır. Bir tabloyla bu kurallar kolayca tarif edilir. Bu makalede sunulan oyunda aşağıdaki tablo kullanıldı.

Zincir Yükleme Tablosu:
Zincir Değeri 1 için Yük 5
Zincir Değeri 2 için Yük 25
Zincir Değeri 3 için Yük 80
Zincir Değeri 4 için Yük 1000

Temel Strateji

Zincir yükleme tablosu verildikten itibaren makinenin yürüteceği strateji oldukça düzayaktır: O hamle yaptığında bütün O-alakadar zincirler güncellenir. Seçilen noktayla bağlaşık 32 nokta için yeni OKD’ler ve MKD’ler hesaplanıp kaydedilir. Taş konmuş herhangi bir noktayla bağlaşık her boş yere bir sonraki makine hamlesi için bakılacaktır. Bakılan her yer için şu sayı hesaplanır:

N = K1 OKD + R K2 MKD

K1 ve K2 (küçük tamsayılar) strateji parametreleridir. R de aşağıdaki formülle hesaplanır. Demek ki strateji beş serbest parametreye bağlıdır: K1/K2 oranına bağlıdır, bir de zincir yükleme tablosunu oluşturan dört yüke bağlıdır. Dikkat ederseniz K1/K2 saldırganlık katsayısıdır. Bu katsayının alacağı değerlere göre makine saldırgan veya savunmacı oynayabilir. İnsanların ne kadar saldırgan oynadıkları hamleden hamleye değişmektedir. Sağlam konumlarına güvenirken ne kadar tehlikeye düştüklerini değerlendirerek oyun değiştirirler. Buna benzeterek strateji kuran makine (sırası geldiği zaman) şu oranı hesaplar:

R = azami(MKD) / azami(OKD)

Sonra da her hamlesi için K2‘yi R ile çarpar. Yani makine eğer oyuncunun bir sonraki olası hamlesinden çok daha güçlü hamleler yapabiliyorsa saldırganlaşacaktır, yapamıyorsa savunmaya çekilecektir.

N(i, j)’yi azami kılan nokta (eğer varsa) makinenin yapacağı hamledir. Eğer çok sayıda N azami değere sahipse rastgele sayı üreteciyle herhangi biri seçilecektir. MD’ler, OKD’ler ve MKD’ler güncellendikten sonra oyuncu bir sonraki hamlesini yapabilir.

Tecrübelere bakılırsa saldırganlık katsayısını 1 civarında başlatmak uygundur. Tabi makine fazlaca savunmaya çekilirse oyuncunun hamlelerini sevimli bir köpecik gibi takip etmeye başlar, o zaman da dikkatli oyuncular makineyi tuzağa düşürebilirler. Katsayı fazlaca saldırgan olduğunda ise oyuncu zorluk çekmeden zamanla çeşitli bileşimler kurarak makineyi zor duruma düşürebilir.

Yukarıda sunulan yükleme tablosu aşağıdaki kıyaslar temelinde seçilmiştir:

a) İki değerinde alakalı bir zincirin yükü, bir değerinde iki kesişen zincirin yükünden fazla olmalıdır.

b) Üç değerinde alakalı bir zincirin yükü, iki değerinde iki kesişen zincirin yükünden fazla olmalıdır.

Bu kıyaslar aşağıdaki eşitsizliklere varır (tablo da bunları karşılar):

8 y(1) < 2 [ 3 y(2) + y(1) ]

2 y(3) > 5 y(2) + y(1)

Aslında y(4) yükü alakasızdır çünkü dört değerinde zincirin makinede mi yoksa oyuncuda mı olduğu basit bir testle anlaşılabilir. Eğer dört değerinde zincir makinedeyse zaten onu tamamlayıp oyunu kazanacaktır. Aksi halde her zaman oyuncunun dört değerindeki zinciri durdurulmalıdır. Yükleme tablosuyla bu iş hallolabilirdi ama makine savunmaya çekildiği takdirde hem M-alakadar hem de O-alakadar dört değerinde zincirler varsa makine kazanmak yerine rakibini durdurmayı seçer. ‘Dört değer’ testiyle bu zorluk kolayca aşılır.

Betik başlangıçta saldırgan oynayarak ‘nispeten bihaber’imsi hedef odaklı davranış sergiler. Yapılacak iş beşlemektir ve betik de bittabi derhal bu vazifeye atılmıştır. Zaten oyuncu başlarken henüz makinenin savunmaya çekilmesini gerektirecek herhangi bir konum tutmuş değildir. Betiğin bu şekilde oyuna başlaması oyuncunun yararınadır. Bunu dengelemenin bir yolu başlangıçta tutturulabilecek çeşitli patikaları makinenin kullanımına vermektir. Mevzubahis zorluğu aşmak için muhtemelen iki üç hamlelik patikalar yeterli olacaktır. Makine ayrıca ‘patika tespitçiliği’ de yapabilir: Kazandıran bileşimler oluşturacağı bilinen kimi patikaların tamamlanmasını önleyebilir.

Bu yazıda anahatları çizilen stratejiyi uygulayan bir betiği General Electric Bilgisayar Laboratuvarı’ndan R. C. Shepardson kodladı. Zayıf ve güçlü oyuncularla kapıştırılan bu betik genelde acemilere galip geldi, ikinci sırada başlasa bile.

Tarif edilen stratejinin ‘haberdar’ımsı görünüşüyle alakalı bir konu da acemilerin betikte uygulanan algoritmaya riayet ederek oynadıklarının görülmesidir. Hatta bu davranışı sürdürürler de. Birçok oyun geçirdikten sonra acemi birdenbire bambaşka bir stratejiyle hamlelerini seçerek oynamaya başlar. İşte o andan itibaren sistemi yenebilmeye de başlar. Bu tespitlere delil toplamak için oynanan oyunların yazıcı çıktıları tek tek analiz edildi. Yazdırılan verilerden biri de makinenin ‘şayet oyuncunun yerinde olsaydı hangi hamleyi yapacağı’dır. Birçok oyunda acemiler tam da makinenin seçeceği hamleleri yapmışlardır. Demek ki makine çoğu galibiyetini yanılmaz kayıtçılığına borçludur, çünkü oyun uzayıp veriler çoğaldıkça oyuncunun kafası karışmaktadır.

Yukarıdaki yoruma dayanarak makineyi geliştirmek için stratejide bir değişiklik yapılabilir. Oyuncunun alışıldık/ortodoks (kodlanmış) stratejiden uzaklaşan hamleleri betikte bir taktik değişikliğine yol açabilir. Bu farklılaşma şu yolla teşhis edilebilir: Alışılmadık/aykırı hamlelerin konum değerleri düşüktür. Oyuncu alışılmadık/aykırı/sapkın hamlelere geçtiği andan itibaren makine derhal savunmaya çekilmelidir ve bittabi oyuncunun alışılmadık hamlesiyle bağlaşık noktalara verebileceği karşılıklara bakmalıdır yalnızca.

Kaynakça:

1. C. E. Shannon, “Programming a Computer for Playing Chess,” Phil. Mag, Vol. 41, No. 314, March, 1950.

2. C. E. Shannon, “Game Playing Machines,” Journal of Franklin Inst. Vol. 260, pp. 447-453, December, 1955.

Türkçesi: Işık Barış Fidaner

Notlar:

[1] ç.n. Bkz “Türk-matik ve Analitik Motor” Martin V. Butz, Esther F. Kutter

Bkz “Für ELIZA”, “Do chatbots dream of electric mothers?”, “Suni muhaberat üç buçuk: Hele bir mayış!”

3 Yorum

Filed under Çeviri, Bilim, Suni muhaberat

3 responses to “Bilgisayar Nasıl Haberdarımsı Gösterilir? — Joseph Weizenbaum”

  1. Geri bildirim: Tüfeng — derleme | YERSİZ ŞEYLER

  2. Geri bildirim: Muhaberat — derleme | YERSİZ ŞEYLER

  3. Geri bildirim: Solaraks (Solaris): Umman Mürşit (Uhm man more shit?) — Stanislaw Lem | YERSİZ ŞEYLER