Satranç motorları nasıl “düşünür”?


28

Bilmek istediğim şey motorların hareketleri bulmak için nasıl programlandığı. İlk önce yakalama ve çek gibi en zorlayıcı çizgileri hesapladıklarından eminim. Peki ya ince, derin pozisyon hareketleri? Onları çok hızlı buluyorlar gibi görünüyorlar (Genel olarak konuşuyorlar. Tabii ki şimdi ve sonra bu tür hareketleri özlüyorlar). Olduğu gibi, sessiz hareketler / konumsal fikirler aramak için nasıl programlanırlar? Her hareketi sadece kaba kestiremezler, çünkü bu çok uzun sürdü, bu yüzden en hızlı şekilde en iyi hamlelere ulaşmaları için akıllıca bir yol olmalı. Bunu bilmekle ilgileniyorum çünkü oyuncuların gerçek dünyada tahta üzerinde düşünmelerine yardımcı olacağını düşünüyorum.


Satranç motorları saniyede birkaç milyon pozisyona bakarlar, bu yüzden birkaç hamle derinleşene kadar hepsine bakabilirler.
RemcoGerlich

2
Bu harika bir soru, cevapları gerçekten çok beğendim.
Travis J

Temel olarak ileride bir arama algoritmasıyla (örneğin, minimax) araştırırlar ve önceden programlanmış sezgisel tarama kullanarak konumlarını değerlendirirler. Bazı yeni motorlar (örneğin, AlphaZero) kendileri oynayarak kendi değerlendirme yöntemlerini geliştirmelerine rağmen.
Ataletsizlik Cehalet

Yanıtlar:


22

Genel olarak satranç motorları karar ağacı kullanırlar. Ağacın kökü mevcut pozisyondur ve yasal bir hamle yaparak yapılabilecek her pozisyon için bir alt düğüme sahiptir. Bu düğümlerin her biri, onlardan yasal bir hamle yaparak ulaşılabilecek pozisyonlar için bir alt düğüme sahiptir. Motor, ağacı yetenekleri ve "düşünmesine" izin verdiği zamanla tanımlanan bir derinliğe iter. Birden fazla şekilde ulaşılabilen konumlara, sadece bir kereden fazla düşünülmeleri gerekmeyecek şekilde çapraz referans verilmiştir. Ağaç oluşturulduktan sonra, bilgisayar ağacın son konumlarını analiz etmek için bir dizi ağırlıklı kural kullanır ve istenmeyen ya da rakibin ulaşmasını engelleyebilecek olanları kaldırmaya başlar. Ağaç yalnızca bir hareket kalana ve bilgisayar bu hareketi yapana kadar bu şekilde kesilir.

http://www.chess.com/blog/zaifrun , nasıl çalıştıklarına daha derinlemesine bakmak istiyorsanız bir satranç motoru oluşturmaya ilişkin seri veya makaleler içerir.


Güzel cevap, yani 30 derinliğini gördüğünüzde, bu motorun 30 düğümü derinlemesine aradığı anlamına mı geliyor? Ayrıca, Ply ile ne anlama geliyor?
xaisoft

Ply daha fazla araştırma yapmadan neyi temsil ettiğinden emin değilim, kısaltmalar konusunda hiçbir zaman iyi olmadım. Aksine derinlik kaç düğümün derin olduğunu, her düğümün yarım bir hareket olacağını ya da derin hareketlerin programlayıcıya bağlı olabileceğini gösterir. Bununla birlikte, konvansiyonun derin hareketlerin sayısı olacağını düşünüyorum.
Edward Goodson

5
Kat, hamlenin yarısıdır. Satrançta bir hamle, beyaz + siyahla yapacağınız takdirde tam bir settir. Bir kat, bunun yarısı kadar, sadece bir renk.
ErebusBat

21

Oldukça karmaşık bir soru soruyorsunuz, ancak temel konulara geri dönmek güzel. Dikkate alınması gereken birkaç kavram var:

Değerlendirme

Bir (gerçek) oyuncuya bir pozisyon gösterilir ve "bu oyunu kim kazanıyor?" Diye sorulursa, nasıl karar verecekler? Büyük olasılıkla, maddi farklılıklar, parçaların geliştirilme dereceleri veya "iyi" konumlandırılmış olmaları, iki kat / izole / bağlanmış / geçen piyonlar, (kontrollü) açık dosyalar gibi birkaç temel şeyi kontrol edeceklerdir. tahta piyonlar.

Şimdi, eğer zorunda olsaydınız, yukarıdakilere dayanarak bir pozisyon puanı hesaplamak için sistematik bir yol bulabilirdiniz. Örneğin, bir piyonun 1 puan değerine ve geçen bir piyonun 0,3 puan değerinde olduğuna karar verebilirsiniz. İzole edilmiş veya iki katına çıkmış piyonlar biraz daha az değere sahip olabilir, vb. Her şeyi eklerseniz, eldeki acil durum için tahmini bir değer elde edersiniz.

