# AlphaZero

AlphaZero è un algoritmo di intelligenza artificiale basato su tecniche di apprendimento automatico sviluppato da Google DeepMind. È una generalizzazione di AlphaGo Zero, predecessore sviluppato specificamente per il gioco del go e a sua volta evoluzione di AlphaGo, primo software capace di raggiungere prestazioni sovrumane nel gioco del go. Analogamente ad AlphaGo Zero, impiega la ricerca ad albero Monte Carlo (MCTS) guidata da una rete neurale convoluzionale profonda addestrata per rinforzo.
Il 5 dicembre 2017 il team DeepMind ha pubblicato su arXiv un preprint nel quale vengono presentati alcuni risultati ottenuti da AlphaZero in diversi giochi da tavolo classici, raggiungendo con poche ore di training un livello sovrumano nel gioco degli scacchi, shōgi e go, superando la forza di gioco di programmi campioni del mondo nelle rispettive discipline: Stockfish per gli scacchi e elmo/yaneura ou per lo shogi (entrambi motori basati su algoritmi tradizionali, ovvero ricerca ad albero con potatura alfa-beta), e AlphaGo Zero per il go. In particolare, un'istanza di AlphaZero ha vinto un match di 100 partite contro Stockfish, ottenendo 25 vittorie con il bianco, 3 con il nero, e patta nel resto delle partite. Gli autori stimano che AlphaZero abbia superato la forza di gioco di Stockfish dopo le prime quattro ore di addestramento (circa 300 000 mini-batch). La versione definitiva dell'articolo è stata pubblicata su Science nel numero di dicembre 2018.

## Relazione con AlphaGo Zero

