Gennaio – Aprile 2007 Intelligenza Artificiale Game Playing marco ernandes email: [email protected] Intelligenza Artificiale - Game Playing 1/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 2/42 Intelligenza Artificiale - Game Playing 3/42 Una visione d’insieme Esempio di problema di Planning Partendo dal Problem Solving Introduciamo nel dominio del problema altri agenti in competizione Game Playing Stato iniziale: SILENZIO ! MANI_PULITE Goal: PULITO ! CENA_PRONTA ! REGALO Complichiamo: stati (congiunzioni di fatti), e operatori (legami tra fatti-condizioni e fatti-effetti, non tra stati) ! Planning 4/42 Intelligenza Artificiale - Game Playing 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 Teoria dei Giochi 5/42 I giochi nell’IA e non solo Von Neumann & Morgenstern (1944) M. Minsky (1968): Theory of Games and Economic Behaviour “i giochi non vengono scelti perché sono chiari e semplici, ma perché ci danno la massima complessità con le minime strutture iniziali” 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 Pungolo Scientifico ! ! ! Mondo dei Giochi a + giocatori ! 6/42 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 Tipologie di Giochi Classificazione 1 " condizioni di scelta: ! ! ! 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 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 ! Giochi stocastici ! ! Gli stati sono determinati unicamente dalle azioni degli agenti Gli stati sono determinati anche da fattori esterni (es: dadi) 8/42 Intelligenza Artificiale - Game Playing Altre Classificazioni Intelligenza Artificiale - Game Playing 9/42 Giochi e Problem Solving (1) Numero giocatori (tutti multiagenti!) Si può analizzare un gioco come un problema di search, anche se multiagente? Politica del turno di giocata ES: gli scacchi ! ! 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. ! ! ! ! ! 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! … 10/42 Intelligenza Artificiale - Game Playing 11/42 Giochi e Problem Solving (2) Giochi e Problem Solving (3) g non è determinante Per inserire un gioco ad informazione perfetta in uno schema classico di search si considera che: SCS(x) è sotto controllo solo per metà delle mosse e spesso non è reversibile ! ! T(x) non è sufficiente per definire la terminazione ! ! Esiste un avversario che va simulato L’avversario minimizza il nostro utile L’albero di ricerca si sviluppa su 2 giocatori: Serve una funzione di utilità sulla terminazione Es: vittoria = +1, patta = 0, sconfitta = -1 ! MAX(noi) e MIN (l’avversario) L’obiettivo è raggiungere uno stato terminale di quest’albero con la massimizzazione dell’utilità*. Obiettivo dell’agente: definire una strategia che raggiunga T(x)=+1 *(se l’avversario inizia per primo: lui diventa MAX e noi MIN con lo scopo di minimizzare l’utilità) Intelligenza Artificiale - Game Playing 12/42 Algoritmo Minimax Algoritmo Minimax (Von Neumann ’28, Shannon ‘50) Nei giochi ad informazione perfetta si può ottenere la strategia perfetta con una ricerca esaustiva. MAX 3 MIN -4 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 13/42 Intelligenza Artificiale - Game Playing 14/42 MAX 1 -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 Proprietà di Minimax > MAX = true, MIN = false > MINIMAX(X, MAX) E’ completo in grafi finiti MINIMAX(nodo, agente) E’ ottimale se MIN è ottimale (e se ci sono più avversari). figli[] = SCS(nodo, agente) for all (figli){ if(END_test(figlio) == true) { figlio.utilità = UTILITY_test(figlio) } else figlio.utilità = MINIMAX(figlio, !agente) Se MIN non è ottimale non si può garantire l’ottimalità, ma… if(agente==MAX && figlio.utilità > best) best = figlio.utilità if(agente==MIN && figlio.utilità < best) best = figlio.utilità } return best Ha complessità spaziale O(bm) perché la ricerca è in profondità. 16/42 Intelligenza Artificiale - Game Playing Intelligenza Artificiale - Game Playing 17/42 ; Un “problemino” di Minimax Negli scacchi: Minimax + taglio di profondità "Unfortunately, the number of possible positions in the chess tree surpasses the number of atoms in the Milky Way." Claude Shannon Limitare la ricerca ad una profondità max (dipendente dalla memoria e dal tempo disponibile) In generale: complessità temporale = O(bm) Come valutare l’utilità dei nodi foglia? Negli scacchi ! 35100 = 2,5 x 10154 ! In problemi reali non si può usare. E’ utile solo come base teorica. Intelligenza Artificiale - Game Playing Serve una funzione di valutazione. Cioè un’euristica! Far risalire fino alla radice le stime usando minimax ed effettuare la scelta 18/42 Intelligenza Artificiale - Game Playing 19/42 Euristiche per Giochi Un “problemino” del taglio 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) Es. ottenuti da learning, ma come definire i TARGET? Intelligenza Artificiale - Game Playing 20/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 ! Vantaggio di pezzi e vantaggio di dame Prof. 0 Funzioni non-lineari ! Euristica possibile per la Dama: Prof. 11 Prof. 18 Posizioni apparentemente buone possono essere perdenti Intelligenza Artificiale - Game Playing 21/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 22/42 Intelligenza Artificiale - Game Playing 23/42 ? Alfa-Beta pruning Alfa-Beta pruning (2) (McCarthy ’56) Nella ricerca nell’albero: Si può ottenere la mossa MAX senza osservare esaustivamente l’albero, perché: ! Si usano 2 variabili: ! 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)> ! ! 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 ß 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 ! = valore maggiore di MAX al tempo attuale ß = valore minore di MIN al tempo attuale Alfa-Beta Pruning: Pseudo Codice Alfa-Beta pruning: simulazione 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 25/42 Intelligenza Artificiale - Game Playing 1 MIN-VALUE (nodo, !, ß) !=1 1 !=-" ß=" 1 MAX !=-" ß ß=" =1 !=-" !=1 ß=" 0 2 !=-" ß=1 -3 0 !=1 ß=" !=1 ß=" MIN MAX if CUTOFF-TEST(nodo) then return EVAL(nodo) v # + " 1 for all figli in SCS(nodo) { v !=-" ß=" ß=1 -1 !=1 ß=" 2 !=-" ß=1 -3 !=1 ß=" 0 2 !=1 ß=" ß=2 ß=0 MIN # min(v, MAX-VALUE(s, !, ß)) if v " ! then return v 1 ß # min(v,ß) 2 -1 2 4 -3 2 0 } return v Intelligenza Artificiale - Game Playing 26/42 Intelligenza Artificiale - Game Playing 27/42 » Alfa-Beta pruning Efficacia della potatura !-ß Caso Generale Dipende dall’ordinamento dei nodi ! n0 n’ Se n0 è migliore di n’ allora n’ non verrà mai raggiunto durante il gioco e quindi tutto il sottoramo corrispondente può essere potato Intelligenza Artificiale - Game Playing ! ! » Node Ordering Negli scacchi (considerando il caso medio): ! ! 28/42 Ordinamento migliore: O(b"m) Ordinamento pessimo: O(bm) Ordinamento medio: O(b#m) Fasi di apertura (b ! 35, poniamo m = 10) Un buon ! Minimax: n° nodi: ca. 2.700.000.000.000.000 calcolatore ! Alfa-beta: n° nodi: ca. 380.000.000.000 (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 Problema dell’orizzonte Eccessiva fiducia nell’euristica Eventi stocastici Giochi multiplayer Un lungo periodo di quiescenza può precedere un rapido ed inevitabile peggioramento dell’utilità Branching Factor e potenza di calcolo Se il taglio in profondità è avvenuto in questa “zona”, valuta positivamente uno stato che è invece disastroso Problema tutt’ora irrisolto! Intelligenza Artificiale - Game Playing 30/42 Intelligenza Artificiale - Game Playing 31/42 » » Eccessiva fiducia nell’euristica 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 Una valutazione molto irregolare tra nodi “fratelli” è rischiosa, soprattutto usando Alpha-Beta Problema: la complessità cresce molto " O(bm dm) Servirebbe un’ulteriore ricerca nel sottoramo per accertarsi della bontà della valutazione Alpha-Beta Pruning? 32/42 Intelligenza Artificiale - Game Playing Intelligenza Artificiale - Game Playing ExpectiMin / ExpectiMax Giochi multi-player 5.39 Possiamo generalizzare gli algoritmi per giochi “2player-perfect-information”: 5.39 0.3 0.56 0.7 2.8 0.3 ! –1.4 6.5 Esempio 1: “la dama cinese” 1.4 ! 0.3 2.8 0.7 0.3 0 5 6.5 0.7 0.3 0 4 8.3 0.7 0.3 3 8 9 8 –1.4 5.5 0.7 0.3 0.7 0.3 2 7 8.1 0.7 0.3 7 –5 1.4 0.7 0.3 6 9 0.7 0 2 6 giocatori muovono a turno ogni giocatore cerca di occupare completamente l’angolo opposto Esempio 2: “3-player Othello” ! ! 0 –3 3 5 0 –6 4 Requisito: non ci deve essere accordo tra i giocatori 0.7 ! 3.5 33/42 3 giocatori muovono a turno ogni giocatore deve “conquistare” il massimo della scacchiera 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 Intelligenza Artificiale - Game Playing 35/42 Algoritmo MaxN Algoritmo MaxN: esempio Assunzioni: ! ! ! I giocatori muovono a turni Ogni giocatore mira a massimizzare il proprio utile Ogni giocatore è indifferente all’utile degli avversari 1 (1,7,2) Funzione di valutazione: ! ! ! ! Depth-first search come Minimax Fai risalire la n-tupla che massimizza U(pn) quando muove pn Intelligenza Artificiale - Game Playing 36/42 (7,3,6) 2 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: ! (7,3,6) Minimax è un caso speciale di MaxN in cui: a) N = 2, b) la funzione di valutazione restituisce la tupla <x, -x>. 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) (6,5,4) (8,5,4) (7,3,6) (3,1,8) (4,2,7) Intelligenza Artificiale - Game Playing 37/42 » Branching Factor: comunque un problema 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 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 La vera sfida OTHELLO: Logistello (Michael Buro) nel 1997 sconfigge il campione del mondo Takeshi Murakami per 6-0 La vera sfida è competere con l’uomo ad armi pari. 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) 40/42 Intelligenza Artificiale - Game Playing » 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 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