Gennaio – Aprile 2006
Intelligenza Artificiale
marco ernandes
email: [email protected]
Game Playing
Intelligenza Artificiale - Game Playing
1/38
Intelligenza Artificiale - Game Playing
2/38
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
3/38
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
4/38
Esempio di problema di Planning
Stato iniziale: SILENZIO  MANI_PULITE
Goal: PULITO  CENA_PRONTA  REGALO
Operatori:
 azione cucina:
 precondition MANI_PULITE  effect CENA_PRONTA
 azione incarta:
 precondition SILENZIO  effect REGALO
 azione butta_spazzatura:
 effect PULITO  not MANI_PULITE
 azione aspira:
 effect PULITO  not SILENZIO
Intelligenza Artificiale - Game Playing
5/38
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
6/38
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
7/38
Tipologie di Giochi
Classificazione 1  condizioni di scelta:

Giochi con informazione “perfetta”


Gli stati del gioco sono completamente espliciti per gli agenti.
Giochi con informazione “imperfetta”

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
8/38
Tipologie di Giochi
Informazione
Perfetta
Informazione
Imperfetta
Giochi
deterministici
Scacchi, Go,
Dama, Otello,
Forza4
MasterMind
(è un gioco o un puzzle?)
Giochi
stocastici
Backgammon,
Monopoli
Scarabeo,
Bridge, Poker…
(giochi di carte)
Risiko
Intelligenza Artificiale - Game Playing
9/38
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
L’uomo agisce in un
ambiente continuo,
dinamico, sequenziale,
a scelte sincroniche e
con informazione
imperfetta.
10/38
Giochi e Problem Solving (1)
Si può analizzare un gioco come un problema di
search, anche se multiagente?
ES: gli scacchi





X
X0
SCS(x)
T(x)
g
= tutti gli stati della scacchiera
= lo stato di inizio gioco
= le mosse legali ad uno stato
= scacco matto
= numero di mosse
Qualcosa non va! …
Intelligenza Artificiale - Game Playing
11/38
Giochi e Problem Solving (2)
g non è determinante
SCS(x) è sotto controllo solo per metà delle
mosse e spesso non è reversibile
T(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
12/38
Giochi e Problem Solving (3)
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
13/38
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
14/38
Algoritmo Minimax
3
MAX
MIN
-4
-1
MAX
MIN
-4
-1
3
-4
-4
-4 -2 0 -1 -4
Intelligenza Artificiale - Game Playing
-5
In realtà è
depth-first!
3
3
1
5
-2
-1
-5 4 3 -2 -1 3
4
5
5 4
4
1
1
6 1
-4
-2 -4
15/38
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
16/38
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
17/38
;
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
35100 = 2,5 x 10154
In problemi reali non si può usare.
E’ utile solo come base teorica.
Intelligenza Artificiale - Game Playing
18/38
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
19/38
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
20/38
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
21/38
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
22/38
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
23/38
¹
Alfa-Beta pruning
(McCarthy ’56)
Si può ottenere la mossa MAX senza osservare
esaustivamente l’albero, perché:
1) DATO U(n0 )=a  utilità minimax del nodo n0 su cui sceglie MAX
2) affinchè la scelta conclusiva di MAX sia  a almeno 1 nodo n (“fratello”
di n0) deve avere U(n)>a
3) affinchè U(n)>a per ogni nodo n’ successore di n deve valere h(n’)>a
4) QUINDI: appena un successore di n possiede U(n’) ≤ a il sottoalbero
restante può essere potato
“Stesso” discorso vale per MIN, quindi…
Intelligenza Artificiale - Game Playing
24/38
Alfa-Beta pruning (2)
Nella ricerca nell’albero:

Si usano 2 variabili:


a = valore maggiore di MAX al tempo attuale
b = valore minore di MIN al tempo attuale

Calcolando MAX si pota il sottoramo di un nodo se un suo
figlio ha valore inferiore ad a; se invece tutti i figli hanno
valore maggiore il minimo diventa a

Calcolando MIN si pota il sottoramo di un nodo se un suo
figlio ha valore maggiore a b; se invece tutti i figli hanno
valore minore il massimo diventa b
Intelligenza Artificiale - Game Playing
25/38
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(figlio, α, ß))
if v ≤ α
then return v
ß  min(v,ß)
}
return v
Intelligenza Artificiale - Game Playing
26/38
Alfa-Beta pruning: simulazione
a = -
b=
1
1
1
1
a=-
b=1
b=
1
2
-1
2
a=-
b=1
a=-
b=1
2
a=1
b=
0
2
a=1
b=
MAX
a=-
b=
b=1
a=-
a=1
b=
-1
a=-
a=1
b=
4
Intelligenza Artificiale - Game Playing
-3
0
-3
a=1
b=
-3
a=1
b=
02
MIN
MAX
a=1
b=2
b=0
b=
2
MIN
0
27/38
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
28/38
»
Efficacia della potatura a-b
Dipende dall’ordinamento dei nodi
Ordinamento migliore: O(b½m)
 Ordinamento pessimo: O(bm)
 Ordinamento medio: O(b¾m)

Node
Ordering
Negli scacchi:


Minimax: n° nodi (d=10)  > 100 000 000 000 000
Alfa-beta: n° nodi (d=10)  310 000 000
da 2510 a 256,1
Intelligenza Artificiale - Game Playing
29/38
»
Ancora “problemini”
Problema dell’orizzonte
Eccessiva fiducia nell’euristica
Eventi stocastici
Branching Factor e potenza di calcolo
Intelligenza Artificiale - Game Playing
30/38
»
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
31/38
»
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
32/38
»
Eventi stocastici
Se in un gioco inseriamo la sorte, minimax può 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
33/38
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
34/38
»
Branching Factor
Il primo software capace di vincere a Go contro il campione
del mondo vincerà 2000000 $!
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
35/38
»
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).
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
36/38
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
37/38
»
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
Elaboratore
mosse forzate
Gestore del
livello di taglio
Gestore della
memoria
38/38