Sei sulla pagina 1di 58

Fondamenti di Intelligenza

Artificiale
Ricerca Locale
Local search
Alfredo Milani thanks to Tom Lenaerts
Ricerca Locale e Ottimizzazione
Approcci visti finora: explorazione
sistematica dello spazio di ricerca
– il percorso (path) che porta al goal è la soluzione del
problema
MA, per alcuni problemi il path è irrilevante
– Es. Il Problema delle 8-regine(8-queens)

Altri approcci algoritmici


– Ricerca local o Local search

AI 1
Milani Pag.2
FondAI 09
Ricerca Locale e Ottimizzazione

Ricerca Locale/Local search= memorizza un


unico stato corrente e si muove negli stati
successori.
Vantaggi:
– Scarso utilizzo di memoria
– Trova spesso soluzioni ragionevoli in spazi di ricerca di
notevoli dimensioni o infiniti
Utile anche per problemi di ottimizzazione
pura.
– Trova lo stato “migliore” secondo una certa funzione
obiettivoEs. Sopravvivenza del migliore come metafora
dell’ottimizzazione
AI 1
Milani Pag.3
FondAI 09
Ricerca Locale e Ottimizzazione

AI 1
Milani Pag.4
FondAI 09
Ricerca Hill-climbing
Hill Climbing= Risalire la china
“è un ciclo che si muove verso la direzione
dei valori crescenti”
– Termina quando raggiunge una “cima” o massimo locale.
La ricerca hill climbing non guarda oltre I
vicini immediati dello stato corrente.
La ricerca hill-climbing sceglie in mdo
random tra l’insieme dei “migliori”
successori, se c’e’ piu’ di un “best”.
La r. hill-climbing è una sorta di greedy local
search
AI 1
Milani Pag.5
FondAI 09
Hill-climbing search

function HILL-CLIMBING( problem) return uno stato che è un massimo


locale
input: problem, un problema
local variables: current, il nodo corrente
neighbor, il nodo successore

current ← MAKE-NODE(INITIAL-STATE[problem])
loop do
neighbor ← uni dei successori di current con il valore più alto
if VALUE [neighbor] ≤ VALUE[current] then return STATE[current]
current ← neighbor

AI 1
Milani Pag.6
FondAI 09
Hill-climbing Esempio
Problema 8-queens (formulazione a stato
completo: tutte le regine piazzate in ciascuna
colonna con eventuali conflitti).
Funzione successore : muovi una singola
regina in un altro quadrato della stessa
colonna.
Funzione euristica h(n): il numero di
coppie di regine che si attaccano l’un l’altra
(direttamente o indirettamente).
Nessun conflitto≡goal ≡ h(n)=0
AI 1
Milani Pag.7
FondAI 09
Hill-climbing Esempio

a) b)

a) Stato con valore euristico h=17 con il volore


euristico per ciascun possibile successore.
b) Un minimo locale con h=1 nello spazio degli
stati del problema delle 8-queens.
AI 1
Milani Pag.8
FondAI 09
Problemi:

Ridge(cresta) = sequenza dimassimi locali difficile da


attraversare per algoritmi greedy
Plateaux(altipiano) = un’area dello spazio degli stati
dove la funzione di valutazione è piatta.

AI 1
Milani Pag.9
FondAI 09
Variazianti dell’Hill-climbing
Hill-climbing Stocastico
– Selezione random tra le mosse in salita.
– La probabilità di selezione può variare con la
“ripidità” (gradiente) della mossa che migliora.
First-choice hill-climbing
– Sorta di hill climbing stocastico in cui i successori
vengono generati in modo random finchè ne viene
trovata una migliore della corrente.
Random-restart hill-climbing
– La ripartenza ha lo scopo di evitare di restare
intrappolata nel massimi locali
AI 1
Milani Pag.10
FondAI 09
Simulated annealing

Esce dai massimi locali consentendo mosse “cattive”


