Deep Blue'dan bu yana motorlar nasıl gelişti?


17

Bilgisayar satranç motorları Deep Blue 1997'de Kasparov'u yendikten sonra daha iyi hale geldi.

Algoritmalar iyileşti mi, yoksa daha hızlı donanım vb. Sayesinde aynı algoritmaların daha hızlı çalışmasından dolayı iyileştirmeler mi yapıldı?

Birincisi, bu algoritmik gelişmeler herkese açık mı?

Ve eğer öyleyse, iyileştirmeler nelerdi? Onlar hakkında nereden okuyabilirim?



Nasıl ? Dramatik.
Evargalo

Yanıtlar:


8

Belki de bilgisayar satrancı için ayrılmış bir forum olan TalkChess'e bir göz atabilirsiniz . Son zamanlarda sizin için ilginç olabilecek bir konu buldum: 30 yılda 7-8 yıllık dört aralıkta ilerleme

Aynı donanımda (eski) en iyi motorlar arasında birkaç eşleşme oynanır . Test, son yıllarda (2002-2017), kazancın esas olarak yazılım iyileştirmeleriyle elde edildiğini göstermektedir. Testte, Stockish (2017) RobboLito'ya (2009) karşı 94/100 puan alırken, RobboLito da Shredder'ı (2002) 92/100 ile ezdi.

Önemli bir not: eski motorlarda paralel hesaplama uygulanmadığından, test tek bir çekirdek üzerinde gerçekleştirildi. Sonuç olarak, paralel makinelerden elde edilen donanım kazancı ölçülmez. Öte yandan, paralel bilgi işlemin de bir yazılım kazancı olduğunu iddia edebilirsiniz: arama algoritması için verimli ve iyi ölçeklendirilmiş bir paralelleştirme tasarlamak ve uygulamak kolay değildir.

Crafty algoritmik gelişmeler kamu böylece motor, açık kaynak. Https://chessprogramming.wikispaces.com adresinde birçok doküman bulunabilir.


Bu iddiasını cevaplıyor. Bir dahaki sefere soruyu cevaplamaya çalışın.
Fred Knight

1
Bu soruya cevap verdiğime inanıyorum: kazanç esas olarak algoritma iyileştirmeleri ile elde edildi. Ayrıca, bu iddiayı destekleyen veriler gösterdim (bağlantıya bakın) ve olası bir eksikliğe (paralelleme ölçülmedi) işaret ettim.
Maxwell86

3

Deep Blue için kullanılan algoritma için konuşamam, ancak satranç programlamasındaki gelişmeleri açıklamaya çalışacağım. Hız en büyük gelişmedir. Deep Blue, çok işlemcili özel bilgisayarlar kullandı, bu yüzden bir karşılaştırma gerçekten mümkün değil.

https://chessprogramming.wikispaces.com/ harika bir kaynak, ancak gezinmek zor.

Bir satranç motorunu iyileştirmek için ayarlanan 3 ana işlev vardır: değerlendirme, hareket oluşturma ve arama işlevleri.

Kurallarda birçok istisna olduğu için değerlendirme programlaması en zor olandır. Sabit disk alanı daha ucuz hale geldikçe, eval işlevi daha fazla özel durumun değerlendirilmesini sağlar.

Hareket oluşturma ve hareket ettirmeyle birlikte hareket üretimi, çok fazla bellek tüketir, çünkü birçok kez önceden oluşturulması gerekir. En yaygın nesil işlevler posta kutusu, bitboard, 0x88, 8x8, genişletilmiş kartlar (10x10, 10x12) ve önceden belirlenmiş bir hareket dizisi / tablodur (* Dizinlenmiş bir hareket tablosu kullanıyorum). Mevcut görüş, bitboard'ların daha hızlı olduğu ve sihirli bitboard'ların kullanılması bunu% 30'a kadar hızlandırdığıdır. Havalı satranç motorunun profesörü ve yaratıcısı Dr. Robert Hyatt, önemli bir hız artışı olmadığını iddia ediyor.

İlk arama işlevi ilkel min-max işlevleridir. Temel olarak, hareket etmek ve rakibin puanını en aza indirmek için tarafın puanını en üst düzeye çıkarmaya çalıştınız. Alfa-Beta ilk gelişmeydi. Transpozisyon tablosu, kesme değerleri, aspirasyon pencereleri ve geçmiş buluşsal yöntemleriyle aranan hareket sayısını azalttılar. Bunlar önce derinlemesine aramalardır. Ayrıca, diğer hamleleri araştırmanın sonuçsuz olacağına dair en derin ümitle “en iyi” hamleleri araştırmaya çalışan iç yinelemeli derinleştirme araştırması da vardır.

