Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
La distinzione tra programma e funzione agente
È importante la distinzione fra programma e funzione agente: il primo prende in input solo la percezione corrente, mentre il secondo tutta la storia percettiva. Lasfida dell’intelligenza artificiale è scrivere programmi che, nella massima misura possibile, producano un comportamento razionale con una piccola quantità di codice, anziché rappresentare tutti i possibili input percettivi possibili. Proprio in funzione di ciò ci risulta impossibile generare tabelle per ogni possibile percezione. In un gioco relativamente semplice nella sua formulazione come quello degli scacchi avremmo una tabella di 10 righe. Iniziamo a vedere dunque qualche alternativa più efficace. Tutti gli agenti che vedremo sono classificati come learning agents, ossia agenti capaci di migliorare le loro prestazioni e attuare azioni migliori tramite l’apprendimento.Agenti davvero intelligenti
Agenti reattivi semplici
Questi semplicissimi agenti intraprendono un’azione in base allapercezione appena ricevuta, ignorando la storia pregressa. Pertanto, non hanno memoria.
Il vantaggio è l'estrema semplicità dell'implementazione, spesso effettuata con un semplice if-then.
Per problemi che non necessariamente richiedono una grande conoscenza delle percezioni pregresse, questa soluzione potrebbe essere un buon compromesso.
Questo tipo di agente funziona solo in caso di ambienti completamente osservabili.
In caso di informazioni mancanti potrebbe incappare in cicli infiniti. Una soluzione a questo problema è aggiungere una componente casuale la quale verrà invocata nel caso di dati mancanti. Come vedremo in futuro, una componente casuale porta spesso a un comportamento razionale. Questo non è il caso, in quanto la componente casuale serve solo a non incappare in suddetti cicli infiniti.
1.6.2 Agenti reattivi basati su Modello
Questo tipo di agenti ha due tipi di conoscenza: come evolve il mondo, indipendentemente dal suo stato; e informazioni riguardanti
L'impatto delle sue azioni sull'ambiente.
La conoscenza del mondo sviluppata tramite una teoria scientifica completa viene chiamata appunto modello del mondo.
È importante considerare che lo stato attuale che l'agente considera non coincide necessariamente con lo stato del mondo (l'agente non è onnisciente), ma con la migliore ipotesi che l'agente può fare.
1.6.3 Agenti basati su Obiettivi
È un agente che aggiunge al modello informazioni sugli specifici obiettivi che si intendere raggiungere. In pratica, conoscere lo stato del mondo non sempre è necessario ad arrivare in maniera rapida e precisa, quindi potrebbe convenire definire obiettivi verso i quali gli agenti si possono muovere. Questi obiettivi non coincidono con le coppie condizione-azione viste in precedenza, in quanto prendono in considerazione previsioni del cambiamento dell'ambiente in base all'azione compiuta, e non sono quindi necessariamente deterministici.
1.6.4 Agenti basati
sull'utilità Gli obiettivi consentono di esprimere condizioni "buone" e "cattive". Nella realtà tuttavia potremmo avere vie di mezzo, come situazioni "desiderabili" o meno. Una funzione di utilità ci indica quanto un determinato obiettivo è desiderabile, associando un numero e non necessariamente un booleano a questo parametro. Potremmo avere più funzioni di utilità fra di loro contrastanti, e in questo caso l'agente deve prendere una decisione basandosi su delle priorità. Agenti capaci di apprendere L'apprendimento presenta il vantaggio di mettere agenti in ambienti inizialmente sconosciuti e permettergli di imparare e migliorare. Un agente di questo tipo ha quattro componenti principali: - Elemento di apprendimento: L'elemento responsabile del miglioramento interno. - Elemento esecutivo: L'elemento responsabile della selezione delle azioni esterne. Questo è ciò che fino ad ora abbiamo.considerato come agente.
- Elemento critico: L'elemento responsabile di dare feedback sulle prestazioni correnti, cosı̀ che l'elemento di apprendimento possa determinare se e come modificare l'elemento esecutivo in maniera che si comporti meglio in futuro.
- Generatore di problemi: L'elemento responsabile di suggerire all'agente azioni che portino ad esperienze nuove e significative, in particolare esperienze che possano favorire l'apprendimento.
Chapter 2
Ricerca 14
2.1 Risoluzione di problemi con la ricerca
Talvolta, scegliere un'azione in base a un obiettivo è semplice, quando quest'ultimo può essere raggiunto in un solo passo. Tuttavia non sempre è cosı̀, e l'agente potrebbe aver bisogno di percorrere un "cammino" che porta al risultato desiderato. Questi agenti sono più "flessibili" di quelli basati su modello.
Rappresentazione atomica In una rappresentazione atomica, uno stato è un
elemento non divisibile, ossia astratto, che non ha una struttura interna. Gli algoritmi alla base di ricerca e giochi prendono in considerazione rappresentazioni atomiche del mondo.
2.1.1 Agenti risolutori di problemi
Gli agenti risolutori di problemi sono un particolare tipo di agenti basati su obiettivi, i quali si pongono uno o più obiettivi da raggiungere, e pertanto utilizzano una rappresentazione atomica del mondo, i cui stati verranno usati per trovare una soluzione accettabile al problema trattato.
Sappiamo per esempio che le opzioni che rendono impossibile per l'agente raggiungere il proprio obiettivo verranno scartati: è totalmente inutile esplorare quelle opzioni. Ciò riduce notevolmente lo spazio delle possibili soluzioni, velocizzando la ricerca. Nel caso in cui due obiettivi implicano l'uno il fallimento dell'altro, l'agente non si blocca, ma tenta comunque di ottenere una soluzione buona, o quantomeno accettabile.
Un'altra cosa che
un'azione è un insieme di azioni più dettagliate. Un'astrazione si ritiene valida se possiamo espandere ogni soluzione astratta in una soluzione del mondo più dettagliata. Un'astrazione si definisce utile se eseguire ogni azione nell'astrazione è più facile che eseguirla nel problema originale.
Ciò è vero ed utile perché gli agenti hanno l'arduo compito di lavorare in un mondo complesso senza però lasciarsi soverchiare dalla complessità del mondo.
Grado di conoscenza dell'agente
Se l'agente si trova in un ambiente ignoto, è costretto ad andare a caso, analizzando le sue azioni future per guadagnare conoscenza sulla qualità degli stati attualmente sconosciuti.
Per un ambiente osservabile (si pensi a una mappa geografica, per esempio), l'agente conosce sempre lo stato del mondo. Se l'ambiente è osservabile, discreto, noto e deterministico, la soluzione è rappresentata da una sequenza finita di azioni, ed è
rap-presentabile tramite l'esplorazione di un grafo.
2.1.2 La Ricerca
Il processo che cerca una sequenza di azioni che portano al raggiungimento dell'obiettivo è proprio detto ricerca. La progettazione di un agente risolutore di problemi consiste dunque in 3 fasi: formulazione, ricerca, esecuzione.
Un agente di questo tipo deve essere sicuro di ciò che accade nel mondo in quanto sceglie la sequenza di azioni da intraprendere all'inizio, a "occhi chiusi", e poi la esegue.
Nella teoria del controllo si parla di sistema a ciclo aperto, in quanto ignorando la sequenza di percezioni si interrompe il ciclo fra agente e ambiente.
2.1.3 Problemi ben definiti e soluzioni
Un problema può essere definito formalmente tramite 5 componenti:
- Stato iniziale.
- Azioni: l'insieme di azioni attuabili dall'agente in un dato stato.
- Modello di transizione: descrive il risultato dell'esecuzione di ogni azione.
- Test obiettivo: è il test di terminazione dell'algoritmo.
- Spazio degli stati: l'insieme di tutti gli stati possibili.
Costo di cammino: determina il costo dell'esecuzione di un'azione.
Stato degli spazi. Stato iniziale, azioni e modello di transizione definiscono lo stato degli spazi del problema, ossia l'insieme di tutti gli stati raggiungibili a partire da quello iniziale tramite una qualunque sequenza di azioni. Questo può essere rappresentato come un grafo.
2.2 Ricerca non informata
Questo tipo di algoritmi, insieme agli algoritmi di ricerca informata, rappresentano la base della ricerca.
L'essenza del concetto di ricerca sta nell'approfondire una soluzione e mettere da parte le altre (questo nel contesto del cosiddetto albero di ricerca). Nel caso pessimo si tornerà indietro per prendere in considerazione altre soluzioni.
Cammini ciclici e ridondanti. Se nell'albero un cammino è ripetuto più volte, parliamo di cammino ciclico, mentre il caso dei cammini ridondanti è più generale e lo abbiamo nel momento in cui esistono due o più modi per passare da uno
stato all'altro. Sappiamo che ogni arco ha costo non negativo, quindi un ciclo non sarà mai conveniente e posso tranquillamente eliminarlo. Un cammino ridondante invece potrebbe essere necessario, nonostante potrebbe aumentare significativamente la difficoltà del problema: si pensi per esempio ai problemi le cui azioni sono reversibili.
Per evitare di incappare in cammini ciclici o ridondanti, è utile avere una struttura dati denominata insieme esplorato (o lista chiusa). In questo modo l'albero di ricerca costruito tramite la ricerca avrà al più una copia di ciascuno stato.
Nodi foglia e frontiera. I nodi che in un determinato momento della ricerca non hanno figli vengono detti nodi foglia. L'insieme di tutti i nodi foglia in un determinato momento viene detta frontiera. Di norma avere questa struttura è utile in quanto andiamo a caricare un nodo in memoria solo quando viene aggiunto alla frontiera; avere tutti i possibili stati in