cioè “peggiorative”.
– Idea: ma ne descresce gradualmente l’entità e la frequenza.
Origine tecnica metallurgica della “tempra” dei metalli
Analogia della temperatura dei fluidi:
– Vibrazione forte delle molecole (= temperatura alta).
– Vibrazione debole delle molegole (= temperatura più bassa).
Se T decresce in modo sufficientemente lento
raggiunge l’ottimo.
Applicazioni progetto schemi VLSI, schedulazione
orari compagnie aeree, etc.
AI 1
Milani Pag.11
FondAI 09
Simulated annealing e∆E /T

function SIMULATED-ANNEALING( problem, schedule) return uno stato soluzione


input: problem, un problema
schedule, una corrispondenza tra tempo e temperatura
local variables: current, il nodo corrente
next, il nodo successore
T, la “temperatura” controlla la probabilità dei passi peggiorativi “in discesa”

current ← MAKE-NODE(INITIAL-STATE[problem])
for t ← 1 to ∞ do
T ← schedule[t]
if T = 0 then return current
next ← un successore di current selezionato in modo random
∆E ← VALUE[next] - VALUE[current]
if ∆E > 0 then current ← next
E /T
e
else current ← next scelta effettuata con probabilità:

AI 1
Milani Pag.12
FondAI 09
Ricerca Local beam
Ricerca Local Beam: fascio di luce
Tiene traccia di k stati anzichè di uno soltanto
– Inizialmente: k stati random
– Next: determina tutti i successori dei k stati
– if uno qualsiasi dei successori è uno stato goal then finito
– else prendi i k migliori dai successori e ripeti.
Differenze principale con la random-restart search
– Informazione è condivisa tra k processi di ricerca.
Può soffrire del problema della mancanza di
diversità: variante stocastica: scegli k successori
proporzionalmente al successo dello stato

AI 1
Milani Pag.13
FondAI 09
Algoritmi Genetici
I GA possono essere visti come una variante
della local beam search con ricombinazione
sessuata

AI 1
Milani Pag.14
FondAI 09
Algoritmi Genetici
La rappresentazione di una soluzione, di un
individuo è un cromosoma, le sue
componenti sono dette geni, un insieme di
individui è una popolazione
32762411
cromosoma

individuo

AI 1
Milani Pag.15
FondAI 09
Algoritmi Genetici
variante della local beam search con ricombinazione
sessuata

AI 1
Milani Pag.16
FondAI 09
Algoritmi Genetici

function GENETIC_ALGORITHM( population, FITNESS-FN) return un individuo


input: population, un insieme di individui
FITNESS-FN, un funzione che valuta la qualità degli individui
repeat
new_population ← insieme vuoto
loop for i from 1 to SIZE(population) do
x ← RANDOM_SELECTION(population, FITNESS_FN) y←
RANDOM_SELECTION(population, FITNESS_FN)
child ← REPRODUCE(x,y)
if (small random probability) then child ← MUTATE(child )
aggiungi child a new_population
population ← new_population
until finchè un individuo ha raggiunto una fitness fissata o dopo un numero
prefissato di iterazioni
return l’individuo migliore di sempre

AI 1
Milani Pag.17
FondAI 09
Problemi di Esplorazione
Gli algoritmi visti sinora erano offline.
– Offline= la soluzione è determinata prima dell’esecuzione.
– Online = intercalare calcolo/ragionamento e azione
La ricerca online è
• necessaria in ambienti dinamici e
semidinamici
– È impossibible tenere in considerazione tutte le
contingenze possibili.
• Usata per problemi di esplorazione:
– Stati e azioni sconosciuti
– Ad es. Un robot in un ambiente nuovo

AI 1
Milani Pag.18
FondAI 09
Problemi di ricerca online
Conoscenza dell’Agente:
– ACTION(s): lista di azioni permesse nello stato s
– C(s,a,s’): funzione di costo della azione da s a s’ (dopo che s’ è determinato)
– GOAL-TEST(s)
Si assume che:
• un agente possa riconoscere gli stati precedenti
• le azioni sono deterministiche
• L’agente può valutare una euristica h(s)
ammissibile. Ad es. La distanza di Manhattan

AI 1
Milani Pag.19
FondAI 09
Problemi di ricerca online