AlphaZero è una generalizzazione di AlphaGo Zero, algoritmo per il gioco del go evoluzione di AlphaGo. Può essere applicato a una varietà di giochi da tavolo, ed è stato testato dagli autori nel gioco dello shōgi, degli scacchi e del go. Le principali differenze di AlphaZero rispetto al suo predecessore sono:
* AlphaGo Zero usa tecniche di ottimizzazione bayesiana per il tuning dei parametri di ricerca in ogni singola partita, mentre AlphaZero usa parametri costanti nel corso di tutte le partite.
* Nel training, le partite di AlphaGo Zero sono generate dalla migliore istanza (best player) ottenuta nel corso delle precedenti iterazioni, e dopo ogni iterazione la performance della nuova istanza è misurata contro il best player, sostituendolo se riesce a batterlo con un margine di almeno il 55%. AlphaZero usa invece una singola rete neurale che viene continuamente aggiornata, senza aspettare il termine di ogni iterazione.
* Il go (a differenza degli scacchi e dello shogi) è simmetrico per determinate riflessioni e rotazioni; AlphaGo Zero sfrutta le simmetrie sia in fase di training (eseguendo data augmentation tramite otto possibili rotazioni e riflessioni per ciascuna posizione), sia in fase di valutazione (applicando una simmetria casuale all'input prima di sottoporlo alla rete neurale, per cancellare in media il bias dovuto alla rotazione o riflessione). AlphaZero non può invece trarre vantaggio di tali soluzioni tecniche.
* Una partita a scacchi (a differenza del go) può finire in parità (patta); mentre AlphaGo stima ed ottimizza la probabilità di vittoria, AlphaZero stima ed ottimizza il risultato atteso della partita (espresso in forma numerica).

## Risultati sperimentali

AlphaZero è stato sperimentato nel gioco degli scacchi, dello shogi e del go, usando tre distinte istanze addestrate separatamente per 700 000 mini-batch di 4096 record su un cluster di 5000 TPU di prima generazione per la creazione delle partite e 64 di seconda generazione per l'addestramento della rete neurale, usando 800 simulazioni per ogni MCTS e un learning rate iniziale pari a 0,2, progressivamente ridotto (dividendo per dieci) per tre volte nel corso del training. Il tempo effettivo di addestramento è differente a seconda della dimensione della tavola da gioco, ed è stato pari a 9 ore per gli scacchi, 12 per lo shogi e 34 per il go. La valutazione è stata eseguita facendo girare AlphaZero su una singola macchina munita di 4 TPU e usando come avversari Stockfish 8 per gli scacchi e elmo WCSC27 con la funzione di ricerca yaneura ou 2017 Early KPPT 4.73 64AVX2 per lo shogi, in entrambi i casi con 64 thread di ricerca e 1 GB di hash, e per il go un'istanza di AlphaGo Zero addestrata per tre giorni ed eseguita sulla stessa configurazione hardware di AlphaZero. Le partite sono state giocate con un minuto per mossa senza pondering, libro di apertura né tablebase. Le impostazioni di abbandono erano attive per tutti i software, pari a -900 cent per 10 mosse consecutive nel caso di Stockfish e elmo, e probabilità di vittoria inferiore al 5% per AlphaZero.
AlphaZero ha disputato in tali condizioni un match di 100 partite contro ciascun avversario, generando i risultati nella tabella seguente. In fase di ricerca AlphaZero analizza una quantità di posizioni tre ordini di grandezza inferiore rispetto agli algoritmi tradizionali basati su ricerca ad albero con potatura, ovvero circa 80 000 posizioni al secondo negli scacchi e 40 000 nello shogi, mentre Stockfish analizza circa 70 milioni di posizioni al secondo e elmo 35 milioni.
| Gioco | Bianco | Risultato | Risultato | Risultato | Nero |
| Scacchi | AlphaZero | 25 | 25 | 0 | Stockfish |
| Scacchi | Stockfish | 0 | 47 | 3 | AlphaZero |
| Shogi | AlphaZero | 43 | 2 | 5 | elmo |
| Shogi | elmo | 3 | 0 | 47 | AlphaZero |
| Go | AlphaZero | 31 | - | 19 | AlphaGo Zero |
| Go | AlphaGo Zero | 21 | - | 29 | AlphaZero |
È stato eseguito un esperimento nel quale AlphaZero ha affrontato Stockfish in 12 match di 100 partite, in ognuno dei quali la posizione iniziale era una delle 12 aperture più frequenti nel gioco umano (con oltre 100 000 entry nel database online del sito 365Chess.com). Gli autori hanno evidenziato come AlphaZero abbia scoperto e giocato tutte queste aperture nella fase di training.
| Apertura | ECO | Bianco | Risultato | Risultato | Risultato | Nero |
| Apertura inglese | A10 | AlphaZero | 20 | 30 | 0 | Stockfish |
| Apertura inglese | A10 | Stockfish | 2 | 40 | 8 | AlphaZero |
| Gambetto di donna | D06 | AlphaZero | 16 | 34 | 0 | Stockfish |
| Gambetto di donna | D06 | Stockfish | 2 | 47 | 1 | AlphaZero |
| Partita di donna | A46 | AlphaZero | 24 | 26 | 0 | Stockfish |
| Partita di donna | A46 | Stockfish | 0 | 47 | 3 | AlphaZero |
| Partita di donna | E00 | AlphaZero | 17 | 33 | 0 | Stockfish |
| Partita di donna | E00 | Stockfish | 1 | 44 | 5 | AlphaZero |
| Difesa est-indiana | E61 | AlphaZero | 16 | 34 | 0 | Stockfish |
| Difesa est-indiana | E61 | Stockfish | 2 | 48 | 0 | AlphaZero |
| Difesa francese | C00 | AlphaZero | 39 | 11 | 0 | Stockfish |
| Difesa francese | C00 | Stockfish | 4 | 46 | 0 | AlphaZero |
| Apertura | ECO | Bianco | Risultato | Risultato | Risultato | Nero |
| Difesa siciliana | B50 | AlphaZero | 17 | 32 | 1 | Stockfish |
| Difesa siciliana | B50 | Stockfish | 3 | 43 | 4 | AlphaZero |
| Difesa siciliana | B40 | AlphaZero | 17 | 31 | 2 | Stockfish |
| Difesa siciliana | B40 | Stockfish | 7 | 40 | 3 | AlphaZero |
| Difesa siciliana | B30 | AlphaZero | 11 | 39 | 0 | Stockfish |
| Difesa siciliana | B30 | Stockfish | 1 | 46 | 3 | AlphaZero |
| Partita spagnola | C60 | AlphaZero | 27 | 22 | 1 | Stockfish |
| Partita spagnola | C60 | Stockfish | 0 | 44 | 6 | AlphaZero |
| Difesa Caro-Kann | B10 | AlphaZero | 25 | 25 | 1 | Stockfish |
| Difesa Caro-Kann | B10 | Stockfish | 1 | 45 | 4 | AlphaZero |
| Apertura Réti | A05 | AlphaZero | 13 | 36 | 1 | Stockfish |
| Apertura Réti | A05 | Stockfish | 0 | 43 | 7 | AlphaZero |

## Reazioni

I risultati di AlphaZero hanno ricevuto grande copertura mediatica. La stampa ha enfatizzato il relativamente limitato tempo di addestramento necessario per raggiungere una forza di gioco sovrumana (riguardo alle quattro ore necessarie per superare la forza di gioco di Stockfish, il Telegraph lo etichetta come "un tempo inferiore a quello tra la colazione e il pranzo.") Si tratta di un tempo significativo, ma comunque equivalente ad una quantità di calcoli enorme: l'addestramento è stato infatti eseguito su una configurazione massivamente parallela (5000 TPU di prima generazione più 64 di seconda generazione), e la quantità di calcoli è equivalente a circa due anni di tempo macchina su una singola TPU, corrispondente ad un tempo molto maggiore su una GPU commerciale e ancora di più su una CPU. L'esperta di IA Joanna Bryson ha osservato che, grazie alle buone capacità pubblicitarie di Google, AlphaZero si sta già fortemente imponendo all'attenzione degli sfidanti. "Non si tratta solo di disporre dei migliori programmatori. È anche una questione eminentemente politica, visto che contribuisce a rafforzare la posizione di Google nelle trattative con i governi e le autorità di regolamentazione che si occupano del settore dell'IA."
Il mondo degli scacchi ha espresso diverse opinioni positive. Garri Kasparov, ex campione del mondo e da sempre interessato all'intelligenza artificiale applicata agli scacchi, ha definito il risultato come eccezionale. Il GM danese Peter Heine Nielsen, nel corso di un'intervista ha dichiarato alla BBC: "Mi sono sempre domandato cosa succederebbe se una specie superiore atterrasse sul nostro pianeta e ci mostrasse come gioca a scacchi. Ora lo so." Il GM norvegese Jon Ludvig Hammer ha definito AlphaZero "un attaccante folle" con un profondo senso del gioco posizionale. Opinione analoga è stata espressa da Demis Hassabis, cofondatore di DeepMind e giocatore di scacchi, che etichetta lo stile di gioco di AlphaZero come alieno: "a volte vince offrendo sacrifici controintuitivi, ad esempio sacrificando donna e alfiere per sfruttare un vantaggio posizionale".

### Critiche

I risultati hanno attirato anche perplessità dal punto di vista metodologico, dovute alla configurazione sperimentale e alla differente tipologia di hardware impiegato. Hikaru Nakamura e Larry Kaufman (che ha contribuito allo sviluppo di Rybka e Komodo, forti motori UCI) hanno evidenziato come l'assenza di un libro di apertura abbia inficiato negativamente la performance di Stockfish, che è ottimizzato per trarre vantaggio da esso, mentre al contrario AlphaZero non usa un meccanismo analogo (Kaufman sottolinea come di fatto AlphaZero impari la teoria d'apertura da zero nella fase di training), ipotizzando che in condizioni ottimali il divario finale nel punteggio potesse essere più contenuto. I due esprimono anche perplessità sul come la differente architettura hardware e relativa potenza di calcolo a disposizione dei software abbia influito sul risultato.
Tord Romstad, uno degli sviluppatori originali di Stockfish, ha evidenziato come le condizioni di gioco fossero penalizzanti per Stockfish, che non è ottimizzato per il gioco a tempo fisso per mossa, traendo invece vantaggio dall'avere un tempo fisso per partita e distribuendo il tempo in misura differente nel corso delle mosse a seconda della necessità. Osserva anche il fatto che la versione del motore impiegata negli esperimenti fosse vecchia di un anno. D'altro canto, fa anche notare il breve tempo a disposizione del team per raggiungere il risultato, sostenendo che AlphaZero avrebbe potuto raggiungere risultati addirittura migliori con più lavoro messo a disposizione per il progetto, e osserva l'importanza rappresentata dall'introduzione di un approccio completamente nuovo, sia dal punto di vista hardware sia software, al problema del gioco degli scacchi.
Altre critiche metodologiche riguardano la limitata riproducibilità dell'esperimento, in quanto il codice sorgente di AlphaZero non è accessibile e l'hardware impiegato non è disponibile a livello commerciale. Inoltre, tra le partite di esempio pubblicate non sono presenti sconfitte, la cui analisi sarebbe utile per proseguire la ricerca nel tentativo di migliorare i punti deboli, motivo per il quale nelle pubblicazioni scientifiche è buona prassi evidenziare anche le criticità di un algoritmo oltre che i suoi punti di forza.
Per quanto riguarda lo shogi, critiche analoghe riguardano il fatto che la memoria allocata per la hash table di elmo fosse troppo poca e che le impostazioni per l'abbandono (in particolare in caso di nyū gyoku) non fossero ottimali.