Capire AlphaZero


29

Molto recentemente, è arrivata la notizia che il team di ricerca DeepMind di Alphabet ha esteso il proprio motore di apprendimento automatico per giocare sia a Shogi che a scacchi. Apparentemente, dopo solo poche ore di autoapprendimento, ovvero giocando solo contro se stesso date le regole dei giochi, le sue prestazioni negli scacchi hanno già superato quelle dei migliori motori attuali come Stockfish 8. Personalmente non so ancora come siano state impostate esattamente le partite, come in quali condizioni lo Stockfish è stato impostato per eseguire, poiché se i tempi di calcolo sono limitati i motori sono in grado di funzionare molto male. In ogni caso, questo è un risultato davvero impressionante, perché anche se si scopre che si sarebbe potuto impostare Stockfish in modo più ottimale, con poche ore aggiuntive di allenamento, AlphaZero avrebbe superato di nuovo il livello di gioco, il che significa che AlphaZero è fondamentalmente più forte di qualsiasi corrente motore di scacchi standard basato su funzioni di valutazione euristica.

Ora alla luce di questa notizia, sarebbe bello se qualcuno potesse approfondire le principali differenze nel funzionamento di un motore di scacchi appreso dalla macchina rispetto ai motori standard che siamo tutti abituati ad usare. Più concretamente:

  1. La funzione di valutazione che AlphaZero utilizza, addestrata con metodi di apprendimento automatico, non è alla fine solo un'altra funzione di valutazione euristica? In caso affermativo, sarebbe corretto affermare che la differenza fondamentale tra le funzioni di valutazione dei due motori è il fatto che lo Stoccafisso ha una funzione di valutazione ottimizzata regolata a mano dall'uomo, il che significa che la definizione della funzione da ottimizzare è fissa, mentre per AlphaZero, la funzione di valutazione del target viene costantemente ridefinita attraverso una formazione aggiuntiva (ad esempio tramite il gioco personale)? Rendere quest'ultimo un approccio molto più dinamico.
  2. In definitiva, vagamente parlando, un motore come lo stoccafisso, applica la sua funzione di valutazione all'albero delle possibili mosse, decidendo quali rami mantenere e quali lasciare cadere, poi attraverso un cemento più profondol'analisi di ogni ramo, sempre attraverso la sua funzione di valutazione, individua quale ramo ha prodotto il valore più alto e che diventa la principale variazione (ovviamente ci sono molte tecniche avanzate in questo processo per potare efficacemente questo grande albero). Significa, per ogni posizione, questa routine estremamente concreta deve essere ripetuta affinché lo stoccafisso prenda una decisione. Al contrario, immagino che AlphaZero faccia qualcosa di molto diverso, vale a dire, non si basa su un'analisi concreta dell'albero delle possibili mosse in una data posizione, invece la sua funzione di valutazione assegna essenzialmente un valore a quella posizione (che intuitivamente è simile a mettere la posizione attuale in analogia a tutte le altre posizioni per cui è stata addestrata), senza mai dover eseguire calcoli concretianalisi nel modo in cui lo stoccafisso, o anche un giocatore umano. Questa è una buona immagine del funzionamento di AlphaZero o di motori di apprendimento automatico similmente addestrati?

  3. Sappiamo che lo spazio delle posizioni degli scacchi è abbastanza grande che qualsiasi tentativo di campionare tutte le posizioni in esso contenute sarebbe addirittura in linea di principio completamente invano (complessità EXPTIME), il che suggerirebbe che nessuna quantità di allenamento attraverso l'auto-gioco sarebbe sufficiente per hanno esplorato tutte le posizioni, quindi come può essere buono il risultato finale nonostante abbia potenzialmente esplorato una piccola frazione delle posizioni dello spazio tramite l'auto-gioco? Qual è l'idea chiave qui in gioco?

  4. La mia ipotesi è che AlphaZero abbia un modo molto ottimale di confrontare una determinata posizione, anche se nuova, con una precedentemente visitata nel suo set di formazione, più il confronto è vicino, più valida è la valutazione che si può trarre dal confronto. Ad esempio, quando ha giocato la mossa Bg5 nel gioco 5 , durante l'esercitazione deve aver esplorato una struttura simile, cioè è in grado di riconoscere che questa posizione è sostanzialmente equivalente a (una possibilmente completamente) diversa studiata nel suo allenamento, in analogia a come si ottiene il riconoscimento facciale attraverso l'apprendimento automatico e, di conseguenza, conclude che Bg5 dovrebbe essere la mossa migliore, come in quella (o quelle) altre posizioni simili. È un'ipotesi corretta? Non ho idea di come questo confronto è fatto, poiché sicuramente non è possibile memorizzare tutte le posizioni addestrate e analizzarle ogni volta.