Obiettivo: raggiungere un goal con il minimo


costo
Costo = costo totale del percorso effettuato dall’agente
– Rapporto competitivo=confronto del costo con il costo della
soluzione se lo spazio di ricerca fosse conosciuto
– Il costo può essere infinito nel caso che l’agente raggiunga
accidentamente un vicolo cieco

AI 1
Milani Pag.20
FondAI 09
Il paradosso dell’avversario

Si supponga che un avversario possa costruire lo


spazio degli stati mentre l’agente lo esplora
– Dopo aver visitato lo stato S c’e’ A. Ma qual’è il successivo?
– L’avversario costruisce dopo A uno spazi degli stati con fallimento .Es. loop

Nessun algoritmo può evitare vicoli ciechi in tutti gli


spazi degli stati.
AI 1
Milani Pag.21
FondAI 09
Agenti di ricerca Online

L’agente costruisce e mantiene una


mappa dell’ambiente.
– Aggiornata sulla base dell’input percepito.
– La mappa viene consultata per decidere la prossima
azione.

Notare differenza tra offline e online, ad esempio, con


A*: una versione A* online può espandere solo un
nodo in cui si trova fisicamente, e con un costo
aggiuntivo per “recarsi” nel luogo dell’espansione
AI 1
Milani Pag.22
FondAI 09
Ricerca Online Dept-First
function ONLINE_DFS-AGENT(s’) return una azione
input: s’, un percept che identifica lo stato corrente
static: result, una tabella indicizzata per azione e stato, inizialmente vuota
unexplored, una tabella che lista per ogni stato visitato, le azioni non ancora provate
unbacktracked, una tabella che lista per ogni stato visitato, I backtracking non ancora tentati
s, lo stato precedente, inizialmente nullo
a, l’azione precedente, inizialmente nulla

if GOAL-TEST(s’) then return stop


if s’ is a new state then unexplored[s’] ← ACTIONS(s’)
if s is not null then do
result[a,s] ← s’
aggiungi s in testa a unbackedtracked[s’]
if unexplored[s’] is empty then se non ci sono altre alternative dal nodo corrente
if unbacktracked[s’] is empty then return stop se non ci sono punti di backtrack fallisci
else a ← an action b such that result[b, s’]=POP(unbacktracked[s’])
torna all’ultimo stato che ha porta in s’
else a ← POP(unexplored[s’])
s ← s’
return a

AI 1
Milani Pag.23
FondAI 09
Online DF-search, esempio

Si consideri il problema del


labirinto su una griglia
3x3.
s’ = (1,1) è lo stato
iniziale
result, unexplored (UX),
unbacktracked (UB), …
sono vuoti
s e a sono vuoti

AI 1
Milani Pag.24
FondAI 09
Online DF-search, example

GOAL-TEST((,1,1))?
S’=(1,1) – Lo stato S è uno stato goal? falso
(1,1) è un nuovo stato?
– Vero
– ACTION((1,1)) -> UX[(1,1)]
– {RIGHT,UP}

s è null?
– Vero (inizialmente)
UX[(1,1)] è vuoto?
– Falso
POP(UX[(1,1)])->a
– A=UP
s = (1,1)
Return a
AI 1
Milani Pag.25
FondAI 09
Online DF-search, example

GOAL-TEST((2,1))?
S’=(2,1) – Lo stato S è uno stato goal? falso
(2,1) è un nuovo stato?
– Vero
– ACTION((2,1)) -> UX[(2,1)]
– {DOWN}

S s è null?
– falso (s=(1,1))
– result[UP,(1,1)] <- (2,1)
– UB[(2,1)]={(1,1)}
UX[(2,1)] è vuoto?
– Falso
A=DOWN, s=(2,1) return A

AI 1
Milani Pag.26
FondAI 09
Online DF-search, example

GOAL-TEST((1,1))?
S’=(1,1) – Lo stato S è uno stato goal? falso
(1,1) è un nuovo stato?
– falso
s è null?
– false (s=(2,1))
– result[DOWN,(2,1)] <- (1,1)
– UB[(1,1)]={(2,1)}
UX[(1,1)] empty?
S – False
A=RIGHT, s=(1,1) return A

