Algoritmi genetici e programmazione genetica Roberto Navigli Apprendimento Automatico: Algoritmi Genetici e Programmazione Genetica Cap. 9 [Mitchell] Cap. 4.3 [Russel & Norvig]
Algoritmi genetici e programmazione genetica Roberto Navigli Algoritmi motivati dallanalogia con levoluzione biologica –Lamarck: le specie trasmutano nel tempo sulla base di come usano le parti del loro corpo (es. giraffa allunga il collo per mangiare foglie) –Darwin e Wallace: variazioni consistenti ereditabili si osservano negli individui di una popolazione; selezione naturale dei più sani (esistono giraffe con collo più o meno alto: solo alcune sopravvivono) –Mendel e la genetica: esiste un meccanismo per ereditare tratti genetici A partire da un insieme di ipotesi (popolazione), generano successori delle ipotesi producendo perturbazioni su di esse che si spera producano risultati migliori Algoritmi Genetici
Algoritmi genetici e programmazione genetica Roberto Navigli Caratteristiche degli AG Gli AG possono effettuare ricerche nello spazio di ipotesi i cui elementi interagiscono in modo complesso (ovvero laddove è difficile valutare limpatto di un singolo elemento) Gli AG sono ottimizzatori, non sono veri apprendisti Gli AG sono facilmente parallelizzabili (si avvantaggiano del basso costo dellhardware)
Algoritmi genetici e programmazione genetica Roberto Navigli Una Funzione Fitness che assegna un valore di benessere a ogni ipotesi h Una Soglia di Fitness che specifica un criterio di terminazione p numero di ipotesi da includere nella popolazione r la frazione della popolazione che deve essere rimpiazzata dalloperatore di incrocio (crossover) m il tasso di mutazione Algoritmi Genetici
Algoritmi genetici e programmazione genetica Roberto Navigli Algoritmo Tipo GA(Fitness, Soglia-Fitness, p, r, m) Inizializza: P = insieme di p ipotesi –generate a caso o specificate a mano Valuta: per ogni h in P, calcola Fitness(h) While max h Fitness(h) < Soglia-Fitness –Seleziona: seleziona (1-r)·p membri di P da aggiungere a una nuova generazione P S –Crossover: Seleziona r·p/2 coppie di ipotesi da P Per ogni coppia (h 1, h 2 ) produci due successori (offspring) applicando loperatore di crossover –Muta: Inverti un bit a caso di m% individui di P S scelti a caso –Aggiorna: P = P S –Valuta: per ogni h in P, calcola Fitness(h) Return argmax h P Fitness(h)
Algoritmi genetici e programmazione genetica Roberto Navigli Rappresentazione delle Ipotesi (1) La rappresentazione di base in GA è la stringa binaria (cromosoma) –La mappatura dipende dal dominio e dal progetto La stringa di bit rappresenta una ipotesi Elementi dellipotesi (es. clausole di una regola, caratteristiche, ecc.) sono rappresentati ciascuno da una sottostringa che si trova in una posizione specifica (se la stringa ha lunghezza fissa)
Algoritmi genetici e programmazione genetica Roberto Navigli Rappresentazione delle Ipotesi (2) Esempio 1: rappresentiamo lipotesi (Outlook = Overcast Rain) (Wind = Strong) con: Outlook Wind Esempio 2: rappresentiamo lipotesi IF Wind = Strong THEN PlayTennis = yes con: Outlook Wind PlayTennis Esempio 3: rappresentiamo unarchitettura di rete neurale definita da un grafo codificato mediante una stringa binaria
Algoritmi genetici e programmazione genetica Roberto Navigli Stringhe inizialiMaschera di crossover Successori (offspring) Single-point crossover Two-point crossover Uniform crossover Point mutation Operatori per gli Algoritmi Genetici Gli operatori di crossover creano dei discendenti di una coppia di ipotesi mescolando le caratteristiche dei due genitori Loperatore di mutazione crea un discendente da unipotesi invertendo un bit scelto a caso Altri operatori specializzati possono essere definiti sulla base del problema specifico
Algoritmi genetici e programmazione genetica Roberto Navigli Selezione delle ipotesi migliori (fittest hypotheses) La selezione degli (1-r)·p membri avviene sulla base della probabilità: Può causare crowding (alcuni individui tendono a prendere il sopravvento, riducendo drasticamente la diversità della popolazione)
Algoritmi genetici e programmazione genetica Roberto Navigli Ricerca nello spazio delle ipotesi Gli AG effettuano ricerche randomizzate sullo spazio delle ipotesi –Differente rispetto agli altri metodi di apprendimento (es. BackPropagation si muove molto più lentamente da unipotesi allaltra) E meno probabile che gli AG cadano in un minimo locale Il crowding è una difficoltà reale: alcuni individui con buon fitness si riproducono velocemente e copie simili a queste prendono il sopravvento sulla popolazione, riducendone la diversità –Soluzione: creare perturbazioni o alterazioni della funzione di selezione Tempi di apprendimento lunghi (necessario hw ad hoc) Prestazioni paragonabili a C4.5
Algoritmi genetici e programmazione genetica Roberto Navigli Risolvere il problema del crowding Tournament selection (selezione per torneo): –Scegli h 1 e h 2 casualmente con probabilità uniforme –Con probabilità p, seleziona lipotesi migliore delle due (la peggiore con probabilità 1-p) –Procede con altri gruppi di 2 (o, più in generale, di k elementi) sottoposti a selezione per torneo Rank selection (selezione per grado): –Ordina tutte le ipotesi per fitness –La probabilità di selezione è proporzionale al rank
Algoritmi genetici e programmazione genetica Roberto Navigli GABIL (De Jong et al., 1993) Un sistema per apprendere insiemi di regole proposizionali Ogni ipotesi corrisponde a un insieme di regole La rappresentazione a stringhe di ciascuna regola viene concatenata alle altre –La lunghezza complessiva della stringa cresce con laumentare delle regole IF a 1 = T a 2 = F THEN c = T; IF a 2 = T THEN c = F a 1 a 2 c a 1 a 2 c –Fitness(h) = correct(h) 2 Correct(h) è il numero di esempi di addestramento correttamente classificati da h –Point mutation standard e operatore crossover che preservi la ben formatezza dellipotesi
Algoritmi genetici e programmazione genetica Roberto Navigli GABIL: operatore di crossover Loperatore di crossover è unestensione del two-point crossover Date due ipotesi h 1 e h 2 si seleziona per h 1 un intervallo di bit (m 1, m 2 ) Si calcola la distanza d 1 (d 2 ) di m 1 (m 2 ) dal confine della regola immediatamente alla sua sinistra Per h 2 si sceglie un intervallo di bit tale che preservi le stesse distanze d 1 e d 2 Esempio: a 1 a 2 c a 1 a 2 c a 1 a 2 c h 1 : h 2 : ottenendo come offspring: h 3 : h 4 : [ ] d 1 = 1, d 2 = 3
Algoritmi genetici e programmazione genetica Roberto Navigli GABIL: estensioni Aggiungiamo due operatori specializzati da applicare con una certa probabilità: –AggiungiAlternativa (AA) Generalizza il vincolo su un attributo cambiando uno 0 in 1 nella sottostringa corrispondente allattributo –EliminaCondizione (EC) Generalizzazione ancora più drastica: rimpiazza tutti i bit di un attributo con 1 Possiamo anche aggiungere due bit alla fine di ogni ipotesi, AA e EC, per indicare se su quellindividuo si potranno applicare i due operatori oppure no –Questi bit possono essere modificati da una generazione allaltra come tutti gli altri mediante crossover e mutazione –Anche la strategia di apprendimento evolve! -> Meta-Programmazione Genetica!
Algoritmi genetici e programmazione genetica Roberto Navigli Esempio: problema del commesso viaggiatore Il commesso viaggiatore deve visitare ogni città nella sua zona esattamente una volta e quindi ritornare al punto di partenza. Dato il costo di viaggio tra le città, quale itinerario dovrebbe seguire per minimizzare il costo del tour? TSP NP-Complete
Algoritmi genetici e programmazione genetica Roberto Navigli TSP: Rappresentazione, inizializzazione, valutazione Un vettore v = (i 1 i 2 … i n ) rappresenta un tour (v è una permutazione di {1,2,…,n}) Inizializzazione: campione casuale di permutazioni di {1,2,…,n} Il fitness f di una soluzione è linverso del costo del tour corrispondente
Algoritmi genetici e programmazione genetica Roberto Navigli Using Genetic Programming To Evolve Soccer Teams (da Gamasutra.com)
Algoritmi genetici e programmazione genetica Roberto Navigli Applicazioni Nei campi più svariati: –Chimica: trovare molecole simile ad altre già note –Astronomia: calcolare la curva di rotazione di una galassia –Biologia molecolare: identificare sequenze di aminoacidi –Ingegneria aerospaziale: quale forma per lala di un aereo supersonico? –Finanza: predire le prestazioni di prodotti finanziari nel tempo –Videogiochi: apprendere un giocatore –Matematica: trovare la soluzione di unequazione –Algoritmi: trovare algoritmi efficienti che risolvono un dato problema (-> programmazione genetica) –Crittografia: trovare la soluzione di un problema crittografico –Robotica: es. RoboCup, apprendere un robot che vinca in una competizione –Pattern recognition/Data mining: sistemi che apprendono grammatiche, conoscenza lessicale e semantica, ecc.
Algoritmi genetici e programmazione genetica Roberto Navigli Altre tecniche di ottimizzazione Hill climbing –Simile a GA, ma più sistematico e meno casuale: inizia con una soluzione casuale, quindi muta la stringa e mantiene quella delle due che ha il fitness più altro. Lalgoritmo termina quando non si trova alcuna mutazione che può migliorare il fitness della soluzione attuale. Simulated annealing –Lidea proviene dal processo industriale di fusione in cui il materiale viene riscaldato fino a un punto critico per ammorbidirlo, quindi gradualmente raffreddato per eliminare difetti nella sua struttura cristallina, producendo unorganizzazione degli atomi più stabile e regolare
Algoritmi genetici e programmazione genetica Roberto Navigli "It occurred to me that perhaps you could combine genetic algorithms with the basic thrust of AI, which was to get computers to do things automatically - that perhaps you could evolve a population of programs." - John Koza (1998)
Algoritmi genetici e programmazione genetica Roberto Navigli Programmazione Genetica Metodologia di programmazione evolutiva in cui gli individui nella popolazione in evoluzione sono programmi informatici La PG utilizza la stessa struttura algoritmica degli AG I programmi manipolati dalla PG sono rappresentati da alberi che corrispondono agli alberi sintattici (parse tree) dei programmi
Algoritmi genetici e programmazione genetica Roberto Navigli PG: un esempio Supponiamo che il nostro programma calcoli la funzione: Il suo albero sintattico è il seguente: Simboli terminali: x, y e costanti (es. 2) Funzioni: sen, +, radice, quadrato
Algoritmi genetici e programmazione genetica Roberto Navigli Crossover nella PG
Algoritmi genetici e programmazione genetica Roberto Navigli Passi preparatori per la PG Determinare linsieme dei terminali ammessi Determinare linsieme delle funzioni Determinare la misura di fitness: –Il fitness di un singolo programma (individuo) è determinato dallaccuratezza del programma eseguito su un insieme di addestramento Determinare i parametri per il run Determinare il criterio per terminare un run
Algoritmi genetici e programmazione genetica Roberto Navigli Esempio: Il problema dei blocchi (Koza, 1992) Vogliamo sviluppare un algoritmo che prenda in input qualsiasi configurazione iniziale di blocchi distribuiti a caso tra una pila e il tavolo e li inserisca correttamente nella pila nellordine corretto (per leggere: UNIVERSAL) Azioni permesse: –Il blocco in cima alla pila può essere spostato sul tavolo –Un blocco sul tavolo può essere spostato in cima alla pila
Algoritmi genetici e programmazione genetica Roberto Navigli Il problema dei blocchi (Koza, 1992) La scelta della rappresentazione può influenzare la facilità di risolvere il problema Simboli terminali: –CS (current stack) = denota il blocco in cima alla pila o F se non cè nulla –TB (top correct block) = nome del blocco in cima alla pila tale che tutti i blocchi sulla pila sono nellordine corretto –NN (next necessary) = nome del prossimo blocco richiesto sopra TB sulla pila per poter leggere universal o F se abbiamo finito
Algoritmi genetici e programmazione genetica Roberto Navigli Il problema dei blocchi (Koza, 1992) Funzioni: –(MS x): (move to stack), se il blocco x è sul tavolo, sposta x in cima alla pila e restituisce il valore T. Altrimenti non fa niente e restituisce il valore F –(MT x): (move to table), se il blocco x è da qualche parte nello stack, sposta il blocco che è in cima allo stack sul tavolo e restituisce il valore T. Altrimenti restituisce F. –(EQ x y): (equal), restituisce T se x è uguale a y e restituisce F altrimenti –(NOT x): restituisce T se x = F, altrimenti restituisce F –(DU x y): (do until) esegue lespressione x ripetutamente finché lespressione y restituisce il valore T
Algoritmi genetici e programmazione genetica Roberto Navigli Il programma appreso Allenato su 166 configurazioni iniziali di blocchi Il fitness di qualsiasi programma è dato dal numero di esempi risolti dallo stesso Usando una popolazione di 300 programmi, si trova il seguente programma dopo 10 generazioni che risolvono i 166 problemi: (EQ (DU (MT CS)(NOT CS)) (DU (MS NN)(NOT NN)) ) Per approfondire: Koza, John R Genetic Programming: On the Programming of Computers by Means of Natural Selection. Cambridge, Massachusetts: The MIT Press.
Algoritmi genetici e programmazione genetica Roberto Navigli Learning Monna Lisa (!) 0) Inizializza una stringa di DNA casuale per la renderizzazione di poligoni (50 poligoni massimo) 1) Copia la sequenza attuale e mutala leggermente 2) Usa il nuovo DNA per renderizzare i poligoni su tela 3) Confronta la tela con limmagine sorgente 4) Se la nuova immagine sembra più somigliante allimmagine sorgente rispetto alla precedente, sovrascrivi il nuovo DNA con il precedente 5) Ripeti dal passo 1
Algoritmi genetici e programmazione genetica Roberto Navigli
Algoritmi genetici e programmazione genetica Roberto Navigli
Algoritmi genetici e programmazione genetica Roberto Navigli
Algoritmi genetici e programmazione genetica Roberto Navigli
Algoritmi genetici e programmazione genetica Roberto Navigli
Algoritmi genetici e programmazione genetica Roberto Navigli Apprendere un programma per giocare a Snake Obiettivo: Trova un programma che mangi il maggior numero possibile di pezzi di cibo Terminali: (avanti), (sinistra), (destra) Funzioni: seCiboAvanti, sePericoloAvanti, sePericoloSinistra, sePericoloDestra, eseguiEntrambe Fitness: numero di pezzi di cibo mangiati
Algoritmi genetici e programmazione genetica Roberto Navigli Esempio di programma appreso (seCiboAvanti (sePericoloSinistra (right)(sePericoloDestra (avanti)(sePericoloAvanti (sinistra)(avanti)))) (sePericoloAvanti (sePericoloSinistra (destra)(sinistra)) (sePericoloSinistra (sePericoloDestra (avanti)(destra)) (eseguiPrimaUnaPoiLaltro (sinistra)(destra)))))
Algoritmi genetici e programmazione genetica Roberto Navigli Programmazione Genetica per i Videogiochi Snake: Mancala: Vari giochi: Sipper et al.Attaining Human-Competitive Game Playing with Genetic Programming, IEEE Transactions on Systems, Man and Cybernetics -- Part C, 2005