I computer sono in grado di eseguire elaborazioni o procedure automatiche in modo molto efficiente Es: calcoli matematici memorizzazione o recupero informazioni Risultano estremamente difficili o impossibili applicazioni in cui è necessario: ragionamento simbolico modellazione ed estrazione della conoscenza percezione autoapprendimento Per un computer è difficile riconoscere gli oggetti presenti in un’immagine perchè a partire dai contorni dovuti alle variazioni di luminosità, non riesce a raggrupparli per definire gli oggetti Questo processo, detto di segmentazione, è molto difficile da realizzare per un sistema puramente automatico perchè necessita della conoscenza a priori riguardo agli oggetti. Ecco perché non esistono sistemi di guida automatica Riconoscimento vocale riconoscimento addestramento Le reti neurali artificiali: un modo di implementare l’intelligenza artificiale L'obiettivo dell'intelligenza artificiale è quello di emulare processi che, quando fatti da umani, richiedono cognizione. Questo viene inseguito, e in parte ottenuto, attraverso algoritmi la cui classe principale è costituita dalle reti neurali artificiali. Le reti neurali artificiali imitano la struttura e la topologia del cervello umano per imitarne il funzionamento. A un sistema intelligente si chiede di: • memorizzare ed elaborare la conoscenza (es: raccogliere la conoscenza dei medici luminari) • applicare la conoscenza per risolvere problemi (es: produrre diagnosi più accurate) • aumentare la propria conoscenza tramite l'esperienza (es: imparare dagli errori e dai successi: retroazione di ulteriori diagnosi) Una rete neurale è strutturalmente un insieme di elementi, detti neuroni artificiali, interconnessi tra loro Il neurone artificiale n sinapsi assoni x1 x2 w1 x3 w3 xn wn i 1 dendriti w2 b weights inputs u bias u 1 P UNITÀ LINEARE y f ( wi xi b) corpo Soglia UNITÀ A SOGLIA P assone f non linear function Struttura di una rete neurale nodi uscite Similitudine tra una rete neurale biologica e una artificiale strato di neuroni di ingresso strato di neuroni nascosto o intermedio strato di neuroni di uscita Nei computer, il software inteso come insieme di istruzioni, è eseguito dall’hardware Nell’uomo, la mente è il software che gira su un hardware biologico: il cervello In linea di principio la mente può essere riprodotta su qualsiasi macchina non biologica Le reti neurali artificiali sono un insieme di istruzioni eseguite da un sistema che • storicamente è il processore di un computer • nel futuro saranno i processori ottici • e sistemi ibridi neuroni biologici – circuiti elettronici Reti neurali artificiali Dipendente dalla realizzazione (elettronica, ottica o biologica) Elaboratore elettronico 1 milione eventi / ms Centinaia o migliaia di neuroni ognuno dei quali comunica con decine o centinaia di altri neuroni Elaborazione generalmente seriale Cervello umano 1 evento / ms per neurone 100 miliardi di neuroni ognuno dei quali comunica con altri diecimila neuroni Rapido nell’eseguire operazioni logico matematiche, inefficiente nei problemi della vita quotidiana (es: pattern recognition, decisioni) Rapido nelle logica sfumata, processi decisionali, riconoscimento forme elaborazione seriale elaborazione parallela programmato per svolgere un compito preciso più elementi di elaborazione un solo elemento di elaborazione più elementi di elaborazione i pesi delle connessioni sono utilizzati per memorizzare impara dagli sbagli impara dagli sbagli Apprendimento Implementare una rete neurale significa stabilire la sua struttura: numero degli strati, numero dei neuroni per ciascun strato, topologia delle connessioni, condizioni iniziali, tipo di funzioni matematiche implementate dai neuroni di ciascun strato, metodo di apprendimento e verifica La rete appena implementata non sa fare nulla Prima di essere operativa deve apprendere, questo avviene mediante la somministrazione di esempi di correlazioni ingresso-uscita L’apprendimento consiste nella modifica dei pesi associati ad ogni connessione e nella modifica del bias di ciascun neurone, quest’ultimo stabilisce il punto di lavoro del neurone nella propria funzione non lineare La verifica dell’apprendimento avviene mediante la somministrazione di ingressi (stimoli) che la rete non aveva mai visto in fase di apprendimento e di cui noi ci aspettiamo uscite (risposte o reazioni) precise. Problemi di apprendimento Può accadere che dopo l’apprendimento le prestazioni non siano soddisfacenti, perché? Troppi pochi esempi in fase di addestramento Esempi polarizzati (distribuzione non uniforme dei casi) Esempi contraddittori Topologia e complessità della rete non adeguati al problema Ripetere l’apprendimento con diverse condizioni iniziali Non sono state raggiunte le prestazioni migliori a causa della funzione di addestramento non adeguata Altre caratteristiche Risoluzione di problemi complessi e non lineari Problemi per cui non si conoscono le relazioni ingresso-uscita ma si hanno a disposizione solo dei casi Capacità di memorizzare Risposta continua ad esclusione di un numero finito di discontinuità ad input simili la rete risponde con output simili Tolleranza agli errori scostamenti non significativi dei valori di input vengono assorbiti dalla rete, diminuendo così il rumore statistico e risultando tolleranti agli errori o al decadimento del segnale Tolleranza ai guasti La presenza di molte unità di processamento parallele fa si che l'eventuale perdita di un unità ha, nel caso di architetture con molti neuroni, conseguenze non irreparabili Svantaggi dell’utilizzo delle reti neurali: Ai fini dell’apprendimento dobbiamo fornire alla rete neurale tanti più esempi quanto più fortemente non lineare è il sistema da modellare. Non sappiamo a priori quale sia la miglior topologia (numero di nodi, di strati, collegamenti fra nodi e tipo di funzioni che devono implementare i nodi di ciascun strato) da assegnare alla rete neurale affinché modellizzi al meglio il nostro sistema. Una volta che la rete funziona, non sappiamo nulla del suo modello interno, in altre parole non fornisce spiegazioni sul funzionamento del sistema che stiamo studiando. La rete è per noi una scatola nera. I problemi non vengono capiti ma risolti. ingresso ? uscita Applicazioni Compressione dei dati (non secondo una codifica o una corrispondenza esatta) Eliminazione del rumore dai dati o dai segnali Riconoscimento segnali sonar Macchina da scrivere fonetica (dettatura dei testi al computer) Riconoscimento di caratteri (attribuire un significato ad una forma) Sistemi di guida automatica (sistemi missilistici, robot microspia) Classificazione di immagini (gli stessi oggetti cambiano colore, luminosità, tessitura a causa delle ombre, dell’illuminazione, della verniciatura…) Analisi finanziarie (previsioni) Medicina (migliorare le diagnosi) Il presente: Anche se poco se ne parla, la ricerca in questo campo è particolarmente attiva IEEE Transaction on Robotics IEEE Transaction on Fuzzy Systems IEEE Transaction on Neural Networks IEEE Transaction on Image processing IEEE Transaction on NanoBioscience IEEE Transaction on NanoTechnology IEEE Transaction on Robotics and Automation IEEE Transaction on Evolutionary Computation IEEE Transaction on Systems, Man and Cybernetics IEEE Transaction on Parallel and Distribuited Systems IEEE Transaction on Pattern Analysis and Machine Intelligence IEEE Transaction on Neural Systems and Rehabilitation Engineering Il futuro ? Speriamo che acquistino autocoscienza il più tardi possibile.