Kaba kuvvetli aramayı KULLANMAYAN bir satranç motoru var mı?


10

Duyduğum her satranç motoru (Wikipedia'da listelenen her şey dahil), hareket etmeye karar vermek için bir değerlendirme işleviyle (minmax algoritması) kaba kuvvetli arama kullanıyor.

Çoğu insan oyuna bu şekilde yaklaşmaz, bunun yerine genel örüntü tanıma kullanır, bu nedenle prensip olarak bilgisayarların da aynısını yapması mümkün olacaktır.

Hareketlerini bulmak için kaba kuvvet yaklaşımına dayanmayan bir satranç motoru var mı?


9
Magnus Carlsen. ;)
Wes

3
Modern motorların kaba kuvvet olmadığını söyleyen insanlara gelince, hareketleri budanırlar ... Bir satranç motoru on milyonlarca pozisyonu değerlendirdiğinde, birisinin çizebileceği kaşlara bakılmaksızın kaba kuvvet kullandığını düşünüyorum. algoritma üzerinde.
Tony Ennis

Modern motorlar hareketleri kaçırabilir, örn. getirisi oldukça derin olmayan kurbanlar. Bence bu muhtemelen budamaları ve derinlemesine incelenmemeleri.
Passerby

Yanıtlar:


6

1980'lerde insanlar gibi aday hareketlerini seçecek bilgi tabanlarına sahip satranç motorları yazma girişimleri vardı, ancak başarısız oldular. Sorun şu ki, insan kalıbı eşleşmesinin kelimelere dökülmesi zor olduğundan bilgi tabanı için kurallar oluşturmak son derece zordu.

Aday hareketleri seçmek için bir sinir ağını eğitmek umut verici bir araştırma çizgisi gibi görünüyor. Burada ve burada iki ilgili makale olabilir. (FWIW, bu benim Comp Sci alanım değil)



3

@ Ian_Bush'ın Zürafa hakkındaki cevabına ayrıntılar eklemek istiyorum.

@ Ian_Bush'ın cevabında, Zürafa'nın kaba kuvvet hesaplaması kullanmadığı belirtildi. Bu doğru değil , çünkü Zürafa hala bir alfa-beta (nega-max) motoru. Sadece standart bir motora fark değerlendirme fonksiyonu derin öğrenme tarafından otomatik ayarlı olmasıdır. Bu nedenle, motor kendi başına nasıl oynanacağını öğrenir.

Geleneksel olarak, motor programcısı bir motordaki parametreleri kendi kendine ayarlar. Kendim çok şey yaptım. Örneğin, bir fil ve şövalyeye ne kadar ağırlık vermelisiniz? 3.0? 3.1? 3.2? Söylemesi zor.

Zürafa soruna çok daha akıllıca yaklaşıyor. Bazı başlangıç ​​değerleriyle başlar. Motor, bu değerleri ayarlamak için gradyan çıkış algoritmasını kullanır. Bir kraliçenin kodda ne kadar ağırlık olması gerektiğini açıkça kodlamak zorunda değiliz. "Öğrenme" demek istediğimiz budur. Bu, motorun arama yapmadan satranç oynayabileceği anlamına gelmez .

EDIT : Zürafa, ağaç düğümlerini ana varyasyona düşme olasılığı olarak modeller. Ayrıntılar için kağıdı kontrol edin. Ben şahsen bu yaklaşıma inanmıyorum ve makale bunun ne kadar yararlı olduğuna dair çok az kanıt gösteriyor.


Zürafanın Stockish eval'ü hedef olarak kullandığı doğru mu? Eğer öyleyse, kendi başına "satranç öğrenmez", sadece tahta özelliklerinin üstünde bir nnet kullanarak stockish eval için bir yaklaşım öğrenir.
Fernando

@Fernando Zürafa'nın Stockish ile ilgisi yok, inanıyorum.
SmallChess

Makalenin tamamını okuyacağım, ancak 18. sayfada şöyle diyor: We evaluated board representations by training neural networks to predict the output of Stock- fish’s evaluation function in a supervised fashion, given 5 million positions as input, in the board representation under evaluation. Yani, bu kendi kendine oynayan IMO tarafından öğrenilmiyor.
Fernando

1

