Rekabet ortamında arama Rekabet ortamında Arama (Adversarial Search) Oyunlarda Arama Kerem Salçın Çoklu etmen ortamı- her bir etmen (agent) karar verirken diğer etmenlerin de hareketlerini dikkate almalı ve bu etmenlerin onun durumunu nasıl etkileyeceğini bilmelidir Olasılık- diğer etmenlerin hareketlerinin tahmin edilebilmemesi Önceden tahmin edilemeyen" karşı taraf rakibin her olası cevabına karşı bir hareketin belirlenmesi İşbirlikçi ve rakip etmenler Rekabet ortamında arama / oyun Zaman sınırlamaları Oyun neden öğrenilmeli? Yapay Zekanın en eski alanlarından birisi (Shannon and Turing, 1950) Zeka gerektiren rekabetin soyut ifadesi Durum ve eylemlerin kolay ifade edilebilirliği Dış dünyadan çok az bilginin gerekli olması Oyun oynama, bazı yeni gereksinimlerle aramanın özel halidir. Oyun Türleri Tam bilgili (perfect info) Tam olmayan bilgili (imperfect info) Belirlenmiş (deterministic) Şans / rastsal (Stochastic) Satranç, dama, go - tam bilgili, belirlenmiş Tavla- tam bilgili, şans / rastsal Kağıt oyunları- tam olmayan bilgili, şans / rastsal imperfect information - örn: karşı tarafın elindekini bilememe Oyunların çözümü zordur: Oyunla bağlı sorunlar Olasılık sorunu Rakibin hareketini bilmiyoruz! Arama uzayının boyutu: Satranç : her durumda yaklaşık ~15 hareket, 80 karşılıklı hamle ağaçta 15 80 düğüm Go : her durumda ~200 hareket, 300 karşılıklı hamle ağaçta 200 300 düğüm Optimal çözümün çoğu zaman mümkün olmaması Oyun oynama Algoritmaları Minimax algoritması Alpha-beta Budama Değerlendirme fonksiyonu Aramayı kesme Her hangi derinlik sınırına kadar arama Derinlik sınırında değerlendirme fonksiyonunun kullanılması Değerlendirmenin tüm ağaç boyunca yayılması 1
Oyun problemlerinde Arama ağaçları Başlangıç durum(initial state)- ilk pozisyon ve birinci hamle yapacak oyuncu Ardıl fonksiyonu(successor function)- (hareket,durum) çiftleri listesini veriyor; geçerli hareket (legal move) ve bu hareket sonucu durum Uç düğüm (terminal node) denemesi - oyunun bittiğini belirler. Oyunun son bulduğu durumlara uç düğümler (yapraklar / leaf nodes / terminals) denir Yarar fonksiyonu (utility function)- uç durumlar için sayısal bir değer verir Oyun ağacı (game tree)- başlangıç durum ve her iki tarafın geçerli hareketleri Oyun Ağacı Örneği (2-oyunculu tic-tac-toe, belirlenmiş) Yarar fonk. (Utility): Kazanırsa +1 Kaybederse -1 Beraberlik 0 Minimax Algoritması Belirlenmiş oyunlar için mükemmel taktik Temel fikir: en yüksek minimax değerli hareketi seçmeli = en iyi ulaşılabilir sonuç Minimax Algoritması Minimaxdeğer (n)= Yarar(n), eğer n son durum ise (yaprak / uç düğüm) Max (Minimaxdeğer(s)), n Max düğüm ise (maksimum toplamak isteyen oyuncu, o1) S ardıllar(n) Min (Minimaxdeğer(s)), n Min düğüm ise (o1 e minimum toplatmak isteyen diğer oyuncu, o2) S ardıllar(n) Minimax Algoritması Minimax - Özellikleri tam? Evet (eğer ağaç sonlu ise) Optimal? Evet (optimal rakibe karşı) Zaman karmaşıklığı? O(b m ) Uzay karmaşıklığı O(bm) (derinine arama) m: ağacın en fazla derinliği b: her noktada mümkün hamleler sayısı Satranç için b 35, m 100 2
Satrançta Minimax kullanılırsa? Arama uzayının büyüklüğü (32 40 ) Ortalama hamle sayısı = 40 Her adımda yapılabilecek farklı hamle sayısı ortalaması = 32 32 40 = 2 200 ~ 10 60 Saniyede 3 milyar durum işlersek Bir yıldaki saniye sayısı ~ 32*10 6 Bir yılda işlenecek durum sayısı ~ 10 17 Tüm durumların değerlendirilmesi ~ 10 43 yıl sürer. Evrenin yaşı ~ 10 10 yıl Sınırlamalar: 2 oyuncu: (bilgisayar) ve MIN (rakip) belirlenmiş, tam bilgi Derinine arama ve değerlendirme fonksiyonu MIN Minimax Algoritması - Örnek 3 Bu hareketi seç 2 1 3 2 5 3 1 4 4 3 - Derine doğru ağaç oluşturmalı - Her seviye için, en son uç düğüm / yaprağa ulaşılınca, değerlendirme fonksiyonu ile değer hesaplamalı -Değerlendirme fonksiyonunu yaymalı: - MIN de minimum kabul ediliyor - da maximum kabul ediliyor Minimax Algoritması Örnek 2 Minimax Algoritması Örnek 3 Alpha-Beta (α-β) Budama Tüm durumları değerlendirmek gerekir mi? Basit bir α-β budama örneği: Tüm ağacın (yukarıdan aşağıya doğru derinine) oluşturulmasına ve değerlerin tüm ağaç boyu yayılmasına gerek kalmayabilir Edinilmiş bazı değerler,ağacın üretilmemiş kısımlarının fazla olduğu ve üretilmesine gerek kalmadığı bilgisini verebilir 1 α Bir durumun alabileceği maksimum değer β Bir durumun alabileceği minimum değer Önemsiz, seçilecek yolu etkilemez 3
α-β budama için Minimax değerinin bulunması Temel fikir: oyun ağacında her bir düğüme bakmadan da doğru çözümü bulmak mümkündür. Böylece ağacın bakılmayan kısmı budanmış oluyor. Minimax Değer(kök)= max(min(3,12,8),min(2,x,y),min(14,5,2)) =max(3,min(2,x,y),2) =max(3,z,2 ) ; z=min(2,x,y) kabul ettik. Buradan z<=2 olduğu anlaşılıyor. O zaman Minimax Değer(kök)= 3 alırız 4
Alpha'ya -, Beta'ya + ilk değerlerini ata. Derinine arama (Depth first) ile ilk yaprağa (uç düğüme) kadar in. Eğer α β, o zaman o düğümün altında kalanları buda. İlk yaprağı değerlendir ve buna göre [alfa, beta] değerlerini güncelle. 3.adım 2.adım 1.adım İkinci yaprağı değerlendir ve buna göre alfa, beta değerlerini güncelle. 3.adım Üçüncü yaprağı değerlendir ve buna göre alfa, beta değerlerini güncelle. 3.adım 2.adım 2.adım 1.adım 4.adım 1.adım 4.adım 5.adım Dördüncü yaprağı değerlendir ve buna göre alfa, beta değerlerini güncelle. α-β Budama için Başka bir Örnek 3.adım 2.adım [3,2] 1.adım 4.adım5.adım 6.adım 7.adım 7.adım: En küçük değer 3, altıncının en büyük değeri 2, o halde X ile işaretlilerin değerlerini bulmaya gerek yok, zaten alfa ve beta yı değiştiremezler. 5
α-β Budama' nın Özellikleri Budama, sonucu etkilemez Hareketlerin iyi sıralanması budamanın etkinliğini yükseltir mükemmel sıralamada," zaman karmaşıklığı = O(b m/2 ) Neden α-β Budama? α, Max için yol boyunca seçilmiş en iyi (en yüksek) değer Eğer V α dan kötü ise Max onu iptal edecek uygun dal budanacak Min için β, benzer yolla değerlendirilir α-β Budama Algoritması α-β Budama Algoritması Alpha-Beta Budama İlkeleri - düğümlerde (geçici) değerler ALPHA değerlerdir - MIN düğümlerde (geçici) değerler BETA değerlerdir Mini-Max ve Budama için İdeal sıralanmış ağaç örneği 21 2 Alpha-değer 21 12 3 MIN MIN 2 =2 1 Beta-değer 21 24 27 12 15 18 3 6 9 2 5 1 21 20 19 24 23 22 27 26 25 12 11 10 15 14 13 18 17 16 3 2 1 6 5 4 9 8 7 36 6
Kazanç: En İyi (optimal) Olası Durum Eğer her düzeyde en iyi düğüm, en soldaki düğüm ise MIN Değerlendirme fonksiyonları Oyunun sonucunun çok derinlerde olduğu durumlarda durumların değerlendirilmesi için kullanılan fonksiyonlardır. Satranç için bu fonksiyon genellikle önceden belirlenen özniteliklerin doğrusal toplamı olarak düşünülür. Eval(s) = w 1 f 1 (s) + w 2 f 2 (s) + + w n f n (s) Örnek, w 1 = 9 ve f 1 (s) = (beyaz vezir sayısı) (siyah vezir sayısı), vs. Ağırlıklı toplam, bileşenlerin birbirinden bağımsız olduğunu varsayar. Yalnızca kalın doğrular incelenmeli 37 Değerlendirme Fonksiyonları Ağırlıklı doğrusal fonksiyon Eval(s) = w 1 f 1 (s) + w 2 f 2 (s) + + w n f n (s) w-özelliğin ağırlığı f-özellik Örnek: satrançta f(s) = aynı türden taşların sayısı w-uygun taşın ağırlığı (örn., piyon için 1) Satranç için değerlendirme fonksiyonu Taş değerleri: Piyon=1, at=fil=3, kale=5, vezir=9 Siyahlar: 5 piyon, 1 fil, 2 kale Skor = 1*(5)+3*(1)+5*(2) = 5+3+10 = 18 Beyazlar: 5 piyon, 1 kale Skor = 1*(5)+5*(1) = 5 + 5 = 10 Bu durumun iki taraf için skorları: siyahlar için = 18-10 = 8 beyazlar için = 10-18 = -8 Satranç için değerlendirme fonksiyonu Tic-Tac-Toe için Değerlendirme fonksiyonu Asıl iş: f leri ve w leri belirlemek: Etrafı boş olan piyonlar kötüdür. Şahın korumaları var mı? Hareket becerin ne durumda? Tahtanın ortasının kontrolü sende mi? Oyun süresince w lerin değerleri değişir mi? 7
Tic-Tac-Toe için Değerlendirme fonksiyonu (ilk hamlemiz, 2 derinlikli arama) Sınırlı Derinlikte Arama (Cutoff search) MinimaxCutoff MinimaxValue ile aynıdır. 1. Terminal yerine Cutoff Kullanılır. 2. Utility yerine Eval kullanılır. Satrançta yeterli mi? Hamle yapma süresi eğer 100 saniye ise ve 10 4 düğüm/saniye hızda inceleme yapabiliyorsak her hareket için 10 6 düğüm inceleyebiliriz. b m = 10 6 ile sınırlıysa b=35 ise m=4 olabilir. 4-katlı ileri-bakış (look-ahead) amatör bir satranç oyuncusu 4 kat (hamle) ileri bakan bir program en iyi olasılıkla amatör oyuncuları yenebilir. 4-kat amatör oyuncu - insan 8-kat master seviyesinde insan 12-kat Deep Blue, Kasparov Çözüm: Sınırlı derinlikte aramaya alfa beta budamayı eklemek Sınırlı Derinlikte Arama da Ufuk Etkisi (Horizon Effect) Aramayı farklı derinliklerde yapmanın etkisi: C2 deki beyaz kale a2 deki piyonu alır mı? 1 derinlik Bir piyon kazançta olduğundan alır. 2 derinlik Bir piyona bir kale değmez. Almaz. 3 derinlik Bir piyon + bir kaleye, bir kale değer. Alır. Rastgele olmayan oyun uygulamaları Dama (Checkers): Chinook 1994 de dünya şampiyonu Marion Tinsley ile başabaş oynadı, aynı yıl Tinsley sağlık sebeplerinden oyunlardan çekildi ve Chinook o zamandan beri dünya şampiyonu. Günümüzde dama yapay zeka ve oyun algoritmaları ile tamamen çözülmüş durumdadır. Satranç: Deep Blue 1997 de 6 oyun sonunda dünya satranç şampiyonu Garry Kasparov u yendi. Deep Blue saniyede 200 milyon düğümü arayabilmekte, oldukça iyi bir değerlendirme fonksiyonu kullanmakta, gerektiğinde 40-kat hamle ileriyi görebilecek derecede arama yapabilmektedir. 4 derinlik bir piyon + bir kaleye, 2 kale değmez. Almaz. Rastgele olmayan oyun uygulamaları Rastgele olmayan oyun uygulamaları Othello (reversi): Günümüzde insan dünya şampiyonları bilgisayarlara karşı yarışamamaktadır, bilgisayarlar bu alanda çok üstündür. Go: İnsanlar 2015 yılına kadar halen üstünlüklerini korumaktaydı. Bunun nedeni, 19x19 luk oyun tahtasında b=361 olmasıdır. Arama teknikleri yerine örüntü tanıma teknikleri daha yaygın kullanılmaktadır. İlk olarak, Ağustos 2008 de her biri 32 işlemciye sahip 25 sunucuda çalışan Mygo profesyonel bir go oyuncusunu yendi. 8
Bilgisayarla satranç oynamak 1957 - Newell ve Simon: 10 yıl içinde dünya satranç şampiyonunun bir bilgisayar olacak 1958 : Satranç oynayan ilk bilgisayar IBM 704 1967 : Mac Hack programı insanların katıldığı bir turnuva da başarıyla yarıştı 1983 : Belle programı, Amerika Satranç Federasyonundan master ünvanını aldı. 1980 lerin ortaları : Carnegie Mellon üniversitesinde bilim adamları sonradan Deep Blue ya dönüşecek çalışmayı başlattı. 1989: Projeyi IBM devraldı. Bilgisayarla satranç oynamak 11 Mayıs 1997, Gary Kasparov, 6 oyunluk maçta Deep Blue ya 3.5 a 2.5 yenildi. 2 oyun deep blue, 1 oyun Kasparov aldı, 3 oyun berabere http://www.research.ibm.c om/deepblue/meet/html/d. 3.html Yöntemlerin Gelişimi ve Kullanımı Shannon, Turing Minimax arama 1950 Kotok/McCarthy Alpha-beta budama 1966 MacHack Dönüşüm tabloları 1967 Chess 3.0+ Iterative-deepening 1975 Belle Özel donanım 1978 Cray Blitz Paralel arama 1983 Hitech Paralel değerlendirme 1985 Deep Blue yukarıdakilerin hepsi 1997 Satranç ustası İnsan ve Deep Blue arasındaki farklar: Deep Blue saniyede 200,000,000 in üzerinde pozisyonu inceleyebilir ve değerlendirebilir. Bir usta ise saniyede 3 pozisyon değerlendirebilir. Deep Blue nun bilgisi azdır, ama hesaplama yeteneği çok yüksektir. Ustanın çok büyük satranç bilgisi vardır, ama hesaplama yeteneği sınırlıdır. İnsan satranç oynadığı zaman duyumundan, önsezisinden yararlanıyor. Deep Blue nun duyma, sezme yeteneği yoktu. Deep Blue, bir uluslararası büyük usta ve beş IBM araştırmacı bilim İnsanının rehberliğinden faydalanmıştır (1997 yılı). Bir ustaya ise antrenörü ve çok iyi satranç oynayabilme yeteneği yardım eder. İnsan kendi hatalarından ve başarılarından öğrenebilme yeteneğine sahiptir. Deep Blue ise, geliştirildiği dönemde öğrenme sistemi değildi; bu nedenle, rakibinden öğrenmek veya satranç tahtasındaki durumu düşünmek için yapay zeka kullanma yeteneğine sahip değildi. Satranç ustası İnsan ve Deep Blue arasındaki farklar: Programın korku duygusu, fikrinin dağıtılması endişesi yoktur (örneğin, Kasparov un sabit bakışlarından). Bir ustanın ise insani zayıflıkları vardır, canı sıkılabilir, konsantrasyon dağılabilir vb. Programın oyun anlayışındaki değişimler,geliştirme ekibi tarafından yapılmalıdır. Usta ise her oyundan önce, sonra, oyun içinde oyununda / taktiklerinde değişiklik yapabilir. İnsan, rakibini değerlendirerek onun zayıf yönlerini öğrenebilir ve bundan yararlanabilir. Program ise satranç pozisyonlarını çok iyi değerlendirse de rakibinin zayıf yönlerinden yararlanamaz. İnsan, değerlendirebildiği pozisyonlar içinden seçim yapar. Program ise mümkün pozisyonlar içinden en iyisini seçebilir. (Deep Blue, geliştirildiği ve sınandığı dönemde (1997 yılı) bile, saniyede 200 milyon pozisyon içinde arama yapabiliyordu) Öte yandan Drew McDermott (Prof. Dr., Computer Science, Yale University, AI expert) : Deep Blue nun gerçekte satrançtan anlamadığını söylemek, bir uçağın kanatlarını çırpmadığı için uçmadığını söylemeye benzer. Uzaylılar dünyaya gelse ve bize satrançta meydan okusalar; Yarışmaya Deep Blue u mu, Kasparov u mu gönderirdiniz? 9
İçinde şans faktörü olan oyunlar Tavla atılan zarlara göre oyun oynanır. Kağıt oyunları kağıtların dağılımına göre oyun oynanır. Oyun ağacını oluşturmak için her türlü varyasyonun göz önüne alınması gerekir. 56 Özet Oyunlar zevklidir. Yapay Zeka hakkında pratik yeni fikirler üretirler. Hesaplama karmaşıklığı sebebiyle mükemmellik sağlanamayabilir. Bunun yerine yaklaşımlar, kestirimler kullanılır. 57 10