AI 1
Milani Pag.27
FondAI 09
Online DF-search, example

GOAL-TEST((1,2))?
S’=(1,2) – Lo stato S è uno stato goal? falso
(1,2) a new state?
– Vero, UX[(1,2)]={RIGHT,UP,LEFT}
s è null?
– falso (s=(1,1))
– result[RIGHT,(1,1)] <- (1,2)
– UB[(1,2)]={(1,1)}
S UX[(1,2)] è vuoto?
– Falso
A=LEFT, s=(1,2) return A

AI 1
Milani Pag.28
FondAI 09
Online DF-search, example

GOAL-TEST((1,1))?
S’=(1,1) – Lo stato S è uno stato goal? falso
(1,1) è un nuovo stato?
– falso
s è null?
– falso (s=(1,2))
– result[LEFT,(1,2)] <- (1,1)
– UB[(1,1)]={(1,2),(2,1)}
UX[(1,1)] è vuoto?
– Vero
– UB[(1,1)] è vuoto? Falso
S
A= b per b in
result[b,(1,1)]=(1,2)
– B=RIGHT
A=RIGHT, s=(1,1) …

AI 1
Milani Pag.29
FondAI 09
Online DF-search

Nel caso peggiore ogni nodo


viene visitato due volte.
Un Agente può effettuare un
lungo spostamento in
profondità anche se si trova
inizialmente vicino alla
soluzione.
Approccio di online iterative
deepening risolve il
problema.
Online DF-search funziona
soltanto se le azzioni sono
reversibili.

AI 1
Milani Pag.30
FondAI 09
Online local search

La ricerca Hill-climbing è già online


– Un solo stato memorizzato.
Cattiva performance dovuta ai massimi locali
– Ripartenza random impossibile in ambiente online
Soluzione: una random walk introduce un fattore esplorativo
(anche se può generare un numero esponenziale di passi)

AI 1
Milani Pag.31
FondAI 09
Online local search

Soluzione 2: Dotare l’hill climber di memoria


– Memoria la stima corrente migliore H(s) del costo per raggiungere
il goal
– H(s) è inizialmente la valutazione euristica h(s)
– Successivamente H(s) è aggiornata con l’esperienza (vedi sotto)
derivata dall’esplorazione
Learning real-time A* (LRTA*)

AI 1
Milani Pag.32
FondAI 09
Learning real-time A*
function LRTA*-COST(s,a,s’,H) return una stima di costo
if s’ è indefinito retutn h(s)
else return c(s,a,s’) + H[s’]

function LRTA*-AGENT(s’) return una azione


input: s’, un percept che identifica lo stato corrente
static: result, una tabella indicizzata per azione e stato, inizialmente vuota
H, una tabella delle stime dei costi indicizzata per stato, inizialmente vuota
s, lo stato precedente, inizialmente nullo
a, l’azione precedente, inizialmente nulla

if GOAL-TEST(s’) then return stop


if s’ è un nuovo stato (non ancora inserito in H) then H[s’] ← h(s’)
unless s è null
result[a,s] ← s’
H[s] ← MIN LRTA*-COST(s,b,result[b,s],H)
b ∈ ACTIONS(s)

a ← una azione b in ACTIONS(s’) che minimizza lo LRTA*-COST(s’,b,result[b,s’],H)


s ← s’
return a

AI 1
Milani Pag.33
FondAI 09
Algoritmi ispirati dalla natura
Nature inspired Algorithms
Paradigmi di calcolo e di ottimizzazione ispirati
a sistemi biologici
Caratteristiche
• Computazioni indipendenti e parallele
• Controllo distribuito e comunicazione locale
• Comportamente comune emergente=ottimo
o ricerca soluzione

Milani Pag.
FondAI 09
Algoritmi Genetici e
Programmazione Genetica
Rientra nei GA
Evoluzione di popolazioni di programmi
Ad es. crossover tra alberi sintattici.
Ad es.Approssimazione di calcolo espressioni
While While :=
If()
D D X X-1
If()
C :=
:= :=
C
:= :=
X X+1 X X+c X X-1
X X+1 X X+c