NOT: Dizin tablom. GNUChess ve Jester, hareketlerini oluşturmak için bir dizin dizisi kullanırlar. Diziyi olası hareketlerle doldurarak motoru başlatırlar. Altı parçayı alın ve her kareden elde edilebilen yasal hareketleri hesaplayın. Her parçanın bir [64] [8] dizisi vardı. Bu fikri aldım ve iki dizine ve bir tabloya sıkıştırdım. Tabloda 16 hareketin mümkün olup olmadığını söyleyen bir değer bulunur, bir dizin hareketin ofsetini tutar ve diğeri maskeyi tutar.

ofset [] = {-8, -1, 1, 8, -9, -7, 7, 9, -17, -15, -10, -6, 6, 10, 15, 17};

maske [] = {1, 2, 4, 8, 16, 32, 64, 128, 256, ...};

Daha sonra kayma hareketinin oluşturulması, hareket masasına karşı izin verilen ofsetlerinde maskesinin geçerliliğini aramak kadar kolaydır.


7
Cevaplara cevap vermemeye çalışıyorum, ama bu sadece .... Alfa-beta ve bitboard'lar Deep Blue'dan önce UZUN icat edildi. Ayrıca, yönetim kurulu değerlendirmesinin herhangi bir aklı motorunda HD'ye erişmediğinden eminim (gecikme BÜYÜK). Dördüncüsü, RAM boyutunun normal alfa-beta arama uygulamanızda gerçek bir fark yarattığından şüpheliyim.
MaxB

Tartıştığınız bazı kavramlara belki de köprüler ekleyebilir misiniz? Kavramla ilgilenen, ancak terminolojiye aşina olmayan biri olarak takip etmek zor, çünkü bir bitboard'un ne olduğunu ya da Crafty Chess motorunu bilmiyorum.
Thunderforge

Derin Mavi ile karşılaştırmama konusunda net olduğumu düşündüm, ama kısa bir tarih veriyordum. Bahsettiğim sabit disk programın kendisidir. Her zaman yeni bir değerlendirme konseptinin bir satranç motoruna dahil edilmesi, daha fazla kod ve dolayısıyla daha fazla HD alanı gerektirir.
Fred Knight

@Thunderforge, verdiğim tek link, satranç programlamasıyla uğraşmak isteyebileceğiniz her yönü açıklıyor, ancak gezinmenin zor olduğunu itiraf ediyorum. Başkalarının kaynak kodlarını okuyarak öğrendim, ama en çok yorumlanan, Dr. Hyatt'ın Crafty motorudur. Alan sınırlamaları ve platformlar ve derleyiciler arasındaki farklılıklar nedeniyle çok kapsamlı olmamayı tercih ediyorum. Eğer wiki satranç sayfasını okuduktan sonra hala kafanız karıştıysa, soruyu sorun ve eminim birçoğu daha iyi bir cevap verecektir.
Fred Knight

1
Every time that a new eval concept in included into a chess engine, more code, and therefore more HD space is required.Kart değerlendirme işlevleri genellikle CPU önbelleğine sığacak şekilde tasarlanmıştır. CPU önbelleği << RAM << HD. HD boyutu fark etmez.
MaxB

2

Algoritmalar düzeldi mi?

Açıkçası, evet biraz.

ya da daha hızlı donanım ve yazılım sayesinde aynı algoritmalar daha hızlı çalıştığından dolayı iyileştirmeler yapıldı mı?

Minör nit: Algoritmalar daha iyi hale gelirse, yazılım daha iyi olur, bu yüzden "veya" yoktur.

Moore Yasası bize işlemci hızının yaklaşık 18 ayda bir iki katına çıkacağını söylüyor. Bu, 20 yılda yaklaşık iki katına çıktığı anlamına geliyor. Bu, modern işlemcileri bölgede 8.000 kat daha hızlı hale getirir. Bu nedenle, motor performansındaki en büyük gelişme, daha hızlı donanımdan kaynaklanmaktadır.

Birincisi, bu algoritmik gelişmeler herkese açık mı?

Ve eğer öyleyse, iyileştirmeler nelerdi? Onlar hakkında nereden okuyabilirim?

Birincisi değil, ikincisiydi. Bununla birlikte, iyileştirmeler çoğunlukla açık kaynaklıdır ve Stockish gibi motorlar için kaynaklar indirilerek serbestçe görülebilir . Belki de genel Stockish indirme bağlantısını vermeye değer çünkü belirli bir kaynak kodu bağlantısı 9 sürümü çıktığında muhtemelen sona erecek.


