Gennaio – Aprile 2007
Intelligenza Artificiale
marco ernandes
email: [email protected]
Game Playing
Intelligenza Artificiale - Game Playing
1/42
Intelligenza Artificiale - Game Playing
2/42
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/42
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/42
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/42
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/42
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/42
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/42
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/42
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/42
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/42
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/42
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/42
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/42
Algoritmo Minimax
MAX
3
-4
MIN
1
MAX
-4
MIN
-4
1
1
6
3
-4
-4
1 -4
Intelligenza Artificiale - Game Playing
3
-5
-5
In realtà è
depth-first!
3
4
1
5
-2
3 -2 -1
4
-1
5
3
5
1
4
4
1
6
1
-4
-2 -4
15/42
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/42
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/42
;
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/42
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/42
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/42
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/42
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/42
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/42
¹
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
24/42
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
25/42
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,ß)
}
return v
Intelligenza Artificiale - Game Playing
26/42
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
0
2 α=1
ß=
ß=2
ß=0
2
α=1
ß=
MIN
0
27/42
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/42
»
Efficacia della potatura α-ß
Dipende dall’ordinamento dei nodi



O(b½m)
Ordinamento migliore:
Ordinamento pessimo: O(bm)
Ordinamento medio: O(b¾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
Un buon
 Alfa-beta: n° nodi:
ca. 380.000.000.000
calcolatore
(106 mosse/sec)
Fasi centrali (b ≈ 18, poniamo m = 10)
sceglie una mossa
 Minimax: n° nodi: ca. 3.500.000.000.000
in 4 minuti!
 Alfa-beta: n° nodi:
ca. 2.600.000.000
Intelligenza Artificiale - Game Playing
29/42
»
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
30/42
»
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/42
»
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/42
»
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
33/42
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/42
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
Quic kTime™ e un
dec ompres sore TIFF (Non c ompres so)
s ono nec es sari per visualizz are ques t'immagine.
35/42
Algoritmo MaxN
Assunzioni:



I giocatori muovono a turni
Ogni giocatore mira a massimizzare il proprio utile
Ogni giocatore è indifferente all’utile degli avversari
Funzione di valutazione:



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
36/42
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,1,8)
3
3
3
(2,8,1)
(1,7,2)
(5,6,3)
Intelligenza Artificiale - Game Playing
(6,5,4)
(8,5,4)
(7,3,6)
(4,2,7)
(3,1,8)
37/42
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 nonaccordo 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
38/42
»
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
39/42
»
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
40/42
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
41/42
»
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
42/42