Milani Pag.
FondAI 09
ACO Ant Colony Optimization
(Dorigo)
• Insieme di k formiche che si muovono in un grafo da
sorgente a destinazione
• Le formiche depositano feromone sul cammino (es.
archi)
• Il feromone evapora a tasso costante nel tempo
• Nei punti di scelta la decisione è randomizzata
proporzionalmente al feromone depositato negli
archi 33.33% 22%

33.33 % 3%

33.33 % 75%

Milani Pag.
FondAI 09
ACO Ant Colony Optimization
Quando le formiche arrivano a destinazione tornano indietro (nella versione
canonica non hanno memoria del cammino)

d
s

Inizialmente distribuzione random.


Il feromone bei cammini più brevi viene rafforzato più rapidamente.
Nei cammini dimenticati scompare traccia di feromone

Milani Pag.
FondAI 09
ACO Ant Colony Optimization

Riconfigurabilità dinamica (adattabilità)


s d

s d

.
s d

Il feromone bei cammini più brevi viene rafforzato più rapidamente.


Nei cammini dimenticati scompare traccia di feromone
Milani Pag.
FondAI 09
ACO Ant Colony Optimization
S spazio di ricerca su insieme finito di variabili discrete
con domini
una funzione obiettivo f da massimizzare
Ω insieme di vincoli sulle variabili.
Problema: ottimizzare (S,Ω Ω,f ) s* è ottima sse

Soluzione ACO costruttiva: insieme di componenti detti


Associati agli archi o ai vertici del grafo di costruzione GC(V,E) .
Un valore feromone associato ad ogni istante a cij

Un insieme di m formiche artificiali costruisce ciascuna una soluzione


Partendo da un insieme vuoto di componenti sp={}ed aggiungendo un
componente ammissibile dall’insieme dei next ammissibili
sp è la soluzione parziale corrente
La scelta tra i vicini è regolata
dal feromone

Milani Pag.
FondAI 09
ACO Ant Colony Optimization

Scegli la prossima componente di sp

Dopo aver calcolato m soluzioni


Decrementa il feromone ovunque
Incrementa il feromone sulle componenti di un sottinsieme di soluzioni buone

Itera.

Milani Pag.
FondAI 09
ACO Ant Colony Optimization

S Spazio di ricerca su insieme finito di variabili discrete


f una funzione obiettivo da massimizzare
Il feromone è un canale comune di comunicazione
Comportamento emergente: cammino ottimo
Riconfigurabilità dinamica

ACO adatto a problemi di cammino ottimo

Milani Pag.
FondAI 09
PSO Particle Swarm
Optimization
Analogia: sciami di insetti, stormi, pesci
Ottimizzazione di f in uno spazio di ricerca metrico n-dimensionale (è
possibile calcolare la distanza tra due punti) Es.

P={p1,…,pk} sciame di k particelle che


comunicano tra loro secondo una topologia (network
dei vicini)
posizione della particella i al tempo t nello spazio di
ricerca
la particella i al tempo t si muove secondo un
vettore velocità

Milani Pag.
FondAI 09
PSO Particle Swarm
Optimization
(personal best),ogni particella “ricorda” la sua migliore
posizione e

la posizione del migliore dei suoi vicini(neighbors best)


Ad ogni iterazione calcolata la nuova posizione di
ciascuna particella
accelerazione
Il nuovo vettore velocità: random

attrito/inerzia
componente cognitiva componente sociale

Milani Pag.
FondAI 09
PSO Particle Swarm
Optimization
Lo sciame tende a dirigersi verso l’ottimo
La ampiezza dello sciame e la randomizzazione tendono ad evitare i minimi
locali

v v v
v

Varianti: velocità limitata(coercizione), forze di repulsione


Applicazioni: ottimizzazione numerica,riconoscimento di oggetti,
tracking di movimenti

Milani Pag.
FondAI 09
Online Genetic Algorithms

