Connect-4 yapay zeka


#1

Merhabalar,
Yapay zeka ile ilgili ilk ele gelir çalışmamı bitirdim. Connect 4 isimli oyunu önce pygame ile yazdım ardından da hedefim bu oyunda kusursuza yakın bir yapay zeka yapmaktı.

Oyunda 6 satır 7 sütun şeklinde bir tahta bulunuyor ve amacınız bu tahtada 4 adet taşı yanyana, üstüste veya çapraz olacak şekilde getirip kazanmak. Arka planda 6 ya 7 lik matriste her boş alana 0, player1 hamlesinin olduğu kısıma 1 ve player2 nin hamle yaptığı kısımlara da 2 yazdım.

Öncelikle yazdığım oyunda siz kodu ctrl+c ile kırana kadar sonsuza kadar çalışacak şekilde rastgele sayılar üreterek tamamen rastgele oyunlar oynattım ve her oyunun sonucunda tahtanın durumunu ve o oyunu kimin kazandığını (player1 için 1, player2 için 2 ve beraberlik için 0 ) bir csv dosyasına kaydettim. Bu şekilde bilgisayarım bütün gece kendi kendine rastgele oyunlar üreterek 9 milyon satırlık oyunu (her satır da bir oyun olduğundan 9 küsür milyon oyun) kaydetti.

Ardından bu veri setiyle keras modelimi eğittim.
input > FC(42) > BatchNorm > FC(64) > FC(64) > FC(64) > FC(42) > FC(3,softmax) > output
Çıktı olarak tahtanın durumuna göre o oyunu kazanan playeri tahminliyordu. 1, 2 veya 0.
detaylarina github repomdan ulasabilirsiniz.

Yapay zeka hamle sırası kendisine geldiğinde oyunda maksimum 7 farklı sütündan taş bırakarak hamle yapabileceğinizden dolayı her bir sütün için o sütüna hamle yapsa %kaç ihtimalle player2 bu oyunu kazanacak şeklinde bir hesap yapıp hamleyi ve kazanma ihtimalini bir listede tutuyor. Ardından bu tahminin en büyük çıktığı hamleyi yapıp taşı oraya atıyor.

Validation accuracy’m %99,7 gibi bir değere ulaşmasına rağmen açıkçası yapay zekamın çok zeki olmadığı görülebiliyor. Bazen mantıklı oyunlar çıkararak rakibin 4 lüyü tamamlamasını engellese de çok da iyi çalıştığı söylenemez. Bunun sebeplerinden birinin dataseti tamamen random ürettiğim için oyunlarının genelinin yatay veya dikeyden bitip, çapraz biten oyun sayısı az olduğu için bunu çok iyi öğrenememesi olduğunu düşünüyorum.

Sizin bu konudaki fikirleriniz nelerdir? Buna benzer bir ağ ile istenilen seviyede yapay zekaya erişilebilir ancak bende bir hata mi var, yoksa genellikle bu tarz oyun projeleri oyun teorisi algoritmaları dışında klasik neural networklerle çok da başarılı olmazlar mı?
Github repo: https://github.com/cansozbir/Connect-4


#2

cevap bu zaten daha iyi sonuç için daha iyi veri seti oluşturmalısınız.