Esiste un motore di scacchi che NON utilizza la ricerca della forza bruta?


10

Ogni motore di scacchi di cui abbia mai sentito parlare (incluso tutto quello che ho trovato elencato su Wikipedia) utilizza la ricerca della forza bruta con una funzione di valutazione (algoritmo minmax) per decidere la sua mossa.

Questo non è il modo in cui la maggior parte degli umani si avvicina al gioco, impiegando invece il riconoscimento di schemi generali, quindi in linea di principio sarebbe possibile che i computer facciano lo stesso.

Esiste un motore di scacchi che non si affida all'approccio della forza bruta per trovare le sue mosse?


9
Magnus Carlsen. ;)
Wes,

3
Per quanto riguarda le persone che affermano che i motori moderni non sono la forza bruta perché eliminano le mosse ... Penso che sia abbastanza chiaro che quando un motore di scacchi valuta decine di milioni di posizioni, sta usando la forza bruta, indipendentemente dalle sopracciglia che qualcuno potrebbe disegnare sull'algoritmo.
Tony Ennis,

I motori moderni possono perdere le mosse, ad es. sacrifici in cui il payoff non è fino a che abbastanza profondo. Penso che questo sia probabilmente perché vengono potati e non esaminati a fondo.
Un passante dal

Risposte:


6

Negli anni '80 ci furono tentativi di scrivere motori di scacchi con basi di conoscenza che avrebbero scelto mosse candidate come umani, ma non ebbero successo. Il problema è che la corrispondenza dei modelli umani è difficile da esprimere a parole, quindi creare le regole per la base di conoscenza è stato estremamente difficile.

La formazione di una rete neurale per scegliere le mosse candidate sembra una linea di ricerca promettente. Qui e qui potrebbero esserci due documenti pertinenti. (FWIW, Non è il mio campo di Comp Sci)



3

Vorrei aggiungere dettagli alla risposta di @ Ian_Bush su Giraffe.

Nella risposta di @ Ian_Bush, si nota che Giraffe non usa il calcolo della forza bruta. Questo non è giusto , perché Giraffe è ancora un motore alfa-beta (nega-max). L' unica differenza rispetto a un motore standard è che la funzione di valutazione è sintonizzata automaticamente dal deep learning. Pertanto, il motore impara a giocare da solo.

Tradizionalmente, il programmatore del motore sintonizza automaticamente i parametri in un motore. Ho fatto molto da solo. Ad esempio, quanto peso dovresti dare a un vescovo e un cavaliere? 3.0? 3.1? 3.2? È difficile da dire.

Giraffe affronta il problema in un modo molto più intelligente. Inizia con alcuni valori iniziali. Il motore utilizza l'algoritmo di salita del gradiente per ottimizzare tali valori. Non dobbiamo codificare esplicitamente quanto peso dovrebbe avere una regina nel codice. Questo è ciò che intendiamo per "apprendimento". Ciò non significa che il motore possa giocare a scacchi senza cercare.

EDIT : Giraffe modella i nodi dell'albero come probabilità che cadano nella variatazione principale. Controlla la carta per i dettagli. Personalmente non credo a questo approccio e il documento mostra poche prove di quanto sarebbe utile.


È vero che la giraffa usa lo stoccafisso eval come bersaglio? Se è così, non "impara gli scacchi" da solo, impara solo un'approssimazione di Stockfish eval usando una rete sulla parte superiore delle funzioni della scacchiera.
Fernando,

@Fernando Giraffe non ha nulla a che fare con lo stoccafisso, credo.
SmallChess,

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. Leggerò l'intero documento, ma a pagina 18 dice: Quindi, questo non sta imparando dall'auto-gioco IMO.
Fernando,

1

È discutibile se si può chiamare una ricerca euristica e valutare l'approccio come forza bruta. La maggior parte dei motori di scacchi di alto livello oggi segue un approccio basato su regole per valutare una posizione e una funzione di ricerca basata su regole per potare le mosse.

In realtà questo non è garantito per scegliere la mossa "globale ottimale", tuttavia queste mosse sono abbastanza buone per lo scopo. In questo senso, la maggior parte dei motori di scacchi sta usando un'approssimazione sull'ottimale globale e sta effettivamente procedendo.

Fino ad oggi, non abbiamo molti motori di scacchi ai massimi livelli usando un approccio diverso, almeno non su hardware economico.


0

Claude Shannon ha proposto due tipi di algoritmi per la creazione di motori a scacchi. Un motore di "tipo A" esamina tutte le mosse possibili ad una certa profondità finita, minimizza l'albero e quindi gioca la mossa con la valutazione più alta dall'albero minimassato (ovvero la forza bruta). I motori di tipo B limitano la loro ricerca a un solo sottoinsieme di possibili mosse in base ad alcuni criteri. Credevo che preferisse il Tipo B come più promettente.

I motori che furono creati negli anni '70 (ad es. Hitech, Kaissa) tendevano ad essere pura forza bruta senza potatura o solo alfa-beta, ma la gente vide presto il valore di potare l'albero di mosse e linee che difficilmente si sarebbero dimostrate forti . Quasi tutti i motori recenti potano l'albero delle linee che sono chiaramente più deboli (alfa-beta) e la maggior parte dei motori utilizza anche vari tipi di potatura in avanti (futilità, riduzione del movimento tardivo, movimento nullo, rasatura). In tal senso, non ci sono molti motori che usano più la pura forza bruta.