Sezgisel tabanlı arama ve kaba-kuvvet olarak yaklaşımı değerlendirebilirseniz, tartışmalı bir tür. Günümüzde en üst düzey satranç motorlarının çoğu, hareketleri budamak için bir pozisyonu ve kural tabanlı bir arama fonksiyonunu değerlendirmek için kurallara dayalı bir yaklaşım izler.

Bunun "küresel optimal" hareketi seçeceği garanti edilmez, ancak bu hareketler amaç için yeterince iyidir. Bu anlamda çoğu satranç motoru, küresel optimum ve yaklaşık bir yaklaşım üzerinde bir yaklaşım kullanıyor.

Bugüne kadar, pek çok satranç motoru, en azından ucuz donanımda değil, farklı bir yaklaşım kullanarak en üst düzeyde başarılı olamıyoruz.


0

Claude Shannon, satranç motorları oluşturmak için iki tür algoritma önerdi. "A tipi" bir motor, sonlu bir derinliğe kadar tüm olası hareketleri inceler, ağacı minimuma indirir ve ardından minimoks ağaçtan (kaba kuvvet olarak da bilinir) en yüksek değerlendirmeyle hareketi oynatır. B tipi motorlar, aramalarını bazı kriterlere göre sadece olası hareketlerin bir alt kümesiyle sınırlar. B Tipi'ni daha ümit verici olarak tercih ettiğine inandım.

1970'lerde yaratılan motorlar (örn. Hitech, Kaissa), budama veya sadece alfa-beta olmadan saf kaba kuvvet olma eğilimindeydi, ancak insanlar kısa süre sonra güçlü olması muhtemel olmayan hareket ağaçlarını ve çizgileri budamanın değerini gördüler . Neredeyse tüm yeni motorlar açıkça zayıf olan (alfa-beta) çizgi ağacını budamakta ve çoğu motor çeşitli ileri budama türlerini de kullanmaktadır (boşluk, geç hareket azaltma, boş hareket, jilet). Bu anlamda, artık saf kaba kuvvet kullanan pek çok motor yok.

1970'lerde Botvinnik, Pioneer adlı bir motor üzerinde çalışıyordu ve değerlendirme rehberli olacak saldırı yolları kavramı etrafında tasarlandı. Tam bir satranç oyunu oynayabileceği noktaya asla ulaşamadı.

1990'larda Chris Wittington, daha fazla satranç bilgisini kullanmaktan bahsetti ve satranç sistemi Tal adlı bir zaman programı için oldukça güçlü bir program yarattı.

Kasparov, Anand ve Tord Romstad, Hiarcs'ın gücü hızlı bir aramadan gelen en iyi motorların çoğundan daha ayrıntılı bir değerlendirmeye sahip olduğunu belirtti.


-2

Temelde hepsi!

Satranç motorları gerçekten sadece kaba kuvvet kullanırlar:

  • söyledi
  • pozisyonları analiz ediyorlar (problem çözme)
  • Şah mat aramak (problem çözme, karşı oynamadığınızda değil, "arkadaşı N'de bul" tarzı problemler)

Aksi takdirde "seçici bir arama" yaparlar, bu belirli bir tahta düzeni için tüm olası hareketleri göz önünde bulundurur, ancak sadece bir avuç dolusunu keşfeder. Bir motor, iki hareketi çok benzer şekilde derecelendirirse (birden fazla güçlü hareket) veya sevdiği bir hareketi bulamıyorsa (güçlü hareketler olmaz) kaba kuvvete geçebilir.

