Salta al contenuto
Note per Studenti Esercizio - Ambienti, PEAS e tipo di agente (slide del corso)

Esercizio - Ambienti, PEAS e tipo di agente (slide del corso)

In questa pagina 5

Esercizio ricavato dalle slide del corso di Intelligenza Artificiale, Ing. dell'Informazione UniPD, sugli agenti: descrizione PEAS di un compito, classificazione dell'ambiente con le sette coppie di proprietà, scelta del tipo di agente e un calcolo esatto sul mondo dell'aspirapolvere, a partire dalla variante delle slide in cui "il quadrato può restare sporco anche dopo l'aspirazione" e il sensore di sporco è rotto. Teoria in Agenti intelligenti - ambienti, PEAS e tipi di agenteUn agente è una funzione dalle sequenze di percezioni alle azioni; è razionale se per ogni sequenza sceglie l'azione che massimizza il valore atteso della misura di prestazione, date le percezioni e la conoscenza incorporata. L'ambiente di lavoro si descrive con PEAS (Performance, Environment, Actuators, Sensors) e si classifica con sette coppie di proprietà (osservabile, deterministico, episodico, statico, discreto, singolo/multi-agente, noto). Le architetture crescono in complessità: reattivo semplice, reattivo basato su modello, basato su obiettivi, basato su utilità, più l'agente che apprende (elemento esecutivo, di apprendimento, critico, generatore di problemi).Agenti intelligenti - ambienti, PEAS e tipi di agente →. I numeri sono verificati con il programma in fondo (calcolo esatto e simulazione).

Testo

  1. Aspirapolvere con il sensore di sporco rotto. Due quadrati AA e BB, entrambi sporchi; il robot parte in AA, percepisce solo la propria posizione, non se il quadrato è sporco. L'azione Suck pulisce il quadrato corrente con probabilità pp (con probabilità 1−p1 - p il quadrato resta sporco). Azioni: Left, Right, Suck, NoOp. Misura di prestazione: +1+1 per ogni quadrato pulito a ogni passo, su un orizzonte di T=20T = 20 passi. (a) Scrivere il PEAS. (b) Classificare l'ambiente. (c) Dire quale tipo di agente serve. (d) Si usa la politica "aspira kk volte e poi cambia quadrato, e ripeti": calcolare la prestazione attesa per k=1,…,5k = 1, \dots, 5 con p=1p = 1, p=0,8p = 0{,}8, p=0,5p = 0{,}5 e dire quale kk è razionale.
  2. Classificare (sette proprietà) il solitario, un videogioco i cui tasti sono sconosciuti, il riconoscimento di volti in una fotografia, il cruciverba e un taxi a guida autonoma.
  3. Tipo di agente. Per ognuno di questi comportamenti di un taxi dire se è un agente reattivo semplice, con modello, basato su obiettivi o basato sull'utilità: (a) frena quando le luci dell'auto davanti sono rosse; (b) frena solo se si muove e c'è un passaggio da bassa ad alta intensità delle luci davanti, se non può cambiare corsia, ecc.; (c) guida verso una destinazione; (d) guida verso una destinazione tenendo conto del consumo di carburante.

Punto 1 - aspirapolvere con sensore di sporco rotto

(a) PEAS. Performance: quadrati puliti per passo, sull'orizzonte di 20 passi. Environment: due quadrati, ciascuno pulito o sporco. Actuators: ruote (Left, Right) e aspirazione (Suck), più NoOp. Sensors: sensore di posizione (il sensore di sporco è rotto).

(b) Proprietà dell'ambiente.