Problema ottimizzare rispetto a:


• Fitness sconosciuta
• Fitness che evolve nel tempo
Applicazioni:
– Contenuti adattivi in ambienti evolutivi(es.
giornale online)
– Information Retrieval (es. multimedia search
engine)

Milani Pag.
FondAI 09
Online Genetic Algorithm

“The real world is the fitness”


La fitness è la risposta degli utenti rispetto al
servizio che si vuole ottimizzare
Metriche:
=numero di click per impression
=tempo tra osservazione e click
=# di acquisti
L’unico modo di conoscere la fitness è provare a
sottoporre la soluzione agli utenti (test di mercato)

Milani Pag.
FondAI 09
Online GA Scheme

Approccio ingenuo:
Mostrare le notizie più cliccate
Es. best clicked video su YouTube

Problema: loop: le notizie più cliccate hanno


maggior probabilità di essere viste, e quindi
cliccate
Un bias (distorsione) iniziale può promuovere
l’equivalente di un massimo locale
Randomizzare secondo uno schema GA
Milani Pag.
FondAI 09
Online GA Scheme

Online GA (Milani 2004)


Popolazione di soluzioni
Sottoposta al giudizio degli
utenti.

Es.Online newspaper

Milani Pag.
FondAI 09
Online Genetic Fitness

Valutazione della Fitness:


– si assumano gli utenti omogenei
– sia n il numero di individui nella popolazione e sia s
il numero di contatti utente necessari per valutare
la fitness, allora
– per valutare Ft(i) per ogni individuo i della
popolazione campionare i successivi s*n contatti e
– sottoporre l’oggetto i ai contatti tra s*i e s*(i+1)
s=3 n=4 t t+1 t+2

u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u

Milani Pag.
FondAI 09
Online GA

Altre applicazioni:
Multimedia Retrieval (Chan, Leung, Milani 2008)
Ranking online di oggetti associati a termini di ricerca.
Approccio randomizzato puro, GA

Milani Pag.
FondAI 09
Online Swarm Particle
Optimization
Applicazioni:
– Contenuti adattivi (es.)
Banner optimization (Leung & Milani 2009)

Milani Pag.
FondAI 09
Online Swarm Particle
Optimization Scheme
Un banner è identificato da un insieme di
feature/caratteristiche discrete/continue
Spazio di ricerca: spazio delle caratteristiche
un punto nello spazio di ricerca: un banner
Es. D1×D2×D3×D4×D5×D6 Es.
D1:32 foto
D2:10-20pt
D3:14 tipi
D4:400-600pt
D5:300-500pt
D6:32000 colori
Milani Pag.
FondAI 09
Online
Swarm Particle Optimization Scheme

Milani&Leung 2009
Dimensioni ibride
Discrete/continue

Milani Pag.
FondAI 09
Online Swarm Particle Optimization Scheme

Questioni principali:
– Traiettoria e movimenti in dimensioni
discrete
– Minimizzare il numero di contatti utenti
necessari ad ottimizzare
– Funzione di fitness simulata: additiva,
lineare etc.
– Dinamica evolutiva utenti

Milani Pag.
FondAI 09
Online ACO

• Routing basato su ACO


-riconfigurabilità dinamica
• Rilevazione dinamica di trend:
tracce indirette su Social Network/Blog

Milani Pag.
FondAI 09
Gecco Competition 2009 (1/3)

http://www.sigevo.org/GECCO-2009
2009 GENETIC AND EVOLUTIONARY COMPUTATION CONFERENCE
(GECCO-2009) Entro il 1 Luglio 2009
TRACK1 (e.g., gear ratio, wing area and angle, spring setup)
The competition software, including the servers for Linux & Windows, the
C++ and Java clients, can be downloaded from the competition webpage:

http://cig.dei.polimi.it/?page_id=79

Milani Pag.
FondAI 09
Gecco Competition 2009(2/3)

Milani Pag.
FondAI 09
Gecco Competition 2009 (3/3)

Milani Pag.
FondAI 09

Potrebbero piacerti anche