Bu değerlendirme olarak bilinir ve temel olarak tüm satranç programlarının pozisyonları değerlendirme yolu vardır (tipik olarak çok zayıf olan yenilik AI satranç motorlarını görmezden gelin).

Peki ya ince, derin pozisyon hareketleri?

Konum değerlendirmesinin yüzeyini ancak zorlukla çizdik. Bir değerlendirme işlevinin gerçek uygulaması, saniyede daha fazla pozisyonun (kaba bir şekilde de olsa) değerlendirilmesine izin vermek için basit veya daha karmaşık olabilir; bu, daha az güven ile değerlendirilmiş daha az pozisyona yol açabilir. Değerlendirme işlevinin yüzlerce, hatta binlerce ayrı bilgi parçasını dikkate alması olağandışı değildir.

Arama

Özellikle, çoğu gerçek oyuncunun hemen düşüneceği bir şey bırakmıştım - oyunu hemen iki tarafa da kazanmanın bir yolu var mı? Herhangi bir arkadaş veya "asılı" adet görünür mü? Bunu önemsizleştirmek kolay olsa da, önemsiz olan herhangi bir şey.

Bir oyuncunun bir kombinasyonda tam güven duyması ne anlama gelir ? Sonunda, tüm seçenekleri hesaplamaktan aşağı kaynar. Gerçek oyuncular genellikle bunu yapmazlar (önemsiz veya çok zorlanan eşler hariç), çoğu zaman sadece bir avuç seçenek düşüneceğiz ve “yapıcı olmayan” görünen ya da açıkça kayba yol açan diğerlerini göz ardı edeceğiz. . Bu hesaplama sırasında sık sık hatalar yaparız, örneğin, hareket sırasındaki bir değişikliğin tehditlerin buharlaşmasına neden olduğunu vb. Farkedebiliriz. Mesele, bir kombinasyondan tamamen emin olmak için, aslında her bir varsayımı varsaymak için, sonuç olarak tüm yollarını hesaplamanız gerekir. oyuncu sadece kendilerine mümkün olan en iyi hamleyi yapacaktır (buna "min / max" denir).

Şimdi, satrançların çok daha geniş bir arama alanına sahip olduğu düşünülürse (bu, "gelecekteki tüm olası hareketler" denen şeydir), bir bilgisayarın hesaplaması için elverişli olandan daha fazla taviz verilmelidir. Tıpkı insanlar gibi, bilgisayarlar da bütün düşünceleri belli kriterlere göre göz ardı etmeye karar verebilir. Bu buluşsal yöntem olarak bilinir . Ancak, zorla uygularsanız, bir kombinasyondan gerçekten emin olabileceğinize rağmen, karmaşık bir değerlendirme işlevinin, tehditlerin varlığını sık sık tespit edebileceğini (örneğin, çatalları, şiş fırsatlarını vb. Bu şekilde arama yapmak için yönlendirebiliriz) dikkat çekicidir. ).

Sonunda, bilgisayarlar son derece hızlı olmasına rağmen, bu kadar derin hesaplamalarını sağlayan buluşsal yöntemdir. Bununla birlikte, modern motorların ne kadar derin hesapladığına şaşırmış olabilirsiniz, hızlı oyunlarda bile, genellikle 3 hareketin ötesinde.

Sonuç / hepsini birleştirme

Yani, özetlemek gerekirse - değerlendirme işlevlerinin içinde yerleşik bir çok istihbarat vardır (yani, ortalama bir insan oyuncudan daha fazla şeyi dikkate alırlar), sezgisel tarama, bilgisayarın muhtemelen iyi sonuçlanmayacağına karar verdiğini düşündüğü düşünceleri ortaya çıkarmasına izin verir. ve bilgisayarlar son derece, son derece hızlı. Onları topla ve yenmek çok zor.


6

Cevaplara katılıyorum.

GM Roman Dzindzichashvili'nin bunun hakkında konuştuğunu hatırlıyorum , Roman'ın laboratuvar videolarından birinde, hangi video olduğunu hatırlamıyorum (eğer biri ayrıntıyı biliyorsa lütfen cevabımı düzenleyin).

Roman, Fritz motorunun geliştiricisinin arkadaşı olduğunu söyledi. Bu yüzden Roman, Fritz'in ne kadar iyi olduğunu görmek için Fritz'i test etti ve geliştirici, Roman'a fritz'in karmaşık kararlar vermesi için (örneğin konumsal avantaj karşılığında malzemeleri feda etmek) programın anlatması gibi parçaların değerini değiştirmek zorunda olduklarını söyledi. Kötü bir piskopos 1 puan, açık köşegen bir piskopos 7 puan, şövalyeler yakın pozisyonlarda 5 puan değerinde ...

