Alternatywne podejścia do programowania silnika szachowego

14

O ile rozumiem, z grubsza mówiąc, silniki szachowe działają poprzez:

  1. obliczanie wszystkich możliwych wariantów (drzewa gry) do pewnej głębokości
  2. ocena końcowej pozycji na podstawie niektórych kryteriów (materiał, aktywność na sztuki ...)
  3. na podstawie tej oceny wybierz najlepszy ruch

W pełni rozumiem, że aby mieć wydajny silnik, istnieją sposoby przycinania niektórych linii, ograniczania głębokości itp .; ale to nie jest moje pytanie.

Pytanie brzmi: czy są jakieś alternatywne próby zaprogramowania (niekoniecznie silnego, ale też nie losowego) silnika szachowego, który nie jest zgodny z tym schematem?

użytkownik1583209
źródło
Botvinnik próbował przyciąć ruch główny, zlecając komputerowi wyszukanie tylko najlepszego ruchu kandydującego. Nie udało się tego z powodzeniem, a szachy są lepsze.
Fred Knight

Odpowiedzi:

13

W pierwszych latach szachów komputerowych ludzie próbowali uczyć szachów komputerowych w taki sam sposób, jak robią to z ludźmi, wyjaśniając strategiczne koncepcje, takie jak zdrowa struktura pionków lub inicjatywa. Próby te zostały wkrótce porzucone, ponieważ opisana metoda była znacznie bardziej skuteczna.

Ostatnio podjęto kolejną próbę umożliwienia silnikowi samodzielnego uczenia się gry w szachy za pomocą głębokiego uczenia się (prawdopodobnie zachęcony sukcesem Go AI firmy Google ). Zgodnie z artykułem, z którym się powiązałem, były one dość udane i udało im się osiągnąć siłę IM.

Glorfindel
źródło
1
Zgodnie z moim rozumieniem Alpha Go działa dokładnie tak, jak opisano OP, a tylko funkcja eval z (2.) jest oparta na / utworzona przez Deep Learning. Druga odpowiedź wydaje się nieco zgodna.
Hermann Döppes
According to the article I linked to, they were quite successful and managed to reach IM strengthale jeśli przeczytasz oryginalny artykuł, zobaczysz, że artykuł bardzo przesadził z sukcesem.
Salvador Dali
1
@ HermannDöppes Nie, AlphaGo opiera się na wyszukiwaniu drzew Monte-Carlo.
HelloWorld,
3

@Glorfindel nie jest zły, ale podejście do głębokiego uczenia się w szachach jest naprawdę fantazyjnym terminem dostrajania parametrów w programowaniu szachowym.

Głębokie uczenie się pozwala silnikowi szachowemu nauczyć się funkcji oceny, co zwykle jest pisane ręcznie przez programistę. Podczas gry działa jak normalny silnik szachowy.

Inne możliwości:

  • Programowanie szachowe na GPU
  • Wyszukiwanie drzewa Monte-Carlo
Witaj świecie
źródło
Większość twoich odpowiedzi powinna być komentarzem pod [odpowiedzią Glorfindela] ( chess.stackexchange.com/a/16293/2789 . Część, która faktycznie odnosi się do pytania, składa się z zaledwie siedmiu słów, co nie wystarcza na odpowiedź. Również , „Programowanie szachowe na GPU” jest tylko sposobem na zrównoleglenie dowolnego algorytmu, którego w innym przypadku mógłbyś użyć, więc nie sądzę, aby było to „podejście” w tym sensie, że szuka tego pytania, a raczej metoda implementacji.
David Richerby,
-2

Na pewno! JEŚLI naprawdę masz na myśli… „teoretycznie, czy istnieją inne metody kodowania silnika szachowego?” ... Więc tak !!

Na przykład ... można przechowywać kopię każdej możliwej pozycji w szachach (ogromna liczba, wiem) i mieć ocenę dla każdej z nich. Wtedy jego odpowiedź na każde pytanie (tj. „Najlepszy ruch dla białych w pozycji X”), będzie od razu znana po spojrzeniu na tę tablicę. Czy obecny stan sprzętu komputerowego ma taki sens? Nie Ale o to nie prosiłeś.

Nick Lopez
źródło