2
That means it has doubled roughly 13 times in 20 years.Sanırım Moore Yasasını yanlış söylüyorsun. İşlemci hızı hakkında hiçbir şey söylemiyor. Aslında, bir süredir iki katına çıkmadı.
MaxB

hardware and softwareAlgoritmanın uygulanmasında olduğu gibi yazılım demek istedim (ASM vs C ++), ama bunun nasıl kafa karıştırıcı olduğunu görebiliyorum. Sabit.
MaxB

1
Moore yasası doğrudur, ancak "önümüzdeki on yıl" ifadesini içermesi gerekir. Bu 1975'te olurdu ve doğruydu.
Fred Knight

-1 çünkü cevap yanlış - aynı donanımda, mevcut motorlar hala eski motorları eziyor.
Allure

0

Her şey algoritmalarla ilgili.

Bir insan satranç oyuncusu almak o sırada dünyanın en güçlü bilgisayarlarından birini aldı. Bu kaba kuvvet hesaplama yaklaşımı, Deep Blue'nun altı ila sekiz hamle ileriye bakmasına izin verdi. Yakından yapılan bir yarışmada, makine sonunda Kasparov'u 3 1/2 oyunla 2 1/2'ye yendi.

Altı yıl sonra Kasparov başka bir insan ve makine yarışmasına katıldı. Bu kez Deep Blue'nun halefi Deep Junior'a karşı oynadı. Sonuç, üç oyunun hepsinde çizilmiş bir seri oldu. En büyük fark Deep Junior'ın Deep Blue'nun hesaplama gücünün yaklaşık yüzde biri olan bir makinede çalışmasıydı. Satranç oyun algoritmaları, yüzlerce daha az bilgi işlem gücüyle neredeyse aynı sonuca ulaşma noktasına kadar gelişmiştir.


4
Satranç'a hoş geldiniz! Cevabınızın ana kısmını bir alıntı gibi yazdınız; lütfen bir kaynak sağlayabilir misiniz?
Glorfindel

0

Feragatname: bir uzman değil.

Algoritmalar daha da iyileşti ve 1995'te çalışan en iyi motorlar (Deep Blue'nun 1999 olduğunu hatırlayın) donanım Kasparov'u kolayca yenecek. Anladığım kadarıyla, algoritmaların iki yönü vardır:

Ara . Örneğin kraliçenizi kraliçemle birlikte götürürsem, bir insan rakip otomatik olarak yeniden yakalamaya bakacaktır. Ancak bir bilgisayar için QxQ'ya olası her yanıtı değerlendirir. Hemen hemen her zaman, bu işlem gücü israfı. İyi bir arama algoritması, bu alakasız oldukları için tüm bu "dalları" keser.

Standart arama algoritması alfa-beta budamadır ve en eski satranç bilgisayarlarında kullanılmıştır. Deep Blue'nun alfa-beta budama kullanıp kullanmadığını bilmiyorum, ancak modern motorlar kullanmıyor. Sonuç olarak aramaları "güvensiz" - örneğin, kraliçeyi yeniden ele geçirmekten başka bir hamle oyunu kazanırdı. Bununla birlikte, bunun olması nadirdir ve karşılığında derinliklerini çok yükseğe iterler. ("Derinlik", motorun ne kadar derin arama yaptığına ilişkin teknik bir terimdir, bu nedenle, örneğin 30 derinliğini araştıran bir motorun, yalnızca 20 derinliğini arayan ve diğer tüm şeylerin eşit olduğu bir motoru yenmesi muhtemeldir).

Değerlendirme . Bu motor kodunun diğer ucu. Belirli bir konum göz önüne alındığında, beyaz, siyah veya eşit için daha mı iyi? Bu, her türlü işlevi içerebilir, örn.

  • Bir tarafta ekstra malzeme / boşluk varsa, değerlendirmek için bir bonus verin.
  • Beyazın bir piyon tarafından desteklenen gelişmiş bir şövalyesi varsa, beyaza değerlendirme için bir bonus verin.
  • Siyahın kralı lekelenirse, beyaza değerlendirme için bir bonus verin.
  • Beyazın 7. sırada bir kale varsa, beyaza değerlendirme için bir bonus verin.
  • Bu bir oyunsonu ise (ve pozisyonun oyunsonu olup olmadığına karar vermek için algoritmalar varsa) ve her iki tarafın da karşıt renk piskoposları varsa, değerlendirmek için bir ceza verin (yani 0.00'a doğru itin).

Günümüz motorları, pozisyonları Deep Blue'dan çok daha iyi değerlendiriyor.

Algoritmaların herkese açık olup olmadığına gelince, Stockish şu anda dünyanın en güçlü motoru ve açık kaynak. Kodu Github'dan kendiniz indirebilirsiniz .

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.