Intelligenza Artificiale SOFT COMPUTING Stefano Cagnoni
Problemi difficili... Molti problemi pratici possono essere riformulati in termini di problemi di ottimizzazione di una funzione obiettivo che rappresenta il costo o la qualità di una soluzione. A volte è l’unica soluzione possibile!
Ottimizzazione e Intelligenza Artificiale Se la funzione da ottimizzare: rappresenta le specifiche di un problema da risolvere viene ottimizzata attraverso procedure automatiche sulla base delle prestazioni ottenute su un certo numero di esempi rappresentativi del problema, o comunque emulando un comportamento desiderato il metodo rientra nell’ambito del cosiddetto apprendimento automatico e quindi dell’intelligenza artificiale Funz. costo f(p1…pn) Metodo di ottimizzazione Problema Soluzione Esempi
Un approccio diverso Il problema della progettazione si sposta dalla definizione di una soluzione esatta e giustificata da una teoria alla ricerca di una soluzione che funziona bene, attraverso: definizione di un criterio per valutare la bontà (costo) della soluzione cercata scelta del metodo da utilizzare per massimizzarlo (minimizzarlo).
Quando ? specifiche del problema esprimibili solamente in modo qualitativo. comportamenti o fenomeni descrivibili o misurabili in modo impreciso (es. segnali affetti da rumore) se non addirittura incongruente. assenza di soluzioni dirette scarsa conoscenza a priori sul problema da affrontare necessità di realizzare ed integrare più moduli di difficile progettazione o per i quali singolarmente valgono le precedenti condizioni
Come ? Esistono metodi in cui la soluzione è del tutto sconosciuta l’ottimizzazione deve servire a definire forma e parametri della soluzione la soluzione è definita a priori in forma parametrica si cercano i valori dei parametri che ottimizzano la funzione qualità (costo) la struttura della soluzione è nota, ma la qualità dei dati non permette di utilizzare una forma chiusa ed esatta si definisce una funzione che gestisca l’incertezza (fuzziness) nei dati, fornendo più uscite possibili, ognuna caratterizzata da un grado di verosimiglianza.
Soft Computing In contrapposizione con i metodi convenzionali (hard computing), le tecniche di soft computing non si basano su procedimenti esprimibili in forma chiusa (es. una formula matematica che risolve una certa equazione), ma su procedure di ricerca ed ottimizzazione che ‘funzionano’ anche in presenza di dati qualitativi incerti imprecisi incompleti
Soft computing e metodi “classici” di ottimizzazione Esistono altri settori che si occupano di ottimizzazione (es. ricerca operativa) e si sono sviluppati all’interno di altre discipline (matematica, ecc.) Tali metodi di ottimizzazione sono tuttavia focalizzati sulla teoria matematica. Il soft computing si sviluppa nella comunità dell’intelligenza artificiale. Quindi è focalizzato sulla emulazione di azioni e processi intelligenti. Per questo motivo il soft computing si caratterizza anche per un’ampia presenza di metodi derivati da modelli di fenomeni naturali.
Apprendimento da esempi Uno dei settori in cui il soft computing ha trovato applicazione è il cosiddetto apprendimento da esempi, che possono essere costituiti da: dati aventi caratteristiche comuni che vogliamo estrarre (ad es. per problemi di classificazione), insiemi di coppie di dati corrispondenti che rappresentano: i dati a disposizione il risultato che vogliamo ottenere dall’elaborazione di quei dati. Si parla in questo caso rispettivamente di: Metodi di apprendimento non supervisionato Metodi di apprendimento supervisionato
Tassonomia dei metodi di soft computing Fanno parte del soft computing: Reti neurali Calcolo evoluzionistico Metodi basati sulla logica fuzzy Ragionamento probabilistico
Intelligenza Artificiale = riproduzione su calcolatore dei processi di alto livello che caratterizzano gli esseri viventi più evoluti (“intelligenti” o “razionali”). Approcci spesso basati sull’emulazione di processi di tipo biologico o ispirato da fenomeni osservabili in natura. Anche il soft computing è caratterizzato in buona parte da questo tipo di approccio. Reti neurali Interazioni fra neuroni Processi evolutivi darwiniani Calcolo Evoluzionistico
Reti neurali Approccio connessionista: sfrutta l’attivazione massicciamente parallela di processori elementari. Tali processori comunicano fra loro attraverso fitte reti di connessioni. Ciascuna connessione è associata ad un peso che determina l’entità con cui l’uscita prodotta da un processore influenza l’uscita del processore al cui ingresso è collegata. Modificando opportunamente i pesi associati alle connessioni è virtualmente possibile riprodurre qualunque tipo di funzione.
Calcolo Evoluzionistico Evoluzione di soluzioni attraverso metodi ispirati all’evoluzione naturale ‘Ricombinazione’ di soluzioni al fine di ottimizzarne le prestazioni Regolazione automatica di parametri di soluzioni (algoritmi genetici) Progettazione automatica di soluzioni (programmazione genetica)
Logica Fuzzy Estensione a valori variabili in modo continuo fra 0 e 1 della logica booleana Una espressione fuzzy non deve essere o vera o falsa, ma si ammettono diversi gradi di verità Possibilità di elaborare, secondo una precisa teoria matematica, concetti essenzialmente qualitativi Es. pessimo = [0, 0.2]; scarso = [0.2, 0.5] buono = [0.5, 0.8]; ottimo =[0.8, 1] ma con diversi livelli di appartenenza 0 è (ad es.) pessimo con appartenenza 1; 0.2 scarso con appartenenza 0.5 e pessimo con app. 0.5 ecc. Possibilità di interpretare il livello di appartenenza come una probabilità, e di definire quindi meccanismi logici di tipo probabilistico
Ragionamento probabilistico Utilizza una struttura dati detta rete bayesiana (o rete probabilistica, o rete causale, o mappa di conoscenza). Una rete Bayesiana ha le seguenti proprietà: Ogni nodo rappresenta una variabile casuale. I nodi sono connessi da archi indicanti le dipendenze, in senso probabilistico, tra i nodi. Ogni nodo ha una tabella delle probabilità condizionate che quantificano gli effetti che i nodi genitori hanno su di esso. La rete è un grafo aciclico.
Applicazioni Elaborazione di immagini e segnali Pattern recognition Visione Artificiale Controlli automatici Identificazione di sistemi Previsioni in campo finanziario Ottimizzazione combinatoria Robotica ……..
Complementarità delle discipline Ciascuno dei settori del soft computing presenta proprietà particolari, spesso complementari. Diverse metodologie possono essere utilizzate per realizzare soluzioni ibride. Esempi: Progettazione di reti neurali per mezzo di algoritmi evoluzionistici Definizione di regole fuzzy per mezzo di algoritmi evoluzionistici Sistemi neuro-fuzzy (con numerose applicazioni nei controlli) Controllo fuzzy di algoritmi evolutivi Un testo sull’argomento: A. Tettamanzi, M. Tomassini “Soft Computing: Integrating Evolutionary, Neural and Fuzzy Systems”, Springer, 2001