Questo è semplicemente un tentativo di ottenere così approfondimenti sul funzionamento di AlphaZero e su come si arriva a una decisione data una posizione.

Risposte:


18
  • In che modo AlphaZero seleziona una mossa nella ricerca?

Questo è molto evidente dal documento.

Ogni simulazione procede selezionando in ogni stato un movimento con un conteggio delle visite basso, una probabilità di spostamento elevata e una selezione di valori elevati ...

Cosa significa? AlphaZero ha addestrato le probabilità per ogni mossa (fine della pagina 2 nel documento) da una rete neurale profonda. Durante la ricerca, seleziona una mossa proporzionale a quella probabilità e anche nodi con un conteggio basso (per garantire che venga esplorato lo spazio di campionamento). Questo non è un nuovo concetto, Monte Carlo Tree Search è stato in letteratura prima dell'esistenza di Google.

------ (Molto) Esempio approssimativo ------

Abbiamo una posizione e abbiamo due mosse legali.

  • La mossa 1 è buona e ragionevole
  • Move 2 mette il tuo re in pericolo senza alcun risarcimento

Secondo il documento, un modello approfondito addestrato potrebbe stimare le probabilità come (0,90, 0,10). Diciamo che AlphaZero utilizza 4 iterazioni in Monte Carlo. Le iterazioni potrebbero apparire come:

Iterazione 1 : scegli la mossa 1 perché ha la probabilità più alta. Esegui una simulazione dalla mossa 1. Iterazione 2 : scegli la mossa 1 perché ha la probabilità più alta. Esegui una simulazione dalla mossa 1. Iterazione 3 : scegli la mossa 1 perché ha la probabilità più alta. Esegui una simulazione dalla mossa 1.

Ora, siamo all'iterazione 4. Sebbene la mossa 1 abbia la probabilità stimata più alta ma la mossa 2 non è stata cercata ("conteggio delle visite basso" nel documento), ora AlphaZero sceglieva la mossa 2 ed eseguiva la simulazione.

Entrambe le mosse verrebbero prese in considerazione, ma AlphaZero avrebbe messo più risorse di calcolo sulla mossa 1 (cosa buona).

AlphaZero sceglierebbe quindi la mossa con il miglior risultato atteso.

------------------ Le tue domande: ------------------

La funzione di valutazione che AlphaZero utilizza, addestrata con metodi di apprendimento automatico, non è alla fine solo un'altra funzione di valutazione euristica?

La funzione di valutazione addestrato è una rete neurale profondo, è non è un insieme di regole euristiche, come quello che si vede in Stoccafisso. Nessuno capisce completamente (nemmeno il team di Google) la rete formata, funziona e basta. Ecco come funziona generalmente NN.

mentre per AlphaZero, la funzione di valutazione del target viene costantemente ridefinita attraverso la funzione di valutazione del target viene costantemente ridefinita attraverso una formazione aggiuntiva.

La funzione di valutazione in AlphaZero è un insieme di neuroni allenati (bias + pesi). Il team di Google ha utilizzato macchine molto potenti per addestrare i parametri. In generale, più risorse puoi investire nella formazione di un modello di apprendimento profondo, migliori sono i parametri che ottieni.

(2).