Her parça için kesin sayıları bilmiyorum ama bu şekilde çalışıyor ve şimdi motorunuz kötü bir piskoposdan kurban etmekte hiçbir sorun yaşamaz veya her bir parçanın değerini her pozisyonda söylerseniz ne olursa olsun.

DÜZENLE

Ayrıca bkz . Satranç Programlama Wiki .


4

Bilgisayarların yeterince derin görünmesi (25 kat ve daha fazlası) ve her olası hareketi kontrol etmek imkansızdır.

Mümkün kılan, Alpha-beta budama adı verilen tekniktir ; bu, insanlara benzeyen (ancak daha iyi) bilgisayarların yalnızca ümit vaat eden süreçleri takip ettiği anlamına gelir.

Pozisyonları sürekli olarak değerlendirir (bazı önceden kodlanmış kurallara dayanarak, malzemeye, kral güvenliğine, etkinliğe, piyon yapılarına vb. Değer verir) ve onları en iyi pozisyona yönlendiren varyasyonları araştırırlar.

Hala, bu pozisyonların milyonlarca saniyesini değerlendirmek için yeterince verimli bir şekilde nasıl yaptıklarını büyülemeye çok yakın.

Özetle, haklısın, stratejik satranç oynarlarsa bütün hamlelere bakamazlar, ama iyi hamlelere çok hızlı bir şekilde bakabilirler. Sorun hala görebildikleri çok uzun vadeli planlar ve ufuklarla ilgili, ancak bu üzerinde duruluyor (Rybka çok daha yavaş analiz ediyor, ancak çok daha fazla konumsal satranç oynuyor, Houdini 'mekanik kalpte' daha fazla hamle hesaplamada romantik ve daha agresif oynama). Bilgisayarların bile kendi stilleri var!


3

Alfa-beta budaması, sizin için kötü sonuçlanan bir çizgi bulursanız, o adayın hareketine bakmayı bırakıp, başkalarını denemeniz anlamına gelir. Sonuç olarak iyi bir hareketi asla kaçırmayacağınız bir tür geriye dönük budama anlamıdır. İleri budama, aksine, daha çok tahmine dayanır. Gelincik budaması, geç hareket azaltmaları ve traşlama ileri ileri budama türleridir ve bunların hepsi programcının ne tür hareketler düşünülmesi gerektiğine ilişkin hislerine dayanır. Çok fazla ileri budama yapan bir program, eşleşmeye neden olan şaşırtıcı fedakarlıklardan mahrum kalabilir, ancak diğer yandan, çok kötü hamleleri de ortadan kaldırabilir ve böylece lehine olan hareketlere bakarken daha derine gidebilir.

Çoğu motor tüm olasılıkları inceleyerek ilk birkaç hareketi tam derinlikte araştırır. Hiçbir hareket başarısız olmazsa (yani, daha önce düşündüğünüz bir hareketten açıkça daha kötü görünüyorsa), aramayı biraz daha genişletirsiniz. Genel olarak, sakin olmayan bir konuma gelinceye kadar (çek, yakalama, eş tehditleri vb. Olmadan) her bir satırı keşfetmeye devam edersiniz ve ardından değerlendirmenizi yaparsınız. Sessiz hareketler, arama ağacının derinliklerinde olduklarında düşünülemez, ancak oyundaki gerçek konuma geldiğinizde, motor tüm hareketlere sessiz ve keskin bir şekilde bakar. Bunu aslında motor çıkışında görebilirsiniz, bir motor aniden birkaç hareketi geri almadığı bir hareketi tercih ettiğinde.

Motorlar o kadar hızlı hesaplar ki, ilk önce hangi hamle yapılacağını düşünmek onlar için önemli değildir, fakat insanlar için bu kilit bir sorudur. Jonathan Tisdall kitabında, Şimdi Satrançını İyileştir adlı kitabına cevap verir. Saldırı sırasında, ilk önce en şiddetli hamlelere bakmanızı önerir. Savunurken ilk önce en zor hatlara bakarsın. Ayrıca, ilk önce hangisinin hareket edeceğine karar verirken konumsal kurallara (örneğin merkezileşme, koordinasyon) dikkat çekiyor.

İlgili olabilecek diğer kitaplar, her ikisi de keskin pozisyonlarda olası olmayan veya şaşırtıcı hamleleri düşünmenin önemini savunan Emmanuel Neimann'ın Görünmez Satranç Hareketleri ve Charles Hertan'ın Zorlu Satranç Hareketleridir. Hertan, bu tür taktikler için 'bilgisayar gözlerini' geliştirmekten bahsetmektedir.

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.