Intelligenza Artificiale
Ing. Tiziano Papini
Email: papinit@dii.unisi.it
Web: http://www.dii.unisi.it/~papinit
Game Playing
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
2
Cosa vedremo
Come si colloca il Game Playing in relazione ad altre
discipline: una visione d’insieme
Tipologie di Giochi
Relazioni con il Problem Solving
Formalizzazione del gioco
Algoritmo Minimax
Ricerca di quiescenza
Algoritmo di Alfa-Beta Pruning
Problema dell’Orizzonte ed altri…
La vera sfida del Game Playing
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
3
Curiosità: The Turk
Vienna, 1770 davanti all'Imperatrice d'Austria e
Ungheria, Wolfgang von Kempelen, nobile giurista e
inventore ungherese, presentare una macchina
capace di pensare e di giocare a scacchi.
In realtà, all'interno dell'automa, si cela un nano
veneziano, imbattibile nel gioco degli scacchi, che
Kempelen ha sottratto dal buio della prigione: Tibor
Scardanelli.
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
4
Una visione d’insieme
Partendo dal Problem Solving
Introduciamo nel dominio
del problema altri agenti
in competizione
Game Playing
Intelligenza Artificiale - Game Playing
Complichiamo: stati (congiunzioni di fatti),
e operatori (legami tra fatti-condizioni e
fatti-effetti, non tra stati)
Planning
Tiziano Papini - 2011
5
Teoria dei Giochi
Von Neumann & Morgenstern (1944)
Theory of Games and Economic Behaviour
Teoria della Decisione
Analizzare il comportamento
individuale le cui azioni hanno
effetto diretto
Scommesse &
Mondo dei Puzzle
Intelligenza Artificiale - Game Playing
Teoria dei Giochi
Analizzare il comportamento
individuale le cui azioni hanno effetto
che dipende dalle scelte degli altri
Mondo dei Giochi
a + giocatori
Tiziano Papini - 2011
6
I giochi nell’IA e non solo
M. Minsky (1968):
“i giochi non vengono scelti perché sono chiari e semplici, ma perché
ci danno la massima complessità con le minime strutture iniziali”
Pungolo Scientifico
Matematica: teoria dei grafi e complessità
Computer Science: database, calcolo parallelo, etc.
Economia: teoria dei giochi, eco. cognitiva/sperim.
Psicologia: fiducia, rischio, etc..
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
7
Tipologie di Giochi
Classificazione 1 condizioni di scelta:
Giochi con informazione “perfetta”
Giochi con informazione “imperfetta”
Gli stati del gioco sono completamente espliciti per gli agenti.
Gli stati del gioco sono solo parzialmente esplicitati.
Classificazione 2 effetti della scelta:
Giochi deterministici
Gli stati sono determinati unicamente dalle azioni degli agenti
Giochi stocastici
Gli stati sono determinati anche da fattori esterni (es: dadi)
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
8
Tipologie di Giochi
Informazione
Perfetta
Informazione
Imperfetta
Scacchi, Go,
Dama, Otello,
Forza4
MasterMind
Backgammon,
Monopoli
Scarabeo,
Bridge, Poker…
(giochi di carte)
Risiko
Giochi
deterministici
Giochi
stocastici
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
9
Altre Classificazioni
Numero giocatori (tutti multiagenti!)
Politica del turno di giocata
Diacronia (turni definiti/indefiniti)
Sincronia
Ambienti discreti / continui
Ambienti statici / dinamici
Ambienti episodici / sequenziali
Giochi a somma zero
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
L’uomo agisce in un
ambiente continuo,
dinamico, sequenziale,
a scelte sincroniche e
con informazione
imperfetta.
10
Giochi e Problem Solving
Si può analizzare un gioco come un problema di
search, anche se multiagente?
ES: gli scacchi
X
X0
Op(x)
g(x)
T
= tutti gli stati della scacchiera
= lo stato di inizio gioco
= le mosse legali ad uno stato
= scacco matto
= costi dei cammini
Qualcosa non va! …
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
11
Giochi e Problem Solving
T non è determinante
Op(x) è sotto controllo solo per metà delle mosse
e spesso non è reversibile
g(x) non è sufficiente per definire la terminazione
Serve una funzione di utilità sulla terminazione
Es: vittoria = +1, patta = 0, sconfitta = -1
Obiettivo dell’agente:
definire una strategia che raggiunga T(x)=+1
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
12
Giochi e Problem Solving
Per inserire un gioco ad informazione perfetta in
uno schema classico di search si considera che:
Esiste un avversario che va simulato
L’avversario minimizza il nostro utile
L’albero di ricerca si sviluppa su 2 giocatori:
MAX(noi)
e MIN (l’avversario)
L’obiettivo è raggiungere uno stato terminale di
quest’albero con la massimizzazione dell’utilità*.
*(se l’avversario inizia per primo: lui diventa MAX e noi MIN con lo scopo di minimizzare l’utilità)
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
13
Algoritmo Minimax
(Von Neumann ’28, Shannon ‘50)
Nei giochi ad informazione perfetta si può ottenere
la strategia perfetta con una ricerca esaustiva.
Minimax, funzionamento di base:
Si costruisce l’albero delle mosse fino ai nodi terminali
Si applica la funzione di utilità U(x) ai nodi terminali
Si usano i valori per calcolare l’utilità dei nodi superiori:
U(nodo_sup) = MAX U(nodo_inf) se la mossa spetta a MAX
U(nodo_sup) = MIN U(nodo_inf) se la mossa spetta a MIN
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
14
Algoritmo Minimax
MAX
In realtà è
depth-first!
3
MIN
-4
MAX
1
-4
MIN
-4
1
1
6
-4
-4
1 -4
Intelligenza Artificiale - Game Playing
3
3
-5
-5
3
4
1
5
-2
3 -2 -1
4
-1
5
3
Tiziano Papini - 2011
5
1
4
4
6
1
-4
1
-2 -4
15
Algoritmo Minimax
> MAX = true, MIN = false
> MINIMAX(X, MAX)
MINIMAX(nodo, agente)
figli[] = SCS(nodo, agente)
for all (figli){
if(END_test(figlio) == true) {
figlio.utilità = UTILITY_test(figlio)
}
else figlio.utilità = MINIMAX(figlio, !agente)
if(agente==MAX && figlio.utilità > best)
best = figlio.utilità
if(agente==MIN && figlio.utilità < best)
best = figlio.utilità
} return best
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
16
Proprietà di Minimax
E’ completo in grafi finiti
E’ ottimale se MIN è ottimale (e se ci sono
più avversari).
Se MIN non è ottimale non si può garantire
l’ottimalità, ma…
Ha complessità spaziale O(bm) perché la
ricerca è in profondità.
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
17
;
Un “problemino” di Minimax
Negli scacchi:
"Unfortunately, the number of possible positions in the
chess tree surpasses the number of atoms in the Milky
Way." Claude Shannon
In generale: complessità temporale = O(bm)
Negli scacchi
351 0 0 = 2,5 x 101 5 4
In problemi reali non si può usare.
E’ utile solo come base teorica.
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
18
Minimax + taglio di
profondità
Limitare la ricerca ad una profondità max
(dipendente dalla memoria e dal tempo
disponibile)
Come valutare l’utilità dei nodi foglia?
Serve una funzione di valutazione.
Cioè un’euristica!
Far risalire fino alla radice le stime usando
minimax ed effettuare la scelta
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
19
Euristiche per Giochi
Funzioni lineari pesate
w1f1 + w2f2 + … + wnfn
Per esempio negli scacchi: 1 punto x Pedone,
3 x Alfiere, 3 x Cavallo, 5 x Torre, 9 x Regina
Vantaggi: la linearità permette rapidità di calcolo
Svantaggi: povertà espressiva (es: Cavallo forte nelle
aperture e al centro, Alfiere nelle chiusure, i valori delle
combinazioni di pezzi non sono lineari)
Funzioni non-lineari
Es. ottenuti da learning, ma come definire i TARGET?
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
20
Un “problemino” del taglio
Euristica possibile per la Dama:
Vantaggio di pezzi e vantaggio di dame
Prof. 0
Prof. 11
Prof. 18
Posizioni apparentemente buone possono essere perdenti
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
21
Taglio agli stati “quiescenti”
Arrivati alla profondità di taglio:
Per i nodi foglia quiescenti si applica il taglio
Per i nodi non quiescenti si approfondisce l’albero con
una ricerca di quiescenza
Al termine della ricerca si applica il taglio
Quiescenza = proprietà di uno stato la cui
euristica di utilità non varia molto con
l’applicazione degli operatori
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
22
Ancora un “problemino”
Vogliamo arrivare a profondità 6 in una
partita di scacchi (3 mosse MAX, 3 MIN)
b = ca.35, n° nodi = 356 1,85 x 109
Calcolatore veloce: 106 mosse/sec.!
Tempo impiegato: 1850 sec. = 30min
Con un limite di 30min abbiamo un giocatore
mediocre
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
23
?
Alfa-Beta pruning
(McCarthy ’56)
Si può ottenere la mossa MAX senza osservare
esaustivamente l’albero, perché:
1) DATO U(n0 )= α utilità minimax del nodo n0 su cui sceglie MAX
2) affinchè la scelta conclusiva di MAX sia ≠ α almeno 1 nodo n (“fratello” di n0) deve
avere U(n)> α
3) affinchè U(n)> α per ogni nodo n’ successore di n deve valere h(n’)> α
4) QUINDI: appena un successore di n possiede U(n’) ≤ α il sottoalbero restante può
essere potato
“Stesso” discorso vale per MIN, quindi…
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
24
Alfa-Beta pruning (2)
Nella ricerca nell’albero:
Si usano 2 variabili:
α = valore maggiore di MAX al tempo attuale
ß = valore minore di MIN al tempo attuale
Calcolando MAX si pota il sottoramo di un nodo se un suo
figlio ha valore inferiore ad α; se invece tutti i figli hanno
valore maggiore il minimo diventa α
Calcolando MIN si pota il sottoramo di un nodo se un suo
figlio ha valore maggiore a ß; se invece tutti i figli hanno
valore minore il massimo diventa ß
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
25
Alfa-Beta Pruning: Pseudo Codice
MAX-VALUE(nodo, α, ß)
if CUTOFF-TEST(nodo) then return EVAL(nodo)
v - ∞
for all figli in SCS(nodo) {
v max(v, MIN-VALUE(figlio, α, ß) )
if v ≥ ß then return v
α max(v,α)
}
v = utilità del nodo
return v
MIN-VALUE (nodo, α, ß)
if CUTOFF-TEST(nodo) then return EVAL(nodo)
v + ∞
for all figli in SCS(nodo) {
v
min(v, MAX-VALUE(s, α, ß))
if v ≤ α
then return v
ß min(v,ß)
}
Intelligenza
Artificiale
return
v - Game Playing
Tiziano Papini - 2011
26
Alfa-Beta pruning: simulazione
α = −∞
ß= ∞
α=1
1 α=−∞
ß=∞
α=−∞
1 ß
ß=∞
=1
α=1
1 α=−∞
ß=∞
1 α=−∞
ß=∞
ß=1
1
2
-1 α=1
ß=∞
-1
MAX
0
2 α=−∞
ß=1
2 α=−∞
ß=1
2
4
Intelligenza Artificiale - Game Playing
-3
0 α=1
ß=∞
-3 α=1
ß=∞
-3
MIN
MAX
20 α=1
ß=2
ß=0
ß=∞
2
α=1
ß=∞
MIN
0
Tiziano Papini - 2011
27
Alfa-Beta pruning
Caso Generale
n0
n’
Intelligenza Artificiale - Game Playing
Se n0 è migliore di n’
allora n’ non verrà mai
raggiunto durante il
gioco e quindi tutto il
sottoramo
corrispondente può
essere potato
Tiziano Papini - 2011
28
Efficacia della potatura α-ß
Dipende dall’ordinamento dei nodi
Ordinamento migliore: O(b )
Ordinamento pessimo: O(bm)
Ordinamento medio: O(b¾m)
½m
Node
Ordering
Negli scacchi (considerando il caso medio):
Fasi di apertura (b ≈ 35, poniamo m = 10)
Minimax: n° nodi: ca. 2.700.000.000.000.000
Alfa-beta: n° nodi:
ca. 380.000.000.000
Fasi centrali (b ≈ 18, poniamo m = 10)
Minimax: n° nodi: ca. 3.500.000.000.000
Alfa-beta: n° nodi:
ca. 2.600.000.000
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
Un buon
calcolatore
(106 mosse/sec)
sceglie una mossa
in 4 minuti!
29
Altri problemi da affrontare
Problema dell’orizzonte
Eccessiva fiducia nell’euristica
Eventi stocastici
Giochi multiplayer
Branching Factor e potenza di calcolo
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
30
Problema dell’Orizzonte
Un lungo periodo di quiescenza può precedere un rapido
ed inevitabile peggioramento dell’utilità
Se il taglio in profondità è avvenuto in questa “zona”,
valuta positivamente uno stato che è invece disastroso
Problema tutt’ora irrisolto!
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
31
Eccessiva fiducia nell’euristica
Una valutazione molto irregolare tra nodi “fratelli” è
rischiosa, soprattutto usando Alpha-Beta
Servirebbe un’ulteriore ricerca nel sottoramo per
accertarsi della bontà della valutazione
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
32
Eventi stocastici
Se in un gioco inseriamo la sorte, minimax deve essere
riscritto in modo da pesare la valutazione del nodo n con la
probabilità che n si verifichi a partire dal nodo genitore
Problema: la complessità cresce molto O(bm dm)
Alpha-Beta Pruning?
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
33
ExpectiMin / ExpectiMax
5.39
5.39
0.3
0.56
0.7
2.8
3.5
0.3
0
5
6.5
0.7 0.3
0
0 –3 3 5 0 –6 4
4
8.3
0.7 0.3
3
8
8
0.7 0.3
2
7
1.4
–1.4
5.5
0.7 0.3
9
0.7
–1.4
6.5
2.8
0.7 0.3
0.3
8.1
0.7 0.3
7
–5
1.4
0.7 0.3
6
9
0.7
0
2
1 3 –1 2 8 9 –8 8 7 2 –2 6 7 3 7 –5 –7 6 4 9 5 0 –4 1 2
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
34
Giochi multi-player
Possiamo generalizzare gli algoritmi per giochi “2player-perfect-information”:
Requisito: non ci deve essere accordo tra i giocatori
Esempio 1: “la dama cinese”
6 giocatori muovono a turno
ogni giocatore cerca di occupare completamente
l’angolo opposto
Esempio 2: “3-player Othello”
3 giocatori muovono a turno
ogni giocatore deve “conquistare” il massimo
della scacchiera
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
35
Algoritmo MaxN
Assunzioni:
Funzione di valutazione:
I giocatori muovono a turni
Ogni giocatore mira a massimizzare il proprio utile
Ogni giocatore è indifferente all’utile degli avversari
Restituisce una n-tupla di valori di utilità attesa, uno per ogni
giocatore (player p) allo stato di gioco s
<U(p1,s), U(p2 ,s), …, U(pn ,s)>
Esempio: in Reversi/Othello si possono calcolare il numero di
pezzi per ogni giocatore
Algoritmo:
Depth-first search come Minimax
Fai risalire la n-tupla che massimizza U(pn) quando muove pn
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
36
Algoritmo MaxN: esempio
1
(7,3,6)
Minimax è un caso speciale di
MaxN in cui: a) N = 2, b) la
funzione di valutazione
restituisce la tupla <x, -x>.
(1,7,2)
(7,3,6)
2
2
(6,5,4)
(1,7,2)
(7,3,6)
3
3
3
3
(3,1,8)
(2,8,1)
(1,7,2)
(5,6,3)
Intelligenza Artificiale - Game Playing
(6,5,4)
(8,5,4)
(7,3,6)
Tiziano Papini - 2011
(4,2,7)
(3,1,8)
37
Algoritmo Paranoid
Idea: gli altri giocatori sono come 1 solo “macro-avversario”
2 giocatori: MAX (noi), MIN (avversari)
Valutazione dei nodi dell’albero:
Quando tocca a MAX si massimizza l’utilità di MAX
Quando tocca ad 1 avversario si minimizza l’utilità di MIN
Paranoid permette di rimuovere l’assunzione di non-accordo
tra i giocatori
Paranoid ha minori tempi di esecuzione
Paranoid si può sposare meglio con Alfa-Beta pruning
Paranoid non dà la garanzia di MaxN di che MAX massimizzi
il suo utile finale
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
38
Branching Factor:
comunque un problema
Il primo software capace di vincere a Go contro il campione del
mondo vincerà 2.000.000 $!
b è di oltre 350 non ci sono algoritmi o euristiche che
tengano: non si usa la ricerca per Go
Negli scacchi uomo e macchine sono alla pari eppure la
velocità di calcolo non è la stessa.
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
39
Alcuni risultati nel Game Playing
OTHELLO: Logistello (Michael Buro) nel 1997 sconfigge il
campione del mondo Takeshi Murakami per 6-0
DAMA: Chinook (Jonathan Schaeffer) nel 1994 diventa
campione per forfait di Marion Tinsley (campione mondiale
dal ’54 al ‘92, mai sconfitto dal ‘50 al ‘95).
BACKGAMMON: TD-gammon (Gerry Tesauro) è oggi
considerato tra i 10 migliori giocatori al mondo
BRIDGE: GIB (M.Ginsberg) è al livello di un amatore
POKER e GO: pessime performance (per motivi diversi)
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
40
La vera sfida
La vera sfida è competere con l’uomo ad armi pari.
L’uomo non usa la ricerca come metodo principale:
Prima parte dai GOAL (non ben definiti)
A ritroso costruisce SOTTOGOAL
Pianifica: azioni subgoal goal
Usa la ricerca per raggiungere obiettivi locali
Ha capacità “istintive” di escludere le scelte inutili: riduce
enormemente il branching factor
Come interfacciare ragionamento goal-oriented e search?
Intelligenza Artificiale - Game Playing
Tiziano Papini - 2011
41
Giocatore di Scacchi
Elaboratore
euristico sui
nodi
DataBase
aperture
DataBase
chiusure
Intelligenza Artificiale - Game Playing
Motore
Ricerca
quiescenza
Motore
minimax
+ alfa-beta
pruning
Gestore del
Tempo
Tiziano Papini - 2011
Elaboratore
mosse forzate
Gestore del
livello di taglio
Gestore della
memoria
42