Satranç yapay zekası oluşturmak için adım adım kılavuz
Basit bir satranç yapay zekası oluşturmamıza yardımcı olacak bazı temel kavramları keşfedelim:
- Hareket Oluşturma
- Kurul değerlendirmesi
- Minimax
- Alfa beta budama.
Her adımda, algoritmamızı bu zaman içinde test edilmiş satranç programlama tekniklerinden biriyle geliştireceğiz. Her birinin algoritmanın oyun tarzını nasıl etkilediğini göstereceğim.
AIX’e ait satranç yapay zekası için buraya tıklayabilirsiniz.
1. Adım: Satranç yapay zekası oluşturma ve pano görselleştirmesini taşıma
Hareket oluşturma için satranç .js kütüphanesini ve tahtayı görselleştirmek için satranç tahtas.js kullanacağız. Hareket oluşturma kütüphanesi temel olarak satrancın tüm kurallarını uygular. Buna dayanarak, belirli bir kurul durumu için tüm yasal hareketleri hesaplayabiliriz.
Bu kütüphaneleri kullanmak, yalnızca en ilginç göreve odaklanmamıza yardımcı olacaktır: en iyi hareketi bulan algoritmayı oluşturmak.
Tüm olası hareketlerden rastgele bir hareket döndüren bir işlev oluşturarak başlayacağız:
Bu algoritma çok sağlam bir satranç oyuncusu olmasa da, aslında ona karşı oynayabileceğimiz için iyi bir başlangıç noktasıdır:
Adım 2 : Satranç yapay zekası pozisyon değerlendirmesi
Şimdi belli bir pozisyonda hangi tarafın daha güçlü olduğunu anlamaya çalışalım. Bunu başarmanın en basit yolu, aşağıdaki tabloyu kullanarak tahtadaki parçaların göreceli gücünü saymaktır:
Değerlendirme fonksiyonuyla, en yüksek değerlendirmeyi veren hareketi seçen bir algoritma oluşturabiliyoruz:
Tek somut gelişme, algoritmamızın artık mümkünse bir parça yakalayacak olmasıdır.
3. Adım: Minimax kullanarak ağacı arayın
Daha sonra, algoritmanın en iyi hareketi seçebileceği bir arama ağacı oluşturacağız. Bu, Minimax algoritması kullanılarak yapılır.
Bu algoritmada, tüm olası hareketlerin özyinelemeli ağacı belirli bir derinliğe kadar araştırılır ve konum, ağacın “yaprakları” nda değerlendirilir.
Bundan sonra, taşınacak beyaz veya siyah olmasına bağlı olarak, çocuğun en küçük veya en büyük değerini üst düğüme döndürürüz. (Yani, her seviyede sonucu en aza indirmeye veya en üst düzeye çıkarmaya çalışıyoruz.)
Minimax uygulandığında, algoritmamız satrancın bazı temel taktiklerini anlamaya başlıyor:
Minimax algoritmasının etkinliği büyük ölçüde elde edebileceğimiz arama derinliğine dayanmaktadır. Bu, bir sonraki adımda geliştireceğimiz bir şeydir.
Adım 4: Alfa-beta budama
Alfa-beta budama, arama ağacındaki bazı dalları göz ardı etmemizi sağlayan minimax algoritmasına yönelik bir optimizasyon yöntemidir. Bu, aynı kaynakları kullanırken minimax arama ağacını çok daha derinlemesine değerlendirmemize yardımcı olur.
Alfa-beta budaması, daha önce keşfedilen bir hareketten daha kötü bir duruma yol açan bir hareket bulursak, arama ağacının bir bölümünü değerlendirmeyi bırakabileceğimiz duruma dayanır.
Alfa-beta budama, minimax algoritmasının sonucunu etkilemez – sadece daha hızlı hale getirir.
Alfa-beta algoritması, ilk önce iyi hareketlere yol açan yolları ziyaret edersek daha verimlidir.
Alfa-beta ile, aşağıdaki örnekte gösterildiği gibi minimax algoritmasında önemli bir artış elde ediyoruz:
Satranç yapay zekası alfa-beta geliştirilmiş sürümünü denemek için bu bağlantıyı takip edin.
Adım 5: Geliştirilmiş değerlendirme işlevi
İlk değerlendirme fonksiyonu oldukça naiftir, çünkü sadece tahtada bulunan malzemeyi sayarız. Bunu geliştirmek için, değerlendirmeye parçaların konumunu dikkate alan bir faktör ekliyoruz. Örneğin, tahtanın ortasındaki bir şövalye, tahtanın kenarındaki bir şövalyeden daha iyidir (çünkü daha fazla seçeneğe sahiptir ve bu nedenle daha aktiftir).
Orijinal olarak satranç-programlama-wiki’de açıklanan parça kare tabloların biraz ayarlanmış bir sürümünü kullanacağız.
Aşağıdaki iyileştirmeyle, en azından sıradan bir oyuncunun bakış açısından, bazı “iyi” satranç oynayan bir algoritma elde etmeye başlıyoruz:
Sonuç
Basit bir satranç yapay zekası için bile gücü, aptalca hatalar yapmamasıdır. Bununla birlikte, hala stratejik anlayıştan yoksundur.
Burada tanıttığım yöntemlerle, temel satranç oynayabilen bir satranç oynama algoritması programlayabildik. Son algoritmanın “yapay zeka kısmı” (hareket üretimi hariç) sadece 200 satır koddur, yani temel kavramların uygulanması oldukça basittir. Chessus satranç yapay zekası algoritmamıza buradan ulaşabilirsiniz.
Algoritmada yapabileceğimiz bazı diğer iyileştirmeler örneğin şunlar olabilir:
- Taşıma sırası
- Daha hızlı hareket oluşturma
- ve oyun sonuna özel değerlendirme.
Daha fazla bilgi edinmek istiyorsanız, satranç programlama wiki’sine göz atın. Burada tanıttığım bu temel kavramların ötesini keşfetmek için yararlı bir kaynaktır.
Okuduğunuz için teşekkürler!