Lo stoccafisso utilizza alpha-beta, mentre AlphaZero utilizza Monte-Carlo. Sono due algoritmi molto diversi. L'algoritmo alfa-beta assume un limite inferiore / superiore, mentre Monte-Carlo crea simulazioni dalla radice alla foglia.

aver esplorato tutte le posizioni, quindi come può essere buono il risultato finale nonostante abbia potenzialmente esplorato una piccola frazione delle posizioni dello spazio tramite l'auto-gioco? Qual è l'idea chiave qui in gioco?

Google non ha affermato di aver risolto gli scacchi, nemmeno le loro macchine potenti potevano elencare tutte le posizioni degli scacchi. Ma non dovevano ... questo è il punto per l'apprendimento automatico, il modello "impara" dal set di addestramento. In questo caso, il set di allenamento proviene dall'auto-gioco. L'idea chiave è quella di giocare il maggior numero possibile di giochi di buona qualità contro se stesso e rapidamente.

Ad esempio, quando ha giocato la mossa Bg5 nel gioco 5, durante l'esercitazione deve aver esplorato una struttura simile,

Non credo che AlphaZero abbia trovato la stessa identica posizione nei giochi di allenamento. Penso che una rapida lettura di Monte-Carlo sia una buona idea:

https://chessprogramming.wikispaces.com/Monte-Carlo+Tree+Search

AlphaZero è stato in grado di eseguire la mossa raggiungendo una profondità sufficiente. L'algoritmo stima la probabilità attesa di vincita per ogni mossa, apparentemente, la mossa Bg5 ha dato la massima probabilità attesa.

Puoi pensare che AlphaGo sia riuscito a cercare così bene che ha visto la probabilità di vincere è più alta dopo Bg5, mentre Stockfish non ha preso in seria considerazione la mossa (e quindi ha perso).


2
"Monte Carlo Tree Search è stato in letteratura prima
dell'esistenza di

2
@CodesInChaos MCTS non è una nuova tecnica. Google non ha certo inventato Monte Carlo.
SmallChess

4
Brügmann 1993 è chiaramente solo MC. MC Go Dev. (2003) combina MC e alberi, ma in modo primitivo. Chang (2005) è piuttosto vicino, ma in un contesto diverso e penso che manchi ancora la scelta corretta del nodo per espandere e propagare le stime. Operatori di selettività e backup efficienti in MCTS Remi Coulom (2006) è un vero MCTS, per quanto ne so, il primo.
CodesInCos

1
@SmallChess Alcune parti della tua risposta sembrano contraddittorie: "ora AlphaZero sceglierebbe la mossa 2 e farebbe la simulazione. Entrambe le mosse sarebbero prese in considerazione, ma AlphaZero avrebbe messo più risorse di calcolo sulla mossa 1 (buona cosa)". contraddice l'affermazione Ogni simulazione procede selezionando in ogni stato sa mossa con un numero di visite basso ... come, nel tuo esempio, sarebbe 2 invece di 1. A dire il vero il documento non contiene alcuna informazione utile per il comprensione, in quanto non mostrano alcun modo per riprodurre l'esperimento o fornire indicazioni sul modo effettivo in cui addestrano le reti.
gented

1
Quello che fanno è essenzialmente affermare "abbiamo usato l'algoritmo X e funziona" - che fornisce poca o nessuna comprensione sui metodi stessi, quindi non mi concentrerei troppo sul documento stesso per cercare di capire cosa fa davvero.
gented

0

Immagino che la mia domanda sarebbe come la rete neurale "impara" cosa fare in una posizione che non ha incontrato. Dire che l'AZ reale esegue un MCTS usando i pesi bias + dalla rete neurale addestrata fa semplicemente un passo indietro nel modo in cui la rete neurale calcola questi valori. Se fosse attraverso l'autoproduzione casuale, senza conoscenza umana, come può decidere come ponderare una posizione che non ha mai visto?


1
Penso che potrei essere in grado di risponderti, ma non qui. Si prega di iniziare una nuova domanda.
SmallChess,

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.