Negli anni '70, Botvinnik stava lavorando su un motore chiamato Pioneer concepito attorno alla nozione di percorsi di attacco che sarebbero stati guidati dalla valutazione. Non ha mai raggiunto il punto in cui poteva giocare una partita a scacchi completa.

Negli anni '90, Chris Wittington si dichiarò favorevole all'utilizzo di una maggiore conoscenza degli scacchi e creò un programma chiamato Chess System Tal che era abbastanza forte per l'epoca.

Kasparov, Anand e Tord Romstad hanno tutti notato che Hiarcs sembra avere una valutazione più dettagliata di molti dei migliori motori la cui forza deriva da una ricerca veloce.


-2

Praticamente tutti!

I motori di scacchi usano davvero la forza bruta solo quando:

  • detto a
  • stanno analizzando le posizioni (problem solving)
  • Alla ricerca di uno scacco matto (risoluzione dei problemi, non quando si gioca contro, come i problemi di stile "trova il compagno in N")

Altrimenti hanno una "ricerca selettiva", questo prenderà in considerazione tutte le mosse possibili per un determinato layout della scheda, ma ne esplorerà solo una manciata. Un motore può passare alla forza bruta anche se valuta due mosse in modo molto simile (più di una mossa forte) o se non riesce a trovare una mossa che gli piace (nessuna mossa forte).

Tendono anche a forza bruta come ultima linea di difesa, se hai visto una possibilità di scacco matto è che può vederlo arrivare e vorrà provare davvero a disegnare, e non riesce a trovare una via d'uscita (l'effetto "Orizzonte" "è un problema con i motori, supponiamo che perderà la sua regina, ed è stato limitato a solo 4 giocate in profondità; se può scambiare pedine e posporre quella perdita della regina per 4 mosse penserà di aver salvato la regina , nel processo perderà almeno 1 pedone (poiché la mossa successiva avvicina l'orizzonte da prima) e il peso che attribuisce al salvataggio della regina può significare che sacrifica un po 'di difesa, per nulla se la morte supera l'orizzonte) .

Sarà anche forza bruta quando la ricerca selettiva non è molto utile. Ecco perché i motori impiegano più tempo quando rimangono 3 pezzi. Devono essere a forza bruta perché l'algoritmo di selezione non può valutare una mossa. L'algoritmo di selezione è ottimo durante il midgame perché può essere come "Oohh, farlo con il pedone blocca il suo [qualunque cosa] e fa il backup del mio [qualunque] e [qualunque] che io abbia un numero minore in difesa che in attacco" - per esempio .

Se hai un re al centro del tabellone ci sono 8 mosse, la ricerca selettiva sarà come "Nessuno di questi fa qualcosa di utile, non posso dirlo".

Puoi pensare alla ricerca selettiva come se avesse due parti, è tattico nel senso che proverà a individuare mosse tattiche, ignorerà il peso dei pezzi coinvolti di solito perché una regina che non fa parte di nessuna strategia non vale più di una pedina vitale per essa. È anche strategico in quanto esplorerà le mosse che rafforzano una difesa e si apriranno in seguito a potenziali attacchi.

Il motore quindi fa lo stesso dal tuo punto di vista, avanti e indietro, avanti e indietro.

Qualcosa chiamato tabella di trasposizione è un grande elenco di cose a cui ha pensato, in questo modo se finisce considerando qualcosa che ha già fatto, lo sa e non deve rivalutarlo.

A MENO (selettivo :)) ci arriva in un modo diverso, o vuole esplorare ulteriormente. Supponiamo ad esempio che scopra che il tuo ... torre è essenziale per un attacco imminente, il motore può rivalutare una linea quando lo scopre. Il peso precedente che ha messo su quella torre (ad es. 5 punti, quanto è importante per te) potrebbe essere una sottovalutazione.

La ricerca selettiva può anche tornare indietro, come dire che sta considerando un vescovo che si sposta direttamente nel territorio nemico, per il selettore di mosse non è importante che possa essere preso facilmente. Diciamo che scopre strategicamente che è una mossa superba! Potrebbe quindi tornare indietro per cercare di trovare un modo per proteggere quel quadrato per portare lì quel vescovo. Supponiamo che coinvolga un pedone per farlo.

Il metodo della forza bruta prenderebbe in considerazione la linea che coinvolge quella mossa del pedone, e (con la forza bruta) anche il vescovo si muoverà, e la stessa roba che valuta la posizione del tabellone (la ricerca selettiva stessa) dirà "questo è buono", quindi il tabellone valuta questa variazione molto, entrambi la trovano.

È molto difficile valutare una posizione usando il metodo della forza bruta, ecco perché la ricerca selettiva funziona così bene.

La forza bruta dalla posizione di partenza potrebbe trovare quel famoso compagno-in-4 che coinvolge una regina f7 coperta da un vescovo, e se dovesse valere così in alto (HO TROVATO UN CHECKMATE! JOB DONE! PLAY!) sbaglierei perché il nero ovviamente contrasterà. La ricerca selettiva valuta una posizione (per ulteriori valutazioni) perché sembra essere buona. Ciò significa che, quando sta considerando la tua risposta, può decidere quale sarebbe meglio per te ....

Quindi la roba che la ricerca selettiva usa per valutare le cose viene comunque utilizzata dalla forza bruta perché "trovato un scacco matto che coinvolge questa mossa" non è sufficiente per dire che la mossa è buona.

Quindi quali sono le prime mosse scelte (bianco) dai motori di scacchi a forza bruta?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.