In che modo AlphaZero impara a valutare una posizione che non ha mai visto?


12

Seguendo le risposte a:

Capire AlphaZero

La mia domanda sarebbe come la rete neurale "impara" cosa fare in una posizione che non ha incontrato. Dire che la 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?

Risposte:


6

La funzione di valutazione di un motore di scacchi, istanziata come rete neurale o codice esplicito, è sempre in grado di assegnare un valore a qualsiasi posizione della scacchiera. Se gli dai una posizione da tavolo, anche assurda che non si verificherebbe mai in una partita, sarà in grado di sputare un numero che rappresenta quanto sia favorevole a un giocatore o un altro. Dato che il numero di posizioni sulla scacchiera negli scacchi è ingestibilmente gigantesco, l'allenamento può avvenire solo su un campione infinitesimale dell'albero di gioco. Il motore non sta semplicemente richiamando i valori precedentemente calcolati delle posizioni della scheda, ma sta eseguendo calcoli basati sulla disposizione dei pezzi. Per un esempio di rete non neurale, parte della valutazione di un motore di scacchi potrebbe essere quella di sommare il valore di ogni pezzo dalla sua parte e sottrarre il valore totale dei pezzi dell'avversario. Poi,

Quando il motore non è addestrato, i valori assegnati a una posizione potrebbero anche essere casuali poiché i parametri della funzione di valutazione iniziano con (solitamente) valori casuali. L'obiettivo di una fase di allenamento è di regolare i parametri del motore in modo che assegni punteggi alti alle posizioni del board che sono probabili stati vincenti per il giocatore.

Dalla carta su AlphaZero (pagina 3):

I parametri della rete neurale profonda in AlphaZero sono addestrati dall'apprendimento del rinforzo in auto-gioco, a partire da parametri inizializzati casualmente. Le partite vengono giocate selezionando le mosse per entrambi i giocatori da MCTS. Alla fine della partita, la posizione del terminale viene assegnata in base alle regole del gioco per calcolare il risultato del gioco: −1 per una perdita, 0 per un pareggio e +1 per una vittoria. I parametri della rete neurale vengono aggiornati in modo da ridurre al minimo l'errore tra il risultato previsto e il risultato del gioco e massimizzare la somiglianza del vettore politico con le probabilità di ricerca.

[simboli matematici rimossi dalla citazione]

In sintesi, durante l'allenamento, AlphaZero ha giocato una partita contro se stesso. Quando il gioco termina, il risultato del gioco e l'accuratezza delle sue previsioni su come il gioco procederà sono stati usati per regolare la rete neurale in modo che fosse più accurata durante il gioco successivo. AlphaZero non sta registrando tutte le posizioni che ha visto, ma si sta adattando in modo da poter valutare più accuratamente qualsiasi scheda che vedrà in futuro.


Capisco perfettamente la tua spiegazione a livello algoritmico, ma sono ancora stupito che funzioni. Avrei pensato che i primi giochi sarebbero stati così casuali da non avere alcun valore di apprendimento. Sembra impossibile valutare l'esito di una mossa in quel momento se non giocando a scacco matto, perché questa è l'unica cosa di cui ti è stato detto. Ma quel scacco matto succederà solo dopo che è successo un gran numero di altre cose essenzialmente casuali. La mia sensazione è che non ci siano sufficienti dati significativi per trarre conclusioni. Perché sbaglio?
Philip Roe,

@PhilipRoe Hai ragione, ogni gioco fornisce solo un po 'di informazioni. In realtà ho scritto il mio motore di scacchi che apprende da un algoritmo evolutivo. Copie casualmente modificate del motore si giocano a vicenda; i perdenti vengono eliminati e i vincitori producono copie più modificate. Di solito ci vogliono tra le 10.000 e le 20.000 partite per capire il giusto ordine dei valori dei pezzi (regina, torre, vescovo / cavaliere, pedone). AlphaZero ha impiegato 44 milioni di giochi per raggiungere la sua abilità (tabella a pagina 15 del documento collegato).
Segna H il

Grazie per aver risposto! Ma sono ancora stupito. C'è l'enorme spazio di possibili posizioni da valutare. Ma c'è anche l'enorme spazio di possibili domande da porre. Antropomorficamente, mi immagino con una conoscenza precedente pari a zero, tranne le regole, e un enorme database di giochi che si svolgono a un livello quasi inconcepibile di incompetenza (anche se non suppongo che tutto venga ricordato) A che punto mi viene in mente "Ehi, forse io dovrebbe contare i pezzi "Allora quanto tempo prima di contare i pezzi sembra una buona idea?
Philip Roe,

1
Trovo molto difficile immaginare, anche se sono stati forniti alcuni suggerimenti forti su "Che cosa costituisce una buona domanda?" Ma senza nemmeno quello, sono impressionato dal fatto che un'erarchia di pezzi possa essere stabilita in 20.000 partite. Quindi trovo molto difficile accettare che la tabula sia davvero rasa. Alcune istruzioni minime sul processo di generazione e revisione delle regole (quante, quante volte?) Sembrano ancora essenziali.
Philip Roe,

1
@PhilipRoe Nel mio programma, dico al motore di contare i pezzi, ma non quanto vale ogni pezzo. Quindi, dico al motore cosa guardare, ma non come valutare ciò che vede. AlphaZero è molto più tabula rasa. Se sei curioso: github.com/MarkZH/Genetic_Chess
Mark H
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.