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:
- 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.
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?
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?
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.