proprietà valore perché
osservabilità parzialmente osservabile i sensori non danno lo stato completo: manca lo sporco (Agenti intelligenti - ambienti, PEAS e tipi di agenteUn agente è una funzione dalle sequenze di percezioni alle azioni; è razionale se per ogni sequenza sceglie l'azione che massimizza il valore atteso della misura di prestazione, date le percezioni e la conoscenza incorporata. L'ambiente di lavoro si descrive con PEAS (Performance, Environment, Actuators, Sensors) e si classifica con sette coppie di proprietà (osservabile, deterministico, episodico, statico, discreto, singolo/multi-agente, noto). Le architetture crescono in complessità: reattivo semplice, reattivo basato su modello, basato su obiettivi, basato su utilità, più l'agente che apprende (elemento esecutivo, di apprendimento, critico, generatore di problemi).Agenti intelligenti - ambienti, PEAS e tipi di agente →: "un aspirapolvere con il sensore di sporco rotto")
determinismo stocastico per p<1p < 1 (deterministico per p=1p = 1) Suck riesce con probabilità pp; se p=1p = 1 l'ambiente è deterministico ma, essendo parzialmente osservabile, sembra non deterministico
episodi sequenziale l'azione di oggi influenza lo stato (pulito o sporco) dei passi successivi
dinamica statico lo sporco non cambia da solo mentre l'agente decide
tempo e stati discreto due posizioni, due stati di sporco, azioni a passi discreti
agenti singolo solo il robot
conoscenza noto le regole e la probabilità pp sono note all'agente

(c) Tipo di agente. Un agente reattivo semplice sceglie l'azione dalla sola percezione corrente, ma qui la percezione è solo A oppure B: l'azione sarebbe sempre la stessa per ogni quadrato (per esempio "aspira e basta" non lo fa mai muovere, "muoviti" non pulisce niente). Serve uno stato interno: un contatore che dice quante volte ha già aspirato nel quadrato corrente (e, volendo, una stima di quali quadrati sono puliti). È quindi un agente con stato interno (con modello dell'ambiente: la probabilità pp di riuscita) a differenza del reattivo semplice. Il comportamento delle slide "aspira due volte, poi cambia quadrato, qualunque sia il risultato" è proprio la politica con k=2k = 2.

(d) Prestazione attesa. Con la politica kk e orizzonte T=20T = 20, la prestazione dipende da pp (e dalla misura). Per p=1p = 1 si calcola a mano: con k=1k = 1: passo 1 Suck in AA (11 quadrato pulito), passo 2 Right (11), passo 3 Suck in BB (22), poi per 17 passi 22 quadrati puliti: 1+1+2+17⋅2=381 + 1 + 2 + 17 \cdot 2 = 38. Con k=2k = 2: Suck in AA (11), Suck di nuovo (11, il quadrato è già pulito), Right (11), Suck in BB (22), poi 16 passi da 22: 1+1+1+2+32=371 + 1 + 1 + 2 + 32 = 37. Per p<1p < 1 si calcola in modo esatto seguendo la catena di Markov sugli stati (posizione, AA sporco o no, BB sporco o no, aspirazioni fatte nel quadrato): a ogni passo si propaga la distribuzione di probabilità e si somma il valore atteso del punteggio del passo. Risultati (T=20T = 20, valori attesi):

pp k=1k = 1 k=2k = 2 k=3k = 3 k=4k = 4 k=5k = 5
11 38,00 37,00 36,00 35,00 34,00
0,80{,}8 36,00 36,17 35,42 34,48 33,50
0,50{,}5 30,31 32,41 32,61 32,23 31,57

Il kk razionale cambia con pp: k=1k = 1 se Suck riesce sempre, k=2k = 2 se riesce nell'80% dei casi (è la politica delle slide), k=3k = 3 se riesce una volta su due. Aspirare di più costa passi senza muoversi, aspirare di meno rischia di lasciare sporco e di non tornare: la misura di prestazione e pp decidono l'agente razionale. Con kk grande l'agente non lascia più AA e BB resta sporco (la prestazione cala). Il calcolo esatto coincide con una simulazione di 100 000 partite per p=0,8p = 0{,}8 (35,98; 36,16; 35,41; 34,48; 33,49).

Punto 2 - classificazione di cinque ambienti

ambiente osservabilità determinismo episodi dinamica tempo agenti conoscenza
solitario parziale (carte coperte) stocastico (ordine delle carte) o deterministico se il mazzo è fissato sequenziale statico discreto singolo noto (le regole)
videogioco con tasti sconosciuti completa (tutto sullo schermo) dipende dal gioco sequenziale dinamico (o statico se a turni) discreto singolo o multi ignoto (non si sa che cosa fa ogni tasto: va imparato)
riconoscimento di volti completa (la fotografia) deterministico episodico (ogni foto è indipendente dalle precedenti) statico discreto singolo noto
cruciverba completa deterministico sequenziale statico (non cambia mentre si pensa) discreto singolo noto
taxi a guida autonoma parziale stocastico (traffico) sequenziale dinamico continuo multi-agente noto o ignoto secondo il modello della città

Sono i casi usati dalle slide per far vedere che osservabilità (che cosa vedono i sensori) e conoscenza (che cosa sa l'agente delle regole) sono proprietà indipendenti: il solitario è noto ma parzialmente osservabile; il videogioco è ignoto ma completamente osservabile.

Punto 3 - tipo di agente nel taxi

comportamento tipo perché
(a) frena quando le luci davanti sono rosse reattivo semplice regola condizione-azione sulla sola percezione corrente; per questo potrebbe frenare sempre
(b) frena solo se si muove e c'è un passaggio da bassa ad alta intensità delle luci, se non può cambiare corsia con modello usa uno stato interno (se si muove, intensità precedente, corsie libere) aggiornato con modelli di transizione e dei sensori
(c) guida verso una destinazione basato su obiettivi cerca e pianifica una sequenza di azioni verso l'obiettivo (Ricerca nello spazio degli stati - formulazione dei problemi e ricerca non informataUn agente risolutore di problemi è un agente basato su obiettivi con rappresentazione atomica: formula un problema (stato iniziale, azioni, modello di transizione, test dell'obiettivo, costo dei passi) e cerca una sequenza di azioni che porta a uno stato obiettivo costruendo un albero di ricerca. Le strategie non informate usano solo la definizione del problema e si distinguono per l'ordine di espansione della frontiera: ampiezza (coda FIFO), costo uniforme (coda con priorità sul costo g), profondità (pila LIFO), profondità limitata, approfondimento iterativo e ricerca bidirezionale. Si confrontano per completezza, ottimalità, tempo e spazio in funzione di b, d, m; tutte sono casi di best-first search con una diversa funzione di valutazione f.Ricerca nello spazio degli stati - formulazione dei problemi e ricerca non informata →)
(d) guida verso la destinazione tenendo conto del consumo basato sull'utilità l'obiettivo non dice quanto è buono un percorso: l'utilità confronta percorsi (più breve, meno carburante) e massimizza l'utilità attesa

Programma di verifica

python
import random
from fractions import Fraction

def valore_atteso(k, p, T=20):
    """Politica senza sensore di sporco: k volte Suck, poi un passo, e si ripete.
    Punteggio: +1 per ogni quadrato pulito a ogni passo. Calcolo esatto sulla catena di Markov."""
    dist = {('A', 1, 1, 0): Fraction(1)}   # (posizione, A sporco, B sporco, aspirazioni fatte qui) -> probabilità
    totale = Fraction(0)
    for _ in range(T):
        nuova = {}
        for (pos, dA, dB, n), pr in dist.items():
            if n < k:                                    # azione Suck
                sporco = dA if pos == 'A' else dB
                esiti = [(0, p), (1, 1 - p)] if sporco else [(0, 1)]
                for resta, q in esiti:
                    a = resta if pos == 'A' and sporco else dA
                    b = resta if pos == 'B' and sporco else dB
                    s = (pos, a, b, n + 1)
                    nuova[s] = nuova.get(s, 0) + pr * q
                    totale += pr * q * ((1 - a) + (1 - b))
            else:                                        # azione Move
                s = ('B' if pos == 'A' else 'A', dA, dB, 0)
                nuova[s] = nuova.get(s, 0) + pr
                totale += pr * ((1 - dA) + (1 - dB))
        dist = nuova
    return totale

for p in (Fraction(1), Fraction(4, 5), Fraction(1, 2)):
    print(p, [round(float(valore_atteso(k, p)), 2) for k in range(1, 6)])

Output:

1 [38.0, 37.0, 36.0, 35.0, 34.0]
4/5 [36.0, 36.17, 35.42, 34.48, 33.5]
1/2 [30.31, 32.41, 32.61, 32.23, 31.57]

L'uso di Fraction rende il calcolo esatto (niente errori di arrotondamento), e valore_atteso somma, a ogni passo, la probabilità di ogni stato per il punteggio del passo: è l'applicazione diretta della definizione di valore atteso.

Versione ripasso

  • Aspirapolvere con sensore di sporco rotto (AA, BB sporchi, parte in AA, percepisce solo la posizione; Suck riesce con probabilità pp; +1+1 per quadrato pulito per passo, T=20T = 20). PEAS: prestazione = quadrati puliti; ambiente = due quadrati; attuatori = ruote, aspirazione, NoOp; sensori = posizione.
  • Proprietà: parzialmente osservabile (manca lo sporco); stocastico per p<1p < 1 (per p=1p = 1 deterministico ma sembra non deterministico); sequenziale; statico; discreto; singolo agente; noto.
  • Tipo di agente: il reattivo semplice non basta (la percezione è solo AA o BB); serve uno stato interno (un contatore delle aspirazioni nel quadrato). La politica delle slide "aspira due volte, poi cambia quadrato" è k=2k = 2.
  • Prestazione attesa (politica: kk volte Suck, poi un passo; T=20T = 20): p=1p = 1: 38,37,36,35,3438, 37, 36, 35, 34 per k=1..5k = 1..5 (a mano: k=1k=1: 1+1+2+17⋅2=381 + 1 + 2 + 17 \cdot 2 = 38; k=2k=2: 1+1+1+2+16⋅2=371 + 1 + 1 + 2 + 16 \cdot 2 = 37); p=0,8p = 0{,}8: 36,00,36,17,35,42,34,48,33,5036{,}00, 36{,}17, 35{,}42, 34{,}48, 33{,}50; p=0,5p = 0{,}5: 30,31,32,41,32,61,32,23,31,5730{,}31, 32{,}41, 32{,}61, 32{,}23, 31{,}57. kk razionale: 1, 2, 3 per p=1p = 1, 0,80{,}8, 0,50{,}5; calcolo esatto con la catena di Markov (stati: posizione, AA sporco, BB sporco, aspirazioni fatte), verificato con la simulazione.
  • Classificazioni: solitario = noto ma parzialmente osservabile; videogioco con tasti sconosciuti = ignoto ma completamente osservabile; riconoscimento di volti = episodico; cruciverba = statico, completamente osservabile, deterministico; taxi = parziale, stocastico, sequenziale, dinamico, continuo, multi-agente.
  • Tipi di agente nel taxi: (a) frena con le luci rosse = reattivo semplice; (b) frena solo se si muove e le luci passano da bassa ad alta intensità = con modello; (c) guida verso una destinazione = basato su obiettivi; (d) tenendo conto del consumo = basato sull'utilità.
  • Errori tipici: confondere osservabile (sensori) con noto (conoscenza dell'agente); dire che un ambiente è stocastico solo perché è parzialmente osservabile; scegliere l'agente reattivo quando la percezione non basta a decidere; ignorare che la misura di prestazione cambia l'agente razionale.

Teoria collegata