Ayrıca son savunma hattı olarak kaba kuvvete eğilimlidirler, eğer bir şah mat şansının geldiğini görebilir ve gerçekten zor çizmek isteyecek ve bir çıkış yolu bulamayacak ("Horizon etkisi" "motorlarla ilgili bir problem, kraliçesini kaybedeceğini varsayalım ve sadece 4 oyunun derinliklerine inmek için kapatıldı; piyon ticareti yapabilir ve kraliçenin kaybını 4 hamle için erteleyebilirse, kraliçeyi kurtardığını düşünecektir. Bu süreçte en az 1 piyon kaybedecek (bir sonraki hamle ufku yaklaşmadan önce getirdiği için) ve kraliçeyi kurtarmaya verdiği ağırlık, savunmanın feda ettiği anlamına gelebilir, çünkü ölüm ufkun üzerine çıkarsa hiçbir şey yapmaz) .

Seçici arama çok kullanışlı olmadığında da kaba kuvvet uygular. İşte bu yüzden motorlar 3 parça kaldığında daha uzun sürer. Seçim algoritması bir hareketi derecelendiremediği için kaba kuvvet uygulamak zorundalar. Seçim algoritması orta oyun sırasında harika çünkü "Oohh, piyonla bunu yapmak [ne olursa olsun] engeller ve [ne olursa olsun] ve [ne olursa olsun] saldırmaktan daha az sayıda savunacağım yedekler” gibi olabilir - örneğin .

Tahtanın ortasında bir kral varsa, 8 hamle vardır, seçici arama "Bunların hiçbiri yararlı bir şey yapmaz, söyleyemem" gibi olacaktır.

Seçmeli aramayı iki bölüme sahip olarak düşünebilirsiniz, taktik hareketleri deneyecek ve tespit edeceği anlamında taktiktir, genellikle herhangi bir stratejinin parçası olmayan bir kraliçe değmez çünkü genellikle ilgili parçaların ağırlığını göz ardı eder. onun için hayati bir piyondan daha fazlası. Ayrıca, bir savunmayı destekleyen ve daha sonra potansiyel saldırılara açılan hareketleri keşfedeceği için stratejiktir.

Ardından motor aynısını sizin bakış açınızdan, ileri geri, ileri geri yapar.

Transpozisyon tablosu olarak adlandırılan bir şey, düşündüğü şeylerin büyük bir listesidir, bu şekilde zaten yapmış olduğu bir şeyi düşünürse, bunu bilir ve yeniden değerlendirmek zorunda değildir.

UNLESS (selective :)) oraya farklı bir yol katıyor ya da daha fazlasını keşfetmek istiyor. Örneğin, kalenizin yaklaşan bir saldırı için gerekli olduğunu keşfettiğini varsayalım, motor bunu keşfettiğinde bir hattı yeniden değerlendirebilir. O kaleye koyduğu bir önceki ağırlık (örneğin 5 puan, sizin için ne kadar önemli olduğu) düşük bir tahmin olabilir.

Seçici arama, düşman topraklarına doğru hareket eden bir piskoposun hareket seçiciye düşünüldüğü gibi, geri çekilebilir, kolayca alınabilmesi önemli değildir. Diyelim ki stratejik olarak bunun mükemmel bir hamle olduğunu keşfediyor! Daha sonra o piskoposu oraya götürmek için o kareyi korumanın bir yolunu bulmaya çalışabilir. Bunun için bir piyon içerdiğini varsayalım.

Kaba kuvvet yöntemi, piyon hareketini ve (kaba kuvvetle) piskopos hareketini de içeren çizgiyi ve tahta pozisyonunu (seçici aramanın kendisi) derecelendiren aynı şeyleri "bu iyi" diyecektir. yüksek oranda varyasyon, her ikisi de bulabilirsiniz.

Kaba kuvvet yöntemini kullanarak bir pozisyonu derecelendirmek çok zor, bu yüzden seçici arama bu kadar iyi çalışıyor.

Başlangıç ​​pozisyonundan gelen kaba-kuvvet, bir piskopos tarafından kapsanan bir kraliçe f7 içeren ünlü eş-4'ü bulabilir ve eğer o kadar yüksek bir orana sahip olsaydı (BİR KONTROL ETTİ! İŞ YAPTIK! OYNA!) yanlış olur çünkü siyah belli ki karşı koyacaktır. Seçici arama bir konumu (daha fazla değerlendirme için) derecelendirir, çünkü iyi görünmektedir . Bu, cevabınızı düşünürken sizin için neyin iyi olacağına karar verebileceği anlamına gelir ....

Bu nedenle, seçici aramanın bir şeyleri derecelendirmek için kullandığı şeyler zaten kaba kuvvet tarafından kullanılıyor çünkü "bu hareketi içeren bir şah-mat buldum" hareketin iyi olduğunu söylemek için yeterli değil.

Bu yüzden kaba kuvvet satranç motorları tarafından seçilen ilk hamle nedir (Beyaz)?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.