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 è l’apprendimento da esempi, che possono essere costituiti da: • dati caratterizzabili attraverso parametri (feature) che possiamo 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 Ispirazione Biologica Gli approcci della IA sono 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 Calcolo Evoluzionistico Processi evolutivi darwiniani Logica fuzzy Processi logici di gestione/elaborazione di dati incerti Soft Computing e Computational Intelligence Ai metodi di soft computing si fa spesso riferimento anche con il termine Computational Intelligence Se soft computing evidenzia la capacità dei relativi metodi di trattare dati incerti o rumorosi (aspetto logico/cognitivo) computational intelligence evidenzia l’ottenimento di prestazioni ‘intelligenti’ attraverso metodi di calcolo numerico. L’unione delle conferenze della IEEE su Reti Neurali, Calcolo Evoluzionistico e Logica Fuzzy dà origine ogni 4 anni (2 anni dal 2006) alla World Conference on Computational Intelligence. Pertanto, in pratica, i due termini possono essere considerati come sinonimi. Reti neurali Approccio connessionista: sfrutta l’attivazione massicciamente parallela di processori elementari (neuroni) I neuroni 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 neurone influenza l’uscita del neurone 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, evolutionary strategies) •Progettazione automatica di soluzioni (programmazione genetica) •Realizzazione di veri e propri ‘ecosistemi’ costituiti da piu’ popolazioni che evolvono in modo concorrente (coevoluzione) 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 gradi di appartenenza 0 è (ad es.) pessimo con grado di appartenenza 1; 0.2 scarso con g.d.a. 0.5 e pessimo con g.d.a. 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à: – La rete è un grafo aciclico. – 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. Applicazioni e settori di applicazione • • • • Classificazione Interpolazione / Regressione Identificazione di sistemi Progettazione automatica con applicazioni a: – Elaborazione di immagini e segnali – Pattern recognition – Visione Artificiale – Controlli automatici – Identificazione di sistemi – Previsioni in campo finanziario – Ottimizzazione combinatoria – Robotica …………. ecc. Concetti di base / parole chiave • Ricerca di punti critici in spazi n-dimensionali, con n tipicamente grande => OTTIMIZZAZIONE • ESPLORAZIONE dello spazio di ricerca • Identificazione di caratteristiche => FILTRAGGIO/ESTRAZIONE DI INFORMAZIONE • Segmentazione dello spazio di ricerca => CLASSIFICAZIONE • Capacità di trattare dati rumorosi => ROBUSTEZZA • APPRENDIMENTO INDUTTIVO • PROGETTAZIONE AUTOMATICA 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 Apprendimento Automatico Reti Neurali Generalità Stefano Cagnoni Reti Neurali Biologiche Neurone • Circa 1011 nell’uomo, di oltre 100 tipi diversi, con oltre 1014 connessioni • All’attivazione (stimoli ricevuti attraverso i dendriti > soglia) gli impulsi generati dall’eccitazione del soma si propagano attraverso l’assone verso gli altri neuroni. Dendriti Nucleo Corpo cellulare (soma) Assone Reti Neurali Biologiche Neurone • I punti di contatto fra neuroni si chiamano sinapsi e possono essere di tipo inibitorio o eccitatorio • A livello di sinapsi le terminazioni dei 2 neuroni sono separati da un’intercapedine attraverso cui avviene la trasmissione del treno di impulsi per via elettrochimica (emissione di una sostanza detta mediatore sinaptico) • Frequenza massima degli impulsi <= 1KHz, quindi trasmissione dell’informazione piuttosto lenta • Ipotesi di trasmissione distribuita e parallela dell’informazione Reti Neurali Artificiali: cenni storici •Paradigma computazionale ispirato da un modello matematico del neurone (McCulloch & Pitts 1943) realizzato per studiare le capacità computazionali del neurone e delle reti neurali biologiche. •Hebb (1949) propone un modello di apprendimento ‘sinaptico’ (legge di Hebb) •Rosenblatt (1957) definisce il percettrone e un algoritmo di apprendimento, con cui dimostra la possibilità di riconoscere forme e risolvere altri problemi. •Alla fine anni ‘60 abbandono dela ricerca per i limiti evidenziati da Minsky (Perceptrons, 1969): non erano in grado di imparare lo XOR. •Riaffermazione alla fine degli anni ‘80 (Rumelhart et al., Grossberg, Hopfield). Neurone artificiale Costituito da due stadi: •sommatore lineare (produce il cosiddetto net input) net = Sj wj ij •funzione di o = f (net) attivazione f non lineare a soglia Neurone artificiale Possibili funzioni di attivazione: o= o= 1 se (x - q) > 0 0 se (x - q) < 0 +1 se (x - q) > 0 -1 se (x - q) < 0 Gradino Gradino bipolare o= 1 / (1 + e -(x -q)) Sigmoide o= tanh (x - q) Tangente iperbolica q è una costante (bias) che ha il ruolo di soglia. Può essere inglobato nel net aggiungendo una connessione con ingresso costante uguale ad 1 e peso associato uguale al bias. Rete Neurale Artificiale Architettura a più strati: • strato di ingresso • strato/i nascosto/i • strato di uscita IN OUT