IMPLEMENTAZIONE PARALLELA SU GPU DI RETI NEURALI ARTIFICIALI EVOLUTIVE PARALLEL GPU-BASED IMPLEMENTATION OF EVOLUTIONARY ARTIFICIAL NEURAL NETWORKS

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "IMPLEMENTAZIONE PARALLELA SU GPU DI RETI NEURALI ARTIFICIALI EVOLUTIVE PARALLEL GPU-BASED IMPLEMENTATION OF EVOLUTIONARY ARTIFICIAL NEURAL NETWORKS"

Transcript

1 UNIVERSITÀ DEGLI STUDI DI PARMA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA IMPLEMENTAZIONE PARALLELA SU GPU DI RETI NEURALI ARTIFICIALI EVOLUTIVE PARALLEL GPU-BASED IMPLEMENTATION OF EVOLUTIONARY ARTIFICIAL NEURAL NETWORKS Relatore: Chiar.mo Prof. S. Cagnoni Candidato: Luca Donati ANNO ACCADEMICO

2

3 Per prima cosa vorrei ringraziare il mio relatore, Stefano Cagnoni, che ha saputo motivare il mio interesse per il corso da lui insegnato ed è stato una guida importante in questo lavoro di tesi. Un ringraziamento va alla mia famiglia, che ha contribuito in maniera fondamentale al raggiungimento di questo traguardo. Un ringraziamento speciale a Moira, che ha condiviso con me il percorso di questa tesi, mostrandone interesse notevole, nonostante l argomento trattato. Un grande ringraziamento a Marco Giuberti, importantissimo per il suo esempio nel mondo dell università e del lavoro. Grazie anche a tutti i miei amici, Fabio Cartagini, Filippo Ferri, Nicolò Moretti, Michael Riccò, Elisa Tovoli ed Elisa Trombi, che in questi anni hanno condiviso gioie e dolori della carriera universitaria. Un grazie a tutti i colleghi universitari che sono rimasti in circolazione durante la laurea specialistica, Andrea Benassi, Fabio Cavazzini e Federico Soliani. Infine, un caloroso grazie ad un prezioso collega, e direi quasi amico, Roberto Ugolotti. La sua disponibilità e competenza, anche cinematografica, si sono rivelate fondamentali in questi anni di studio ed in questa tesi. Genio.

4 Indice Introduzione 1 1 Soft computing Le reti neurali artificiali La logica fuzzy Calcolo evoluzionistico Swarm Intelligence Vantaggi del Soft Computing Reti neurali Il neurone Topologie Reti FeedForward a strati Reti FeedForward generiche Reti ricorsive Addestramento Apprendimento supervisionato Apprendimento non supervisionato Apprendimento per rinforzo Ulteriori considerazioni sull apprendimento Algoritmi evolutivi Applicazione degli algoritmi evolutivi alle ANN Evoluzione dei pesi iii

5 Indice iv Evoluzione delle architetture Evoluzione dei parametri Approcci all evoluzione delle architetture Lo schema di codifica diretta Lo schema di codifica indiretta CUDA Architettura di una GPU e considerazioni Programmazione Kernel Thread Warp Blocco Shared memory Device memory CUBLAS Implementazione parallela su GPU di Reti Neurali Evolutive La progettazione La classe FeedForwardNN La classe LearningSet La classe FeedForwardNNTrainer L implementazione su CPU Implementazione di FeedForwardNN Implementazione di LearningSet Implementazione di FeedForwardNNTrainer traincpubp traincpubatch Implementazione su GPU-CUDA traingpubatch La progettazione dell algoritmo genetico La classe FloatChromosome

6 Indice v La classe GAFeedForwardNN L implementazione dell algoritmo genetico Implementazione di FloatChromosome Implementazione di GAFeedForwardNN GUI - Graphic User Interface Risultati Sperimentali Benchmark 1 - Classificazione di segnali stradali Benchmark 2 - Problema mushroom di FANN Benchmark 3 - BCW Esecuzione dell Algoritmo Genetico Conclusioni 103 A Backpropagation 105 Bibliografia 107

7 Elenco delle figure 1.1 Porzione di rete neurale Neurone artificiale Funzione sigmoidale Generica rete neurale Rete neurale di tipo FeedForward a strati Esempio del funzionamento di una rete di tipo FeedForward Generica rete neurale di tipo FeedForward Rete FeedForward generata dalle connessioni in Tabella Rete ricorsiva generata dalle connessioni in Tabella Apprendimento supervisionato per reti neurali Generica SOM, detta anche Mappa di Kohonen Un esempio di due tipologie comuni di crossover Esempio di rete ricorsiva da tradurre in genoma Raffronto della capacità computazionale tra CPU e GPU Raffronto della larghezza di banda tra CPU e GPU Raffronto tra il modello teorico di una CPU e quello di una GPU Esempio di una generica porzione di rete dotata di neuroni di bias Rete corrispondente al file del Listato Rete di esempio per la backpropagation Esempio di passo in avanti della backpropagation standard Esempio di passo in avanti della backpropagation batch vi

8 Elenco delle figure vii 5.6 Interfaccia della GUI realizzata Esempio di un addestramento eseguito sul BCW problem Benchmark su CPU di una rete con numero variabile di neuroni dello strato intermedio Benchmark su GPU di una rete con numero variabile di neuroni dello strato intermedio Benchmark comparativi CPU-GPU di una rete con numero variabile di neuroni dello strato intermedio

9 Elenco delle tabelle 2.1 Matrice dei pesi di una rete FeedForward generica Matrice dei pesi di una rete ricorsiva Matrice delle connessioni relativa alla rete in Figura Matrice delle connessioni e dei pesi di una generica rete ricorrente Benchmark su 1000 epoche della rete 2500x150x90x Benchmark su 1000 epoche della rete 2500x150x90x30, con report intermedi ogni 10 epoche Benchmark su epoche della rete 2500x150x90x30, con report intermedi ogni 10 epoche Benchmark su 100 epoche di reti con diverse topologie Benchmark su 100 epoche di reti con diverse topologie e report intermedi ogni epoca Benchmark su 1000 epoche di reti con diverse topologie Benchmark su 1000 epoche di reti con diverse topologie e report intermedi ogni 10 epoche Benchmark su 1000 epoche di reti con diverse topologie e report intermedi ogni 10 epoche Benchmark su epoche di reti con diverse topologie Confronto con i risultati di alcune ricerche viii

10 Introduzione Lo scopo di questa tesi è stato realizzare un ambiente integrato per il soft computing parallelo su GPU e, in particolare, un pacchetto software in grado di progettare ed addestrare reti neurali artificiali in parallelo sfruttando la potenza di calcolo offerta dalle schede grafiche NVIDIA. Una caratteristica delle schede grafiche, rispetto ai processori tradizionali, è la possibilità di eseguire calcoli paralleli, anziché un singolo processo sequenziale. Inoltre, la loro architettura garantisce prestazioni ben più alte rispetto ad una classica CPU, a patto di sfruttare correttamente quelle operazioni che realizzano in modo più efficiente. L implementazione parallela, e la conseguente velocità di esecuzione degli algoritmi su scheda video, possono essere essenziali nell applicazione di molte tecniche di soft computing, in particolare le reti neurali artificiali. Le reti neurali artificiali sono infatti strutture di calcolo distribuite, composte da molte unità elementari che, tramite il loro calcolo congiunto, riescono a svolgere od approssimare funzioni molto complesse. Nel corso degli anni sono state sfruttate per diverse applicazioni, dalla visione artificiale, alla diagnosi di malattie, al controllo di robot. Per imparare a svolgere queste funzioni, però, la rete neurale deve essere addestrata tramite un opportuno algoritmo, detto di apprendimento. Questa è la fase più lenta e difficile per quanto riguarda il loro utilizzo. A seconda del problema trattato possono essere necessarie ore od addirittura giorni per insegnare alla rete un determinato comportamento. Uno degli algoritmi di apprendimento più utilizzati è l algoritmo di backpropagation, e permette, a partire da alcuni esempi di un comportamento corretto, di insegnare 1

11 Introduzione 2 alla rete a replicare lo stesso comportamento, rendendola però anche capace di generalizzare quanto appreso, ovvero di applicarlo correttamente anche a casi ed esempi mai visti prima. Il progetto si propone di implementare alcuni di questi algoritmi di apprendimento, e di aumentarne significativamente la velocità di esecuzione sfruttando i vantaggi derivanti dalla potenza di calcolo delle schede video e dalla natura intrinsecamente parallela delle reti neurali. Le reti neurali sono infatti strutture parallele, in quanto formate da molti neuroni, ciascuno dei quali opera in gran parte autonomamente. Inoltre, questa tesi si propone anche di esplorare una possibile integrazione tra reti neurali artificiali e algoritmi evolutivi. Gli algoritmi evolutivi sono un settore del soft computing che studia fenomeni evolutivi naturali, come lo sviluppo di nuove generazioni nelle popolazioni di esseri viventi, e cerca di copiarne e sfruttarne i principi, al fine di evolvere individui che rappresentino soluzioni sempre migliori ad un determinato problema. In particolare, nel progetto si sono applicati questi algoritmi allo sviluppo di reti neurali, evolvendo popolazioni di queste reti e cercando di ottenere strutture ottime sia per efficienza che per efficacia. Questo processo si svolge attraverso la generazione di successive popolazioni di reti neurali, partendo di volta in volta dalle migliori della generazione precedente, accoppiandole e mutandole per ottenere nuovi individui, e quindi reti, migliori dei precedenti. Questo permette di facilitare ulteriormente il compito allo sviluppatore di reti neurali, che può limitarsi alla sola impostazione delle caratteristiche basilari dell algoritmo evolutivo. Lo stesso algoritmo, poi, opererà autonomamente sulle popolazioni di reti, selezionando le migliori per ottenerne di ancora più performanti, riuscendo a giungere a risultati utili e reti valide in un tempo ragionevole e senza alcun vincolo o necessità di conoscenza a priori sul problema da trattare. Il progetto si propone quindi, anche attraverso un interfaccia grafica dedicata, di realizzare un ambiente software facile da usare ed estensibile, in grado implementare vari algoritmi di soft computing ed in particolare quelli che riguardano lo sviluppo e l addestramento di reti neurali artificiali.

12 Capitolo 1 Soft computing Il cosiddetto soft computing è un area di studio recente all interno dell informatica, essendo nata nei primi anni 90. Prima di allora, l approccio predominante alla soluzione dei problemi ingegneristici era di tipo esatto. Il sistema su cui operare era completamente definito, e si cercava di implementare su di esso un algoritmo deterministico, in grado di risolvere con precisione il problema presentato. Quest approccio matematico e analitico può essere molto efficace, ma non sempre applicabile col crescere della complessità dei problemi da risolvere. Infatti, lavorando in campi come la medicina, la biologia, l interazione con l essere umano, risulta spesso impossibile arrivare a metodi esatti, in quanto il sistema studiato risulta essere per gran parte imprevedibile all analista che può basarsi solo su un insieme limitato di nozioni scientifiche. Per risolvere queste situazioni è entrato in gioco il soft computing, ovvero un approccio morbido alla soluzione dei problemi. I metodi di soft computing sono stati definiti per operare in situazioni di incertezza, approssimazioni, verità parziali e imprecisione. Al contrario dell approccio hard, un metodo di tipo soft cerca di trovare una soluzione accettabile senza però prevedere e gestire tutti i possibili avvenimenti con metodo esatto. Un metodo soft cerca, con varie metodologie, di trovare una soluzione approssimata e a basso costo, ma robusta, a un problema troppo difficile per la metodologia tradizionale di approccio ai problemi. Più formalmente, cerca di risolvere problemi NP-completi trovandone una soluzione approssimata, ma ottenuta in tempo polinomiale. 3

13 Capitolo 1. Soft computing 4 Il soft computing si è sviluppato in diverse direzioni, tra le quali possiamo citare: le reti neurali (NN) la logica fuzzy il calcolo evoluzionistico la cosiddetta swarm intelligence 1.1 Le reti neurali artificiali L idea alla base delle reti neurali artificiali è creare una struttura connettiva simile a quella di un cervello biologico. Come per quest ultimo, sono presenti una serie di neuroni connessi tra loro, in grado, tramite il loro funzionamento congiunto, di produrre capacità cognitiva. Dal punto di vista computazionale, le operazioni svolta da ogni singolo neurone sono elementari. Tuttavia l unione di una massiccia quantità di elementi intelligenti riesce a formare una rete in grado di svolgere funzioni anche molto complesse. Figura 1.1: Porzione di rete neurale La rete è implementata in modo da adattarsi gradualmente all ambiente in cui si trova, proprio come un cervello biologico, in modo da imparare ad agirvi correttamente e secondo le specifiche volute dal suo creatore. Questo avviene utilizzando algoritmi

14 Capitolo 1. Soft computing 5 detti di apprendimento. Durante questo processo, il progettista non avrà un completo controllo su tutta la rete. Non riconoscerà l utilità di ogni singolo neurone o gruppo di neuroni. Semplicemente, osserverà che, nel tempo, l intera rete si comporterà via via meglio sul determinato problema. A seconda della complessità del problema, difficilmente la rete riuscirà a raggiungere un funzionamento corretto in tutti i casi. Tuttavia riuscirà, nel tempo, ad ottenere risultati sempre migliori, fino ad arrivare ad una buona od ottima approssimazione del funzionamento voluto, che sarebbe stata impossibile, o molto difficile e dispendiosa da raggiungere, usando approcci tradizionali. 1.2 La logica fuzzy La logica fuzzy è un estensione della classica booleana, che ha però la particolarità di non essere composta solo da affermazioni vere e affermazioni false, ma di permettere gradi intermedi tra queste. Ad esempio definendo valori come parzialmente vero o parzialmente falso. Interpretando la logica booleana assegnando vero = 1 e f also = 0, la logica fuzzy ammette anche tutto il range di valori tra 0 ed 1 come valori accettabili. In realtà, per ogni variabile definita in logica fuzzy, viene anche definito un cosiddetto fuzzy set, ovvero un elenco discreto dei valori che la variabile può assumere. Ad esempio, la temperatura dell acqua all interno di una caldaia può essere fredda o bollente. Questi sono i valori limite (vero o falso in logica booleana). Tra di essi però possono esserne definiti altri a seconda della temperatura dell acqua, come fresca, tiepida, calda. L insieme di tutti questi valori fuzzy compone appunto il fuzzy set della nostra variabile. A questo punto, dopo avere dichiarato tutta una serie di variabili fuzzy si possono formare regole fuzzy alle quali il sistema deve sottostare. Si tratta di semplici quesiti logici del tutto analoghi a quelli della logica booleana, però definiti in modo diverso. Ad esempio tramite la semplice regola del Listato 1.1 è possibile controllare la temperatura all interno di una caldaia riscaldando l acqua quando questa si raffredda. Infatti quando l acqua si avvicina alla temperatura fresca il riscaldamento verrà im-

15 Capitolo 1. Soft computing 6 Listato 1.1: Esempio di regola fuzzy IF t e m p e r a t u r a acqua IS f r e s c a THEN i n t e n s i t à r i s c a l d a m e n t o IS media postato ad un intensità media. E da notare che la logica fuzzy non associa questi valori ( fredda, fresca, tiepida, calda, bollente ) a soglie rigide, oltre le quali attivare la regola. Invece valuta ciascuna regola e verifica quanto si attivi. L acqua alla temperatura fresca è in realtà simile all acqua alla temperatura fredda, così come all acqua alla temperatura tiepida. In questo modo anche se l acqua è solo tiepida, la regola 1.1 può comunque attivarsi, impostando il riscaldamento non a livello medio, ma magari leggero o ad un valore intermedio tra i due. Il valore di output della logica fuzzy (come nel caso precedente medio ) è decodificato con un procedimento chiamato defuzzificazione al fine di renderlo effettivamente utilizzabile per controllare il sistema a cui è connesso, che può essere in logica binaria o analogica. In realtà la maggioranza dei sistemi fuzzy prevede una serie di regole fuzzy che concorrono a controllare l attuatore, a seconda di quanto le rispettive regole siano attivate. Questo può portare a realizzare sistemi di decisione potenti ed efficaci. A tal proposito sono stati anche definiti operatori analoghi a quelli classici booleani di AND, OR e NOT. Solitamente l AND restituisce il minore dei valori di attivazione tra le proposizioni. L OR invece il maggiore tra di esse. Il NOT, se il fuzzy set è mappato ad esempio tra 0 ed 1, restituisce 1 meno il valore della variabile stessa. 1.3 Calcolo evoluzionistico Questo campo del Soft Computing comprende algoritmi ispirati all evoluzione naturale per cercare una soluzione ad un problema non risolvibile con tecniche tradizionali, o risolvibile ma con sforzo computazionale molto intenso. Un algoritmo evolutivo prevede la creazione di una popolazione di individui ognuno rappresentanti una soluzione al problema, che concorrono o cooperano al raggiungimento della soluzione

16 Capitolo 1. Soft computing 7 ottimale al problema proposto. Questo può avvenire tramite successivi miglioramenti o ampliamenti della popolazione. Più in dettaglio, viene simulata l evoluzione di una popolazione biologica, guidata da una serie di regole che possono essere di tipo Darwiniano o Lamarckiano. L algoritmo evolutivo più diffuso, è denominato Algoritmo Genetico (Genetic Algorithm - GA). Questo algoritmo genera inizialmente una popolazione di individui (soluzioni al problema) in modo da campionare in modo soddisfacente lo spazio di tutte le soluzioni ammissibili. Successivamente, valuta una funzione di fitness per ciascuno di essi. Questa funzione definisce quanto quella specifica soluzione (individuo) è buona, e si avvicina a quella ideale. Valutato ciascun individuo inizia una fase di selezione, durante la quale i migliori di essi hanno più probabilità di essere scelti. Gli individui migliori sopravvivono, mentre quelli inferiori vengono eliminati. Inoltre gli individui migliori possono accoppiarsi tra loro per formare nuovi individui che in parte mantengono le caratteristiche dei genitori, in parte ne introducono delle nuove, frutto di combinazione dei geni paterni o di mutazioni. Questo fino ad ottenere una popolazione di una certa dimensione, che forma la generazione successiva. L algoritmo, quindi, ad ogni iterazione genera una nuova popolazione, che tende ad essere migliore della precedente. Continuando in questo modo si potrà esplorare in modo selettivo lo spazio delle soluzioni al nostro problema, basandosi un metodo che è stato provato essere efficace (da milioni di anni di evoluzione naturale). L algoritmo viene arrestato quando si sarà trovata una soluzione reputata abbastanza buona per il nostro problema o quando si avrà esplorato a sufficienza lo spazio delle soluzioni ammissibili. 1.4 Swarm Intelligence Questa tecnica, che potrebbe essere vista come una variante del calcolo evoluzionistico, basa anch essa i propri fondamenti sull osservazione di fenomeni biologici e naturali, come l intelligenza condivisa tra i membri di uno sciame di animali. Osservando infatti il comportamento di colonie di formiche o stormi di uccelli alla ricerca di cibo, si sono notati dei pattern o degli schemi che questi seguivano. Pur non avendo

17 Capitolo 1. Soft computing 8 una conoscenza completa dell ambiente nel quale si muovono, i singoli elementi di uno sciame sono in grado di orientarsi e spostarsi assieme in modo ben più efficace che singolarmente. Questo non solo per la quantità di elementi in gioco, ma anche per la capacità di comunicare tra di essi informazioni importanti sui migliori percorsi verso la meta (cibo o altro). Le formiche, ad esempio, vagano casualmente per un ambiente alla ricerca di cibo. Quando una formica trova del cibo, lo raccoglie e comincia a trasportarlo verso la tana. Lungo il percorso rilascia del feromone che rimane sul terreno per un certo lasso di tempo, fino ad evaporare. Successivamente, se altre formiche passano sul tratto di strada ricoperto dal feromone, saranno attratte da questo, e inizieranno a seguirne il percorso fino al cibo deponendone altro. Quindi, si verifica uno scambio di informazione utile tra gli elementi della colonia. Inoltre, c è un ulteriore possibilità fornita dall evaporazione naturale del feromone. Se più formiche trovano percorsi diversi verso il cibo, torneranno alla tana lasciando la scia di feromone che attrarrà altre formiche. Tuttavia, il feromone rilasciato dalla formica che ha compiuto il percorso più lungo, tende ad evaporare maggiormente. Quindi, le successive formiche che passeranno per la zona saranno più attratte dal percorso più ricco di feromone, ovvero quello più corto. Col passare del tempo il percorso più lungo sarà via via meno utilizzato, fino ad essere abbandonato del tutto in favore di quello più corto. Le formiche in questo modo trovano una soluzione ottimale al problema del cammino più corto verso la meta. Questo comportamento naturale è stato preso d esempio per realizzare un algoritmo di ricerca dei percorsi all interno dei grafi, chiamato appunto Ant Colony Optimization (ACO). Un altro algoritmo studiato e implementato con successo è la Particle Swarm Optimization (PSO). Questo algoritmo si ispira alle regole che governano il volo degli stormi di uccelli alla ricerca di cibo. Questi esplorano una zona di territorio muovendosi in parte autonomamente alla caccia di prede, in parte controllando se i vicini abbiano trovato zone redditizie. Quindi si influenzano l un l altro pur mantenendo una certa indipendenza. Lo stormo quindi si muove nello spazio, ma anche non in modo uniforme e può contrarsi o allargarsi a seconda della zona esplorata. Questo viene implementato nell algoritmo come un insieme di particelle che esplorano lo spazio delle

18 Capitolo 1. Soft computing 9 possibili soluzioni muovendosi a partire da una certa posizione e velocità iniziali. Ad ogni iterazione, mutano la loro direzione e velocità seguendo in parte le proprie valutazioni, in parte quelle degli elementi vicini o dell intero sciame. Le particelle, quindi, esploreranno autonomamente tutto lo spazio delle soluzioni convergendo verso una soluzione ottima o sub-ottima. 1.5 Vantaggi del Soft Computing Il soft computing, come già accennato, è particolarmente efficace in condizioni di incertezza, verità parziali o situazioni troppo complesse per essere gestite con un metodo esatto. In aggiunta a questi pregi, si possono notare altre caratteristiche che rendono il soft computing così attraente. In primo luogo è riscontrabile una miglior resistenza al rumore rispetto a metodi più tradizionali. Quando un metodo esatto viene applicato a sistemi influenzati da rumore esterno non prevedibile, l algoritmo può fallire senza trovare alcuna soluzione, o trovarne una pessima. Per quanto riguarda il soft computing, invece, questo troverà comunque una soluzione, magari alterata da questo rumore, ma comunque accettabile e tra le migliori per un sistema in quelle condizioni. Pensiamo ad esempio ad una funzione, per la quale esista un metodo esatto per trovare il minimo assoluto. In presenza di rumore, magari non stazionario e non derivabile, sommato alla funzione, l algoritmo esatto potrebbe persino non essere applicabile, o fallire. Invece, un algoritmo evolutivo, troverebbe agevolmente dei buoni minimi locali, e si avvicinerebbe molto a quello globale. Il soft computing può lavorare bene su spazi di ricerca molto difficili per le tecniche tradizionali. Un algoritmo evolutivo, ad esempio, come descritto da Yao [23], può trovare buone soluzioni su superfici non limitate, discrete, discontinue e non derivabili, complesse e rumorose, ingannevoli e multimodali. Un altra preziosa caratteristica dei metodi soft computing è la capacità di generalizzare. Questi sistemi infatti sono in grado, a partire da una base limitata di nozioni o di esempi, di arrivare ad una visione più ampia del problema e delle soluzioni (appunto di generalizzare ), fino a comportarsi correttamente in un grande numero di casi, anche non previsti dal progettista. Per esempio, una rete neurale potrebbe essere adde-

19 Capitolo 1. Soft computing 10 strata a riconoscere la presenza o meno di un automobile all interno di un immagine. Questo potrebbe essere utile in un sistema di guida assistita. Ebbene, durante l addestramento alla rete verranno sottoposti alcuni esempi selezionati di vetture, e questa autonomamente imparerà a riconoscere vetture di ogni tipo, anche mai viste prima. Questo avviene non imparando a memoria ma intuendo la regola generale che sta sotto la visione di un auto. Infine, una delle proprietà che rende il soft computing affidabile è la fault-tolerance, tolleranza ai guasti, che lo caratterizza. In un modello tradizionale, se viene meno una parte del sistema, o un parametro è erroneamente elaborato dall algoritmo, questo può causare il fallimento di tutto il metodo. Invece le strutture soft computing sono molto più elastiche, in parte per la già citata tolleranza al rumore, in parte per le topologie utilizzate. Pensiamo ad esempio ad una rete neurale con migliaia di neuroni implementati in hardware. Un danno ad una manciata di neuroni, o un calcolo errato svolto da questi, influenzerà il sistema in modo ridotto, non pregiudicando eccessivamente la qualità della soluzione. In un algoritmo di PSO l intrappolamento di una particella in un minimo locale, o l assegnazione ad essa di valori fuori scala, pregiudicheranno il solo comportamento di quella particella, e non dell intero sistema, che continuerà a comportarsi nel modo corretto.

20 Capitolo 2 Reti neurali Le Reti neurali artificiali costituiscono un modello topologico adatto a rappresentare i collegamenti tra elementi semplici in grado di compiere operazioni banali che formano una struttura non lineare in grado di esibire qualche forma di intelligenza, ovvero di apprendere e realizzare/approssimare una funzione desiderata. Alla base del modello è la simulazione di una rete di neuroni biologici. Il cervello umano, ad esempio, è composto da una grande quantità di neuroni (decine di miliardi) connessi tra loro tramite un enorme quantità di interconnessioni, chiamate sinapsi (migliaia per ogni neurone). Ricevendo gli impulsi provenienti dai nervi presenti in tutto il corpo, questi neuroni vengono sollecitati, e seguendo alcune regole, si possono attivare, propagando ai neuroni a cui sono collegati un ulteriore impulso, che anch essi valuteranno, per poi attivarsi a loro volta. Tutte queste possibilità di attivazione formano la complessità del cervello umano. Alcuni di questi neuroni, poi, trasmettono i loro impulsi al sistema nervoso e ai muscoli, realizzando da funzioni fisiologiche semplici come la respirazione, fino a quelle più complesse come l articolazione della parola. L interconnessione di tutti questi neuroni consente di produrre la coscienza, la conoscenza e gli istinti vitali dell uomo. Le reti neurali artificiali (NN o ANN) cercano di riprodurre queste strutture formalizzando i due elementi costitutivi dei modelli biologici: i neuroni e le connessioni tra di essi. Il neurone viene visto come un nodo in grado di ricevere input e produrre output, che forma una rete connettendosi con gli altri nodi. Le topologie teorizzate per 11

21 Capitolo 2. Reti neurali 12 simulare un cervello sono molte, e verranno discusse in seguito. La cosa che interessa per ora notare è che le reti neurali che andremo a trattare sono di dimensioni assai ridotte rispetto a quelle biologiche, in particolare quelle presenti nel cervello umano, il cui effettivo funzionamento rimane per molti aspetti uno dei più grandi misteri ancora da esplorare completamente. In questa sede possiamo però definire cosa rende così interessanti queste strutture, che in realtà sembrerebbero soltanto calcolatori paralleli. La particolarità più importante delle reti neurali artificiali è, al pari di una rete biologica, la capacità di apprendere un determinato comportamento, tramite esempi espliciti o addirittura autonomamente dagli stimoli sensoriali. Sono stati infatti proposti, e validati nel tempo, numerosi algoritmi, detti algoritmi di apprendimento, in grado di insegnare ad una rete neurale qualche tipo di comportamento da seguire. Di conseguenza si potrà utilizzare la rete neurale così addestrata per svolgere compiti quali riconoscere oggetti o controllare macchinari, diagnosticare malattie e molto altro ancora. 2.1 Il neurone Il principale elemento alla base di ogni rete neurale è il neurone, solitamente presente in gran numero nella rete e collegati con gli altri in vario modo. È quindi importante definirne subito il funzionamento per comprendere quello della rete complessiva. Il funzionamento di un generico neurone artificiale è così riassumibile (Figura 2.1): riceve in ingresso una serie di input da altri neuroni o dall esterno ne calcola una somma pesata, in cui è data più o meno importanza a ciascuna connessione (quindi a ciascun input) sul valore risultante applica una funzione non lineare (che eventualmente presenta un valore di soglia soglia fissa) il valore di questa funzione è l output del neurone stesso.

22 Capitolo 2. Reti neurali 13 input x 1 pesi w i1 somma funzione di attivazione x 2 w i2 output y i x 3 w i3. i x n w i n soglia Figura 2.1: Neurone artificiale Questo si può descrivere nella forma: ( n ) y i = f i w i j x j θ i j=1 (2.1) dove y i è l output del neurone i, f i è la funzione non lineare applicata alla somma pesata degli ingressi x j. La variabile w i j rappresenta il peso della connessione tra il nodo i ed il nodo j della rete. θ i è invece una soglia di attivazione per il neurone stesso (o bias). Con questa struttura di base è possibile costruire reti di complessità e topologia arbitrarie. Quello che resta da fare è definire delle connessioni tra i neuroni ed assegnare a ciascuna di esse un peso. Proprio questi pesi, come vedremo in seguito, codificheranno gran parte della capacità cognitiva della rete. Per quanto riguarda la funzione non lineare utilizzata si può scegliere tra un elevato numero di soluzioni alternative. Il modello originario del Percettrone prevedeva una funzione a gradino. Recentemente una delle funzioni più utilizzate è la sigmoide, eventualmente traslata (tangente iperbolica), la quale realizza l espressione: f (x) = e x (2.2)

23 Capitolo 2. Reti neurali 14 ed è visualizzabile come un gradino continuo e smussato (e derivabile) (Fig.2.2). Come vedremo questo risulterà molto utile nella fase di addestramento. Figura 2.2: Funzione sigmoidale 2.2 Topologie Definiti questi elementi del modello si può iniziare a parlare delle differenti architetture che sono state teorizzate e implementate per formare la rete a partire dai suoi nodi e dalle sue connessioni. Innanzitutto un elemento comune a gran parte delle reti neurali artificiali è disporre un certo numero n di ingressi e da un certo numero m di uscite, come si vede nella Figura 2.3. Gli ingressi riceveranno valori (stimoli) dall esterno e le uscite produrranno valori utilizzabili all esterno. Quindi, per convenzione, si defi- i 1 i 2 o 1 o 2.. NN o m i n Figura 2.3: Generica rete neurale

24 Capitolo 2. Reti neurali 15 niranno un numero n di neuroni detti neuroni di ingresso e un numero m di neuroni di uscita. Tutti gli altri neuroni che si andranno eventualmente ad inserire saranno detti neuroni nascosti perché non saranno direttamente connessi all ambiente esterno. Questi saranno ovviamente in quantità N n m, se N è il numero totale dei neuroni della rete artificiale. A partire da queste principali definizioni le reti possono essere classificate sulla base delle topologie che realizzano Reti FeedForward a strati Una delle topologie più comuni è quella della rete FeedForward a strati (layers). Sostanzialmente i neuroni vengono suddivisi in layers, assegnando ciascun neurone ad uno e un solo layer. I layers dovranno essere almeno due, cioè quello di ingresso e quello di uscita. Ogni layer addizionale viene detto hidden layer, ovvero strato nascosto, perché non accessibile dall esterno. La particolarità di questa topologia è che l uscita di ciascun neurone può essere connessa solamente a neuroni del layer immediatamente successivo nella lista degli strati (FeedForward). Ovvero i neuroni di input potranno essere connessi solamente ai neuroni del primo strato nascosto, quelli del primo strato nascosto solo a quelli del secondo, e così via sino allo strato di uscita. Questo è rappresentato in Figura 2.4. Nella figura si può notare che ogni neurone di uno strato i 1 Input Layer Hidden Layers Output Layer i 2 o o 2 o m i n Figura 2.4: Rete neurale di tipo FeedForward a strati

25 Capitolo 2. Reti neurali 16 è collegato a tutti i neuroni dello strato successivo. Questa è la struttura più comune e uniforme, detta rete completamente connessa. In realtà ogni neurone può avere un numero arbitrario di connessioni verso singoli neuroni dello strato successivo, anche soltanto una o nessuna. Questa tipologia di rete ha diversi pregi, e qualche difetto. Il pregio principale è la semplicità di definizione e di realizzazione. Infatti per definire una rete di questo tipo basta dichiarare le quantità di neuroni presenti in ciascuno strato ed, eventualmente (in caso di reti non completamente connesse), le connessioni tra di essi. Per quanto riguarda la realizzazione si può subito notare che l architettura è facilmente computabile in parallelo. Infatti per calcolare i valori dei neuroni di uno strato si possono eseguire in parallelo le somme dei soli neuroni dello strato precedente e il calcolo delle funzioni di attivazione. Questo però non va a discapito della capacità prestazionale di questo tipo di topologia. Infatti come già riportato da Lippmann [11] e dimostrato da Lorentz [12], una rete neurale di tipo FeedForward con 2 hidden layers e k(2k +1) neuroni è in grado di calcolare qualunque funzione continua di k variabili, a patto di essere in grado di determinare i pesi corretti e le corrette funzioni di attivazione tramite un algoritmo di apprendimento. Tra i difetti di questa topologia, per definizione, vi è quello di non potere creare strutture con retroazione tra i neuroni, mentre, logicamente, può avere senso che vi siano uno o più rami di feedback tra i nodi. Questo in realtà potrebbe essere un limite solo a seconda dell algoritmo usato per l addestramento, cosa che verrà discussa successivamente. Una cosa che si può notare, e che varrà anche per le altre topologie, è che i neuroni dello strato di ingresso svolgono la sommatoria di un solo valore: appunto il valore di ingresso. Per questo quasi sempre lo strato d ingresso è soltanto virtuale. Lo strato d ingresso quindi modifica solo il numero di ingressi della rete, ma i corrispondenti neuroni non calcolano alcuna funzione, passando il loro valore direttamente al layer successivo. Un esempio molto semplice del funzionamento di una rete FeedForward con due ingressi ed un uscita è quello in Figura 2.5.

26 Capitolo 2. Reti neurali 17 input output Figura 2.5: Esempio del funzionamento di una rete di tipo FeedForward con due input ed un output. All ingresso della rete si presentano i due input: 2 e 5. Questi vengono moltiplicati per il peso della propria connessione, quindi = 0.6 e = 0.5. I due valori vengono sommati ( = 1.1) e sulla somma si calcola la funzione sigmoidale f (1.1) = 1/(1 + e 1.1 ) = Quindi l output della rete sarà Reti FeedForward generiche La topologia FeedForward può anche essere implementata senza considerare la presenza di strati. Anche in questa architettura sono presenti n neuroni d ingresso e m neuroni d uscita. Tuttavia i neuroni non sono raggruppati per layer ma semplicemente numerati in ordine crescente, come una lista o un vettore. L unica limitazione tra le connessioni è che un neurone si possa collegare solo ad uno o più neuroni con indice maggiore del proprio, e mai minore. Quindi supponendo che vi siano N neuroni, l i esimo neurone potrà collegarsi al j esimo solo se i < j. Anche in questa topologia è possibile realizzare la piena connessione. Ogni neurone i sarà collegato a tutti i neuroni ad esso successivo: i + 1, i + 2, i + 3,... N (Figura 2.6). Unica regola aggiuntiva è che gli input non siano collegati tra loro, in quanto, come detto prima, sono nodi puramente virtuali. È evidente che questo tipo di topologia aumenterà in maniera quadratica il numero delle connessioni, che potranno diventare dell ordine di N 2. Questo è insieme il punto di forza e di debolezza della topologia. Da un lato permette di inserire connessioni che potrebbero avere significato a seconda del problema trattato e dell algoritmo di apprendimento. Dall altro però rende molto più complessa la descrizione della rete e lenti l esecuzione e l addestramento. Una particolarità interessante di questo tipo di topologia è che le connessioni ed eventualmente i loro pesi possono essere rappresentati

27 Capitolo 2. Reti neurali 18 n inputs n n+1 N-m-1 N-m N m outputs Figura 2.6: Generica rete neurale di tipo FeedForward mediante una matrice triangolare superiore usando come indici i neuroni di partenza e quelli di arrivo, come in Tabella Tabella 2.1: Matrice dei pesi di una rete FeedForward generica Considerando i come indice di riga e j come indice di colonna si può risalire a quanto vale il peso della connessione corrispondente w i j e conoscere quindi la completa topologia della rete. In caso un valore manchi dalla tabella (come nei casi w 12 e w 14 ), o che sia nullo, il collegamento tra i due neuroni non esiste. La Figura 2.7 mostra la topologia derivante da questa rappresentazione Reti ricorsive L ultima limitazione che si può togliere alle topologie di reti neurali già trattate è quella di non ammettere feedback. Le reti neurali ricorsive possono invece avere qualunque

28 Capitolo 2. Reti neurali 19 input output Figura 2.7: Rete FeedForward generata dalle connessioni in Tabella 2.1. tipo di connessione tra i neuroni (tranne collegamenti fra neuroni d ingresso, come detto). Anche in questo caso si può avere un numero di connessioni dell ordine di N 2, ma al contrario delle reti FeedForward il calcolo dell output risulta assai più complesso, in quanto ora non tutti i calcoli possono essere svolti in maniera sequenziale, ma bisogna tenere anche conto dei feedback della rete. Anche per questa topologia di rete si può definire una matrice che ne rappresenti le connessioni come quelle delle reti FeedForward generiche. Tuttavia in questo caso la matrice non sarà più triangolare superiore, ma rettangolare completa Tabella 2.2: Matrice dei pesi di una rete ricorsiva La Figura 2.8 mostra la topologia derivante da questa rappresentazione. input output Figura 2.8: Rete ricorsiva generata dalle connessioni in Tabella 2.2.

29 Capitolo 2. Reti neurali Addestramento Trattiamo ora la caratteristica principale delle reti neurali: la capacità di apprendimento mediante un algoritmo di addestramento (o training). L addestramento consiste nel modificare i pesi in modo che la rete svolga un particolare compito, a seconda dell ambiente o del sistema in cui si trova. Questo può variare dal sapere dividere una serie di oggetti che le vengono presentati in categorie, al controllare un veicolo, al prendere decisioni finanziarie. In ogni caso si cerca di fare assumere alla nostra rete una serie di ben precisi output in corrispondenza di specifici input, realizzando quindi una funzione di cui gli esempi costituiscono un campionamento (eventualmente rumoroso). Per fare questo ci si avvale di algoritmi detti di apprendimento, che tradizionalmente possono essere separati in tre categorie principali: Apprendimento supervisionato Apprendimento non supervisionato Apprendimento per rinforzo Apprendimento supervisionato L apprendimento supervisionato consiste nell insegnare alla rete un determinato comportamento grazie al controllo di un supervisore. La rete è addestrata mostrandole un associazione fra un possibile input e l output che la rete dovrà produrre in quel caso. Questo processo sarà ripetuto finché la rete non otterrà un comportamento soddisfacente sia sui dati con cui è stata addestrata, sia su in insieme di casi mai visti usati come riferimento (capacità di generalizzare). Molti degli algoritmi di apprendimento supervisionato possono essere descritti come in Figura 2.9. L algoritmo gestisce un cosiddetto Training Set. Questo è formato da una serie di esempi che la rete neurale userà per imparare a svolgere il proprio lavoro. Questi esempi sono una lista di coppie input-output che rappresentano ciascuno un generico

30 Capitolo 2. Reti neurali 21 INIZIO LA RETE LEGGE UN SET DI INGRESSI CALCOLA LE USCITE CORRISPONDENTI VERIFICA QUANTO SIANO DIFFERENTI DA QUELLE DESIDERATE AGGIORNA I PESI DELLE CONNESSIONI PER RIDURRE QUESTA DIFFERENZA NO LA DIFFERENZA È PICCOLA? FINE SI Figura 2.9: Apprendimento supervisionato per reti neurali

31 Capitolo 2. Reti neurali 22 pattern di ingresso (con n valori) e la corrispondente uscita (con m valori) (esempio Listato 2.1). Listato 2.1: Esempio di un semplice Training Set per addestrare una rete composta da 2 ingressi ed 1 uscita a riprodurre la classica funzione XOR IN : 0 0 OUT: 0 IN : 0 1 OUT: 1 IN : 1 0 OUT: 1 IN : 1 1 OUT: 0 L algoritmo sottopone alla rete questi esempi, uno ad uno. Ad ogni esempio la rete calcola i suoi output. L algoritmo valuta questi output, e verifica quanto siano simili a quelli desiderati. A seconda di questa distanza dalle uscite ottimali aggiorna i pesi delle connessioni (che come già detto rappresentano la conoscenza vera e propria della rete), in modo da ridurre queste differenze. Ci sono numerosi algoritmi che operano in vari modi; uno tra i più utilizzati la backpropagation (Appendice A), che è una discesa del gradiente. Questa procedura viene iterata più volte (dette Epoche) per ogni esempio del Training Set. Dopo un certo numero di epoche, o quando si è raggiunta una differenza sufficientemente piccola fa output della rete e output desiderati, si può terminare l algoritmo Apprendimento non supervisionato Al contrario dell apprendimento supervisionato, quello non supervisionato non prevede la presenza di un agente esterno che guidi l addestramento della rete. Questo corrisponde a mostrare alla rete un Training Set composto da esempi che riportano i soli ingressi, e nessuna indicazione su quali uscite produrre. La rete adatterà la propria configurazione in base agli esempi che gli sono stati sottoposti ed alla regola di apprendimento utilizzata. Ciò consente solitamente di catalogare o suddividere i casi del Training Set in categorie o classi. Quindi la funzione di una rete in questo caso diventa quella di clusterizzare l informazione sulla base di schemi che si ripetono e difficili da individuare per un operatore umano.

32 Capitolo 2. Reti neurali 23 Tra le reti più utilizzate che si basano su questo tipo di apprendimento le reti SOM - Self Organizing Maps teorizzate da Kohonen [8] sono le più comuni. La topologia tipica è rappresentata in Figura 2.10 i 1. i n Figura 2.10: Generica SOM, detta anche Mappa di Kohonen Ogni singolo ingresso della rete è collegato ad ogni neurone d uscita. Al presentarsi di un determinato pattern in ingresso, l algoritmo di addestramento non supervisionato andrà a rafforzare i collegamenti (e quindi i pesi delle connessioni) verso uno di questi neuroni di uscita. In particolare rafforzerà il neurone di output che più assomiglierà al segnale in ingresso, ovvero quello la cui somma pesata delle connessioni sarà di valore maggiore. In questo modo, successivi pattern simili in ingresso andranno ancora a essere rappresentati da quell output. Inoltre viene introdotto anche il concetto di vicinanza tra i neuroni. All aggiornamento dei pesi di uno dei neuroni di uscita anche quelli dei neuroni fisicamente vicini verranno modificati in modo da aumentarne l uscita in presenza di tale esempio. Col passare degli esempi, pattern simili produrranno l uscita più alta in neuroni vicini della rete, che quindi avrà diviso (o clusterizzato) in modo corretto i nostri dati o si preparerà a funzionare come classificatore. Il risultato sarà una rete divisa efficacemente nei prototipi dei dati che si volevano classificare, costituiti dai pesi dei neuroni della rete, la cui funzione di attivazione produce un uscita tanto più alta quanto più simile è l ingresso ai pesi delle connessioni fra ingresso e neurone.

33 Capitolo 2. Reti neurali Apprendimento per rinforzo Un generico algoritmo di apprendimento per rinforzo agisce sul sistema senza un supervisore che dica alla nostra rete cosa debba fare in ogni caso. Tuttavia, prevede comunque una qualche forma di ritorno per la qualità del lavoro che la rete sta eseguendo. Infatti, al contrario dell algoritmo supervisionato, nel quale venivano specificati precisamente gli output da ottenere, qui viene soltanto data una valutazione di correttezza di quanto la rete sta facendo. Questa valutazione viene generalmente chiamata reward (ricompensa). A seconda che la ricompensa sia alta o bassa la rete sarà incoraggiata dall algoritmo a tenere o meno lo stesso comportamento quando si ripresentano casi simili. Quindi, a lungo andare, la rete dovrà basarsi solo su questa reward per potere migliorare il proprio comportamento all interno del sistema. Da un lato questo approccio può essere più semplice da implementare perché non prevede la creazione di un Training Set completo e rappresentativo. Dall altro però questa tecnica rallenterà pesantemente l addestramento, che dovrà essere effettuato su molte più iterazioni e risentirà della cripticità delle informazioni di ritorno Ulteriori considerazioni sull apprendimento Quando si parla di algoritmi di apprendimento, ed in particolare di apprendimento supervisionato, diventa fondamentale la specifica del Training Set. Sono state elaborate alcune linee guida da seguire per ottenere Training Set efficienti. Fondamentale è la completezza della rappresentazione del problema, ovvero la necessità di tutta una serie di esempi che arrivino a descrivere bene l ambiente nel quale la rete dovrà operare. Tralasciare alcuni comportamenti magari poco frequenti potrebbe invalidare l intero addestramento, qualora questi siano comunque fondamentali. Quindi è consigliabile avere un Training Set diversificato e rappresentativo. Un altro aspetto importante è il bilanciamento. E fondamentale garantire che gli elementi di un Training Set siano bilanciati in quantità tra loro. Fornire dieci esempi di un comportamento e uno di un altro porterà la rete ad apprendere bene il primo, ma a comprendere male o addirittura a tralasciare il secondo. Ovviamente poi conta la dimensione del Training Set: un in-

34 Capitolo 2. Reti neurali 25 sieme troppo ampio o ridondante di esempi rallenterebbe inutilmente l addestramento della rete, che è spesso la fase più onerosa del suo utilizzo. Il Training Set è fondamentale per quanto riguarda l addestramento di una rete neurale. Con le successive presentazioni degli esempi, però, si è riscontrato che a volte la rete può specializzarsi troppo, arrivando a rendere alla perfezione il Training Set, ma fornendo risultati pessimi in altri casi anche poco differenti dagli esempi stessi. In questo caso si parla di overtraining (o sovra-addestramento). In reti particolarmente grandi, infatti, o dopo una lunga sequenza di addestramento, può accadere che la rete apprenda talmente bene il Training Set da impararlo a memoria, fino a perdere la capacità di generalizzare, ovvero di giudicare correttamente casi simili, ma non esattamente identici. Per ovviare a questo problema si utilizza il cosiddetto Test Set. Il Test Set per conformazione è totalmente identico al Training Set: una serie di corrispondenze ingressiuscite che descrivono il comportamento ideale della nostra rete. Tuttavia, il Test Set deve comprendere elementi diversi da quelli del Training Set. È possibile, volendo, partire da un insieme più grande di casi, e selezionarne una parte per il Training Set ed una per il Test Set. Il Training Set ed il Test Set infatti, pur contenendo esempi diversi, devono condividere la distribuzione statistica degli esempi stessi. Il Test Set non viene usato dalla rete durante l addestramento, ma solo successivamente. Infatti, una volta ottenuti risultati soddisfacenti addestrando la rete, si andrà ad accertare quanto questa sia stata in grado di generalizzare. Questo si verificherà valutando la rete proprio sul Test Set. Per questo è importante che gli elementi che lo compongono non siano stati usati durante l addestramento. Valutando i risultati ottenuti sul Test Set, e verificando che anch essi siano buoni, si avrà la sicurezza che la rete abbia appreso a sufficienza, generalizzando e senza ricadere nell overtraining. Il Test Set potrebbe anche essere utilizzato durante (ma non dentro) l addestramento, qualora si vedesse che i risultati della rete continuino a migliorare sul Training Set ma, tramite valutazioni intermedie, si noti che inizino a peggiorare sul Test Set. In questo caso la rete starebbe iniziando a sovra-addestrare e quindi sarebbe opportuno interrompere l addestramento. A questo punto, però, andrebbero definiti tre set diversi: Training Set

35 Capitolo 2. Reti neurali 26 Validation Set, usato per arrestare l addestramento Test Set, per valutarne la generalizzazione

36 Capitolo 3 Algoritmi evolutivi Gli Algoritmi evolutivi (Evolutionary Algorithms - EA) sono una serie di strategie ispirate all evoluzione naturale applicabili come algoritmi di ottimizzazione. Si basano sull evoluzione di una popolazione di individui che competono e collaborano per trovare la miglior soluzione possibile ad un problema. L esplorazione dello spazio delle possibili soluzioni avviene attraverso operatori ispirati alla riproduzione genetica, detti di ricerca, che provvederanno ad analizzare e valutare questo spazio facendo evolvere la popolazione in modo efficace, alla ricerca di minimi locali e globali. Uno degli algoritmi di questo tipo tra i più diffusi è detto Algoritmo Genetico (GA). Come suoi operatori di ricerca implementa la combinazione e la mutazione, applicati agli individui che comporranno le successive generazioni della popolazione. In particolare ogni individuo che rappresenta un punto nello spazio di ricerca (soluzione di un problema) è codificato secondo una rappresentazione delle sue caratteristiche detta genotipo. Il genotipo verrà poi decodificato in una soluzione applicabile al problema da risolvere, detta fenotipo. Una volta decodificata, ogni soluzione sarà valutata da un apposita funzione di fitness che ne stabilirà la bontà. Le soluzioni migliori saranno scelte secondo un algoritmo detto appunto di selezione (roulette wheel, tournament selection,... ). I genomi che avranno fornito le soluzioni migliori verranno scelti come base per usare gli altri due operatori, ovvero la combinazione e la mutazione. Due genomi potranno essere combinati tramite un operazione detta di crossover, ovvero verrà generato un nuovo 27

37 Capitolo 3. Algoritmi evolutivi 28 individuo (o meglio, il suo genoma), a partire dalle caratteristiche dei suoi genitori. La codifica dell individuo così generato deriverà in parte dalla codifica di un genitore, in parte da quella dell altro. Tra le scelte più utilizzate per la combinazione ci sono il one-point crossover e il two-point crossover (Figura 3.1), l uniform crossover e altri. one point crossover two point crossover = = & & Figura 3.1: Un esempio di due tipologie comuni di crossover. Il one-point crossover sceglie un punto nella stringa dal quale effettuare il crossover. Il two-point sceglie due punti ed effettua il crossover su tutti i bit compresi nell intervallo. Successivamente si potrà applicare anche l operatore di mutazione al nuovo nato. Questo partirà dal genoma generato dai genitori e gli applicherà qualche tipo di mutazione, simile a quella che avviene negli organismi biologici. Quindi il genoma generato potrà introdurre soluzioni innovative, che poi verranno valutate dalla funzione di fitness, per verificare se abbia senso trasmetterle alle nuove generazioni, o scartarle. Anche qui si possono elencare alcuni operatori utilizzati molto di frequente, come il point mutation o l inversion. In realtà tutti questi operatori devono essere definiti a seconda della rappresentazione del problema, e quindi dei genotipi che andranno a popolare le generazioni di individui. Una delle operazioni più importanti nella specifica di un buon algoritmo evolutivo sarà infatti proprio implementare degli operatori di ricerca in grado di esplorare efficacemente lo spazio delle soluzioni. Una volta applicati tutti gli operatori di ricerca agli individui selezionati di una generazione, ne verrà creata una successiva appunto con alcuni tra i migliori selezionati e con tutti i nuovi, generati dalle riproduzioni e dalle mutazioni. Selezionando opportunamente gli operatori e i parametri dell algoritmo (come popolazione iniziale,

38 Capitolo 3. Algoritmi evolutivi 29 probabilità di crossover e mutazione, ecc... ), si potrà simulare un evoluzione che via via raffinerà la propria ricerca, arrivando a trovare molti ottimi locali per il problema proposto, fino a convergere ad una soluzione sub-ottima. 3.1 Applicazione degli algoritmi evolutivi alle ANN Una delle applicazioni più interessanti studiate negli anni recenti nell ambito del soft computing riguarda l interazione tra gli algoritmi evolutivi e le reti neurali. L idea di applicare l evoluzione alle reti neurali artificiali non è affatto strana, visto che entrambi i modelli si basano sull osservazione e l imitazione di fenomeni naturali abbastanza correlati, come l evoluzione e lo sviluppo dell intelligenza all interno del cervello. Sono stati studiati molti approcci diversificati al problema, tra i quali: l uso degli algoritmi evolutivi come algoritmo per l addestramento della rete l uso degli algoritmi evolutivi per trovare una topologia di rete che meglio si adatti a risolvere determinati problemi l uso di algoritmi evolutivi per ricercare nuovi parametri e regole per l apprendimento Evoluzione dei pesi Una prima applicazione di un algoritmo evolutivo ad una rete neurale può essere quella in cui si usa l evoluzione per addestrare la rete stessa. Quindi l idea che sta alla base di questa implementazione è quella di rimpiazzare (od affiancare) l algoritmo tradizionale di addestramento (come la backpropagation) con uno di tipo evolutivo. Questo, al pari di uno tradizionale, andrà nel corso dell addestramento, a modificare i pesi delle connessioni dei neuroni della rete, fino a trovare una combinazione efficace per risolvere un determinato problema. Al contrario di un approccio classico, però, non procederà per aggiornamenti graduali, e seguendo metodi esatti come la discesa del gradiente. Infatti evolverà di

39 Capitolo 3. Algoritmi evolutivi 30 volta in volta popolazioni di individui rappresentanti ognuno l intera rete, con tutte le sue connessioni. Quindi genererà inizialmente una popolazione di reti, ognuna coi propri pesi, e ne valuterà la bontà (fitness). Sceglierà le reti migliori e le farà combinare (crossover) e mutare. A seconda di come questi operatori saranno definiti la nuova rete figlia erediterà porzioni dei pesi dei genitori (e quindi conoscenza se queste operavano correttamente), e proverà tramite la mutazione a generare nuova conoscenza. Questo approccio ha dato buoni risultati in molti casi rispetto a tecniche tradizionali come la backpropagation [19] [21], anche, e soprattutto, per la miglior capacità degli algoritmi evolutivi di evitare di cadere in in minimi locali, al contrario delle tecniche basate sul gradiente Evoluzione delle architetture Nella precedente sottosezione sull evoluzione dei pesi si è dato per scontato che le reti avessero una struttura ben definita e che l algoritmo evolutivo variasse i pesi delle connessioni. In realtà gli algoritmi evolutivi possono essere utilizzati anche per evolvere l architettura della rete. Per esempio, lavorando su una rete con architettura FeedForward a strati, potrebbe essere utile scoprire quali topologie sono le più efficaci per un determinato problema, ovvero la dimensione di ciascuno strato. Oppure, in un architettura di tipo meno rigido, come quelle ricorrenti, è interessante scoprire quali topologie possono avere più senso, evolvendo le connessioni fino a trovare strutture in grado di svolgere bene qualche funzione. Infine sono possibili anche approcci più complessi, non ultimo quello di evolvere contemporaneamente pesi e architetture della rete, cosa che permette di ridurre molti problemi inerenti al rumore dei pesi e alla mappatura genotipo-fenotipo in questo tipo di reti evolutive[9] Evoluzione dei parametri L evoluzione dei parametri e delle regole può essere vista come imparare ad addestrare una rete neurale. Ovvero scoprire, tramite l evoluzione, algoritmi efficienti per

40 Capitolo 3. Algoritmi evolutivi 31 addestrare le reti neurali. All inizio dell evoluzione verrà espressa qualche generica funzione di apprendimento, con una grande quantità di parametri fondamentali che la governano. Questi parametri saranno evoluti dall algoritmo. Di volta in volta si testeranno le regole evolutive sviluppate per verificarne l efficacia sull addestramento di una generica rete. Questo metodo si propone, mediante l evoluzione, di scoprire nuove tecniche di addestramento, o di trovare parametri efficienti per tecniche già conosciute. Tramite questi approcci si sono riusciti a ri-scoprire in modo automatico algoritmi già utilizzati e trovarne anche varianti finora inesplorate [4]. 3.2 Approcci all evoluzione delle architetture Quando si parla di evoluzione delle architetture di una rete neurale, la prima importante valutazione da fare è quali e quanti aspetti evolvere, e quali vantaggi possa apportare un approccio rispetto ad un altro. Come abbiamo già detto, una prima distinzione può essere quella tra evolvere l architettura della rete ed addestrare poi la rete normalmente (backpropagation), o evolvere sia l architettura che i pesi contemporaneamente. Questo in realtà ci porta a discutere dei due principali metodi di codifica delle architetture di una rete neurale: la codifica diretta la codifica indiretta Lo schema di codifica diretta La codifica diretta, come il nome stesso implica, si propone di rappresentare direttamente l intera architettura della rete, senza mediazioni. Quindi il genoma sarà composto da ciascun elemento costitutivo della rete neurale, senza lasciare nulla da interpretare agli algoritmi addizionali, come quello di addestramento. Come già visto nelle sottosezioni e 2.2.3, una rete neurale con le sue connessioni può essere vista come una matrice di NxN elementi, che possono essere i

41 Capitolo 3. Algoritmi evolutivi 32 pesi delle connessioni, o semplicemente 1 e 0 che rappresentano se esista o meno un collegamento tra i due nodi. Da questa rappresentazione è semplicissimo ricavare un genoma, ad esempio trasformando la matrice in un vettore. Questo vettore, a sua volta, è rappresentabile come una stringa di bit (nel caso si conservino anche i pesi sarà un array di numeri reali). In questo modo abbiamo già definito completamente una mappatura da ogni architettura verso il suo genoma. Vediamo un esempio di una generica rete neurale: Fig Figura 3.2: Esempio di rete ricorsiva da tradurre in genoma Questa può essere mappata nella Tabella Tabella 3.1: Matrice delle connessioni relativa alla rete in Figura 3.2 Nella colonna sinistra sono indicati i neuroni di partenza e nella riga sopra quelli di arrivo, per ciascuna connessione. Ovviamente l 1 sta ad indicare la presenza di una connessione, lo 0 un assenza. È immediato tradurre questa matrice in una stringa di bit e quindi in un genoma: { } Partendo da questa tipologia di codifica è facile implementare i classici operatori di crossover e mutazione che sono già stati visti. Tradizionalmente, infatti, la codifica a stringa di bit è una delle più utilizzate e quindi già ricca di molte analisi sull efficacia dei suoi operatori. Partendo da questo genoma, quindi, la conversione in fenotipo

42 Capitolo 3. Algoritmi evolutivi 33 riuscirà a creare la corretta rete. Specificando però solo la presenza o meno di connessioni, resteranno comunque da definirne i relativi pesi. Questi pesi verranno impostati dall algoritmo di addestramento tradizionale, per completare la decodifica in fenotipo. A questo punto verrà eseguito l addestramento vero e proprio che, giunto al termine, ci fornirà risultati sull efficacia (fitness) della struttura. Alternativamente a questo approccio, ma comunque con metodo diretto, si possono già specificare nella matrice della rete i relativi pesi di ogni connessione, come già visto in precedenza (e riportato nuovamente in Tabella 3.2) Tabella 3.2: Matrice delle connessioni e dei pesi di una generica rete ricorrente Tuttavia questa volta la mappatura in fenotipo sarà diversa e il risultato sarà un array di numeri reali, rappresentabili ad esempio con il formato float: { } Quindi, a parte l ovvio problema delle quantità di dati da memorizzare, sorge la necessità di definire corretti operatori di crossover e mutazione. Una prima idea potrebbe essere quella di convertire semplicemente i numeri reali che compongono il vettore in una stringa di bit. Questo è possibile ad esempio convertendo i parametri dal tipo float al corrispettivo formato binario con i quali vengono memorizzati sui calcolatori. Questo approccio è praticabile, e ci permette di usufruire dei classici operatori di crossover e mutazione su stringhe, senza alcuno sforzo addizionale. Tuttavia è facile intuire che un crossover che aveva senso su una stringa di bit rappresentanti ciascuno una connessione o meno, può avere molto meno senso in questo ambito. Infatti la ricombinazione tra due float sotto forma di bit potrebbe partire da due valori relativamente vicini nella rappresentazione reale e trasformarli in un valore di uscita completamente diverso e poco correlato con i genitori.

43 Capitolo 3. Algoritmi evolutivi 34 Un alternativa a questo è ridefinire gli operatori di crossover e mutazione, adattandoli alla logica dei numeri reali, magari nella loro rappresentazione floating point. Questo è stato implementato in alcuni studi con successo [15]. E importante notare che in entrambi questi approcci con i pesi delle connessioni già descritti nella matrice non è necessario prevedere una fase di addestramento. Infatti, l intera rete compresi i pesi delle connessioni vengono evoluti dall algoritmo. Nell approccio precedente (un bit per ogni connessione), dopo la decodifica, per valutare la fitness era necessaria una fase di training che assegnasse alla rete tutti i pesi che le permettessero di operare. Con questa tecnica, invece, i pesi vengono già gestiti dall evoluzione, e quindi la valutazione della fitness si riduce a testare il funzionamento della rete su un Training Set Lo schema di codifica indiretta Spesso può essere più conveniente, e più logico, utilizzare una metodologia di codifica meno complessa e pesante, questo sia per quanto riguarda le strutture dati che è necessario memorizzare ed elaborare nel processo di evoluzione, sia per quanto riguarda l effettiva capacità espressiva del metodo, che spesso non richiede di scendere a tale livello di dettaglio. Anche dal punto di vista biologico, un cromosoma non specifica tutta la completa struttura nervosa che andrà a creare [7]. Per rispondere a queste esigenze, si può creare una metodologia di codifica detta indiretta. Al contrario di quella diretta, questa specifica solo una serie di parametri, che andranno poi interpretati per generare il fenotipo, a partire dal genotipo. Un esempio potrebbe essere la descrizione di una rete di tipo FeedForward a strati. Come già detto nella sottosezione 2.2.1, infatti, per specificare una rete di tipo FeedForward a strati, basterebbero pochi parametri. Per definire in maniera totale una rete completamente connessa di questo tipo basterebbero infatti il numero di strati nascosti e le dimensioni di ciascuno di questi. Sarebbe possibile però evolvere anche altri parametri, quali le funzioni di attivazione di ciascun layer, oppure, nel caso di reti non completamente connesse, anche le percentuali di connessione tra uno strato e l altro. In ogni caso il genoma così codificato si ridurrà a pochi valori contro le migliaia di quelli di una

44 Capitolo 3. Algoritmi evolutivi 35 codifica diretta. Questo rende l algoritmo evolutivo assai veloce e permette di concentrarsi maggiormente sulla valutazione della fitness, che avverrà nuovamente tramite l addestramento classico, come descritto nella codifica diretta delle sole connessioni. Un semplice genoma come: { } andrebbe a definire una rete con n ingressi e m uscite (a seconda delle dimensioni del Training Set), 2 strati nascosti, uno da 140 neuroni, ed uno da 30 neuroni. In un caso come questo la rete sarebbe completamente connessa e ciascuna funzione di attivazione sarebbe quella predefinita (ad esempio quella sigmoidale). Contemporaneamente a questi parametri, vista la leggerezza della rappresentazione, e possibile anche evolvere parametri del successivo addestramento, per esempio il learning rate, il momentum e gli altri parametri della backpropagation, affinché anch essi vengano ottimizzati dall evoluzione. E evidente che un approccio di questo tipo facilita enormemente una buona implementazione dell algoritmo evolutivo, e permetterà di gestire velocemente popolazioni molto più grandi, magari al prezzo di una minore espressività. Inoltre sarà anche più agevole introdurre operatori di crossover e mutazione, cosa assai complicata nelle rappresentazioni dirette dove un mediocre operatore di ricerca può pregiudicare seriamente l intero algoritmo. Infine, un interessante alternativa a questo tipo di codifica indiretta per parametri è quella di codificare nel genoma i parametri di alcune regole costruttive per la rete, anziché dei valori. Queste, nella successiva decodifica a fenotipo (più onerosa), andranno a formare la topologia vera e propria della rete, seguendo qualche regola topografica di espansione precedentemente definita.

45 Capitolo 4 CUDA CUDA è un architettura per il calcolo parallelo basata su processore grafico (GPU) sviluppata da NVIDIA. Permette agli utenti equipaggiati con schede video NVIDIA di sfruttarle per l esecuzione di programmi general purpose, al pari di quello che si potrebbe fare con un processore (CPU). Infatti, è messo a disposizione degli sviluppatori di software un linguaggio chiamato C for CUDA, molto simile al C tradizionale, che permette di sfruttare agevolmente tutte le capacità computazionali delle schede video. A differenza delle classiche CPU, però, l approccio di programmazione è totalmente orientato alla parallelizzazione del programma. Infatti, se una CPU punta ad eseguire un singolo thread il più velocemente possibile, la GPU ne esegue invece una grande quantità in parallelo, ciascuno dei quali è in genere più lento di quello della CPU. Il risultato è che se si riesce a parallelizzare l algoritmo che si vuole eseguire in modo efficiente, la GPU garantirà capacità computazionali molto superiori a quelle di CPU della stessa generazione, come si vede nelle figure 4.1 e 4.2. A seconda quindi dell algoritmo che si deve implementare, e dell esperienza dello sviluppatore che andrà a parallelizzarlo, si potranno ottenere benefici dal punto di vista prestazionale in media di uno o più ordini di grandezza. In particolare l esecuzione su GPU sarà molto efficace per algoritmi che presentino calcoli aritmeticamente intensi e che operino su grandi quantità di dati, visto che questo è proprio lo scopo per cui sono progettate le schede video che gestiscono la grafica delle applicazioni. Da un punto di vista ingegneristico, infatti, le schede video sono state progettate 36

46 Capitolo 4. CUDA 37 Figura 4.1: Raffronto della capacità computazionale tra CPU e GPU nel corso degli anni. Dalla NVIDIA CUDA Programming Guide c Figura 4.2: Raffronto della larghezza di banda tra CPU e GPU nel corso degli anni. Dalla NVIDIA CUDA Programming Guide c

47 Capitolo 4. CUDA 38 per avere strutture di controllo di flusso molto più semplici di quelle delle CPU, e di non utilizzare cache, come si vede in Figura 4.3. Questo perché i calcoli che devono effettuare sono quasi sempre gli stessi: operazioni matematiche in virgola mobile su vettori e matrici di dati. Figura 4.3: Raffronto tra il modello teorico di una CPU e quello di una GPU. Dalla NVIDIA CUDA Programming Guide c 4.1 Architettura di una GPU e considerazioni Una generica GPU NVIDIA è dotata di una serie di multiprocessori (30 per i modelli high-end Tesla, 16 per i modelli Fermi), ognuno dei quali comprende a sua volta un numero di core (8 per le Tesla, due gruppi da 16 per le fermi). Questi core in realtà possono essere visti come le ALU di una generica CPU, ovvero sono le unità preposte al calcolo numerico. La particolarità di questi core è che possono svolgere in parallelo più thread. In particolare si parla di SIMT - Single Instruction Multiple Thread. Questo significa che tutti questi thread in parallelo andranno a compiere il medesimo set di istruzioni. Starà poi al programmatore implementare questo set di istruzioni in modo da lavorare su porzioni differenti di dati. In realtà questo meccanismo è implementato per svolgere in parallelo 32 thread alla volta, una quantità che NVIDIA chiama warp. Questo avviene in 4 cicli di clock per quanto riguarda le GPU Tesla (8 core per 4 cicli = 32 thread). Le GPU Fermi

Breve introduzione al Calcolo Evoluzionistico

Breve introduzione al Calcolo Evoluzionistico Breve introduzione al Calcolo Evoluzionistico Stefano Cagnoni Dipartimento di Ingegneria dell Informazione, Università di Parma cagnoni@ce.unipr.it 1 Introduzione Il mondo fisico ed i fenomeni naturali

Dettagli

Page 1. Evoluzione. Intelligenza Artificiale. Algoritmi Genetici. Evoluzione. Evoluzione: nomenclatura. Corrispondenze natura-calcolo

Page 1. Evoluzione. Intelligenza Artificiale. Algoritmi Genetici. Evoluzione. Evoluzione: nomenclatura. Corrispondenze natura-calcolo Evoluzione In ogni popolazione si verificano delle mutazioni. Intelligenza Artificiale In un ambiente che varia, le mutazioni possono generare individui che meglio si adattano alle nuove condizioni. Questi

Dettagli

Tecniche di riconoscimento statistico

Tecniche di riconoscimento statistico On AIR s.r.l. Tecniche di riconoscimento statistico Applicazioni alla lettura automatica di testi (OCR) Parte 4 Reti neurali per la classificazione Ennio Ottaviani On AIR srl ennio.ottaviani@onairweb.com

Dettagli

Dott.ssa Lorella Gabriele PhD in Psicologia della Programmazione e Intelligenza Artificiale Dipartimento di Fisica Università della Calabria

Dott.ssa Lorella Gabriele PhD in Psicologia della Programmazione e Intelligenza Artificiale Dipartimento di Fisica Università della Calabria Dott.ssa Lorella Gabriele PhD in Psicologia della Programmazione e Intelligenza Artificiale Dipartimento di Fisica Università della Calabria La robotica è una scienza che si occupa di studiare e sviluppare

Dettagli

I Modelli della Ricerca Operativa

I Modelli della Ricerca Operativa Capitolo 1 I Modelli della Ricerca Operativa 1.1 L approccio modellistico Il termine modello è di solito usato per indicare una costruzione artificiale realizzata per evidenziare proprietà specifiche di

Dettagli

Università degli Studi di Napoli Federico II

Università degli Studi di Napoli Federico II Università degli Studi di Napoli Federico II Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Tesi sperimentale di Laurea Triennale Calcolo ad alte prestazioni basato su GPU Un modello ibrido

Dettagli

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini Dipartimento di Ingegneria della Informazione Via Diotisalvi, 2 56122 PISA ALGORITMI GENETICI (GA) Sono usati per risolvere problemi di ricerca

Dettagli

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini Dipartimento di Ingegneria della Informazione Via Diotisalvi, 2 56122 PISA ALGORITMI GENETICI (GA) Sono usati per risolvere problemi di ricerca

Dettagli

Parte I. Prima Parte

Parte I. Prima Parte Parte I Prima Parte Capitolo 1 Introduzione generale 1.1 Il problema dell assegnazione Corsi-Borsisti Il problema dell assegnazione delle borse dei corsi ai vari studenti può essere riassunto nei punti

Dettagli

Algoritmi Genetici. e programmazione genetica

Algoritmi Genetici. e programmazione genetica Algoritmi Genetici e programmazione genetica Algoritmi Genetici Algoritmi motivati dall analogia con l evoluzione biologica Lamarck: le specie trasmutano nel tempo Darwin e Wallace: variazioni consistenti

Dettagli

Neural Network Toolbox

Neural Network Toolbox Neural Network Toolbox In questa sede verrà presentata una trattazione esauriente delle caretteristiche fondamentali del Neuron Network Toolbox presente come pacchetto supplementare al software Matlab

Dettagli

Implementazione parallela di algoritmi genetici per la stima di HMM

Implementazione parallela di algoritmi genetici per la stima di HMM Università degli Studi di Trieste Implementazione parallela di algoritmi genetici per la stima di HMM Relatore Enzo Mumolo Candidato Nicola Timeus 14 marzo 2014 Motivazioni Pattern recognition mediante

Dettagli

Artificial Neural Network(ANN)

Artificial Neural Network(ANN) Artificial Neural Network(ANN) Dott.ssa Elisa Turricchia Alma Mater Studiorum - Università di Bologna ANN: Definizione Una rete neurale artificiale definisce un modello matematico per la simulazione di

Dettagli

Backpropagation in MATLAB

Backpropagation in MATLAB Modello di neurone BACKPROPAGATION Backpropagation in MATLAB Prof. Beatrice Lazzerini Dipartimento di Ingegneria dell Informazione Via Diotisalvi 2, 56122 Pisa La funzione di trasferimento, che deve essere

Dettagli

Esperienze di Apprendimento Automatico per il corso di Intelligenza Artificiale

Esperienze di Apprendimento Automatico per il corso di Intelligenza Artificiale Esperienze di Apprendimento Automatico per il corso di lippi@dsi.unifi.it Dipartimento Sistemi e Informatica Università di Firenze Dipartimento Ingegneria dell Informazione Università di Siena Introduzione

Dettagli

Tecniche di riconoscimento statistico

Tecniche di riconoscimento statistico Tecniche di riconoscimento statistico Applicazioni alla lettura automatica di testi (OCR) Parte 8 Support Vector Machines Ennio Ottaviani On AIR srl ennio.ottaviani@onairweb.com http://www.onairweb.com/corsopr

Dettagli

EMERGENCE OF SELF ORGANIZATION AND SEARCH FOR OPTIMAL ENTERPRISE STRUCTURE: AI EVOLUTIONARY METHODS APPLIED TO AGENT BASED PROCESS SIMULATION

EMERGENCE OF SELF ORGANIZATION AND SEARCH FOR OPTIMAL ENTERPRISE STRUCTURE: AI EVOLUTIONARY METHODS APPLIED TO AGENT BASED PROCESS SIMULATION EMERGENCE OF SELF ORGANIZATION AND SEARCH FOR OPTIMAL ENTERPRISE STRUCTURE: AI EVOLUTIONARY METHODS APPLIED TO AGENT BASED PROCESS SIMULATION remond@di.unito.it Department of Computer Science University

Dettagli

Regressione non lineare con un modello neurale feedforward

Regressione non lineare con un modello neurale feedforward Reti Neurali Artificiali per lo studio del mercato Università degli studi di Brescia - Dipartimento di metodi quantitativi Marco Sandri (sandri.marco@gmail.com) Regressione non lineare con un modello neurale

Dettagli

Note del Corso di Modelli Biologici Discreti: Un paio di algoritmi DNA per risolvere SAT

Note del Corso di Modelli Biologici Discreti: Un paio di algoritmi DNA per risolvere SAT Note del Corso di Modelli Biologici Discreti: Un paio di algoritmi DNA per risolvere SAT Giuditta Franco Corso di Laurea in Bioinformatica - AA 2012/2013 Uno dei più grossi risultati nell informatica degli

Dettagli

DIPARTIMENTO DI STUDI UMANISTICI

DIPARTIMENTO DI STUDI UMANISTICI DIPARTIMENTO DI STUDI UMANISTICI Corso di Laurea Interdipartimentale in Scienze della Formazione Primaria( Ind.Primaria) A.A 2013/2014 REPORT SULL ELABORAZIONE DI UN AGENTE ARITIFICIALE TEORIA E METODOLOGIA

Dettagli

Le reti neurali artificiali. Giacomo Trudu aka Wicker25

Le reti neurali artificiali. Giacomo Trudu aka Wicker25 Le reti neurali artificiali Giacomo Trudu aka Wicker25 Sommario L'approccio algoritmico Le reti neurali artificiali Apprendimento delle reti neurali Il neurone biologico Il percettrone L'apprendimento

Dettagli

Lezione 10. La classificazione dell Intelligenza Artificiale

Lezione 10. La classificazione dell Intelligenza Artificiale Lezione 10 Intelligenza Artificiale Cosa è l Intelligenza Artificiale Elaborazione del linguaggio naturale La visione artificiale L apprendimento nelle macchine La classificazione dell Intelligenza Artificiale

Dettagli

Riproduzione Crossover Mutazione

Riproduzione Crossover Mutazione Algoritmi Genetici Sono algoritmi di ricerca basati sui principi evolutivi della selezione naturale e della genetica, che implicano la sopravvivenza degli elementi migliori e lo scambio di informazioni

Dettagli

Algoritmi Euristici. Corso di Laurea in Informatica e Corso di Laurea in Matematica. Roberto Cordone DI - Università degli Studi di Milano

Algoritmi Euristici. Corso di Laurea in Informatica e Corso di Laurea in Matematica. Roberto Cordone DI - Università degli Studi di Milano Algoritmi Euristici Corso di Laurea in Informatica e Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Mercoledì 08.30-10.30 Venerdì 08.30-10.30 Ricevimento:

Dettagli

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache... Appunti di Calcolatori Elettronici Concetti generali sulla memoria cache Introduzione... 1 Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Dettagli

SVILUPPO DI UN SISTEMA DI SORVEGLIANZA MEDIANTE ROBOT MOBILI.

SVILUPPO DI UN SISTEMA DI SORVEGLIANZA MEDIANTE ROBOT MOBILI. SVILUPPO DI UN SISTEMA DI SORVEGLIANZA MEDIANTE ROBOT MOBILI. 1. ABSTRACT In questo progetto si intende costruire un sistema di sorveglianza mediante l uso di robot mobili. L idea base è quella di usare

Dettagli

I GA sono metodi adattativi che possono essere usati per risolvere problemi di ricerca

I GA sono metodi adattativi che possono essere usati per risolvere problemi di ricerca Capitolo 1 Algoritmi Genetici I GA sono metodi adattativi che possono essere usati per risolvere problemi di ricerca e ottimizzazione. Sono basati sui processi genetici degli organismi biologici. Imitando

Dettagli

Metodi e Modelli per le Decisioni

Metodi e Modelli per le Decisioni Metodi e Modelli per le Decisioni Corso di Laurea in Informatica e Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Giovedì 13.30-15.30 Venerdì 15.30-17.30 Ricevimento:

Dettagli

Università degli Studi di Salerno

Università degli Studi di Salerno Università degli Studi di Salerno Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea in Informatica Tesi di Laurea Algoritmi basati su formule di quadratura interpolatorie per GPU ABSTRACT

Dettagli

Computazione Naturale AA. 2011-2012

Computazione Naturale AA. 2011-2012 Computazione Naturale AA. 2011-2012 Prof. Mario Pavone CdL Magistrale in Informatica Dip. Matematica ed Informatica mpavone@dmi.unict.it http://www.dmi.unict.it/mpavone/ INDICE Obiettivi formativi Cos

Dettagli

Tecniche di DM: Link analysis e Association discovery

Tecniche di DM: Link analysis e Association discovery Tecniche di DM: Link analysis e Association discovery Vincenzo Antonio Manganaro vincenzomang@virgilio.it, www.statistica.too.it Indice 1 Architettura di un generico algoritmo di DM. 2 2 Regole di associazione:

Dettagli

Grounding transfer di simboli con reti neurali

Grounding transfer di simboli con reti neurali Grounding transfer di simboli con reti neurali A. Greco, T. Riga, A. Cangelosi Università di Genova Università di Plymouth Paper presentato al Congresso dell'associazione Italiana di Scienze Cognitive

Dettagli

Ricerca informata. Scelta dell euristica

Ricerca informata. Scelta dell euristica Ricerca informata Scelta dell euristica SMA* (Simplified Memory-Bounded A*) SMA* espande sempre la foglia migliore finché la memoria è piena A questo punto deve cancellare un nodo in memoria SMA* cancella

Dettagli

SISTEMI INFORMATIVI AZIENDALI

SISTEMI INFORMATIVI AZIENDALI SISTEMI INFORMATIVI AZIENDALI Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento: Alla fine di ogni lezione Modalità esame: scritto 1 Data Mining. Introduzione La crescente popolarità

Dettagli

Prodotto Matrice - Vettore in OpenMP

Prodotto Matrice - Vettore in OpenMP Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Elaborato di Calcolo Parallelo Prodotto Matrice - Vettore in OpenMP Anno Accademico 2011/2012 Professoressa Alessandra D Alessio Studenti

Dettagli

Design of Experiments

Design of Experiments Design of Experiments Luigi Amedeo Bianchi 1 Introduzione Cominciamo spiegando cosa intendiamo con esperimento, ossia l investigare un processo cambiando i dati in ingresso, osservando i cambiamenti che

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

Un Algoritmo parallelo per l Equazione delle Onde nelle Applicazioni Geofisiche

Un Algoritmo parallelo per l Equazione delle Onde nelle Applicazioni Geofisiche UNIVERSITÀ DEGLI STUDI DI ROMA TRE FACOLTÀ DI SCIENZE M.F.N. Un Algoritmo parallelo per l Equazione delle Onde nelle Applicazioni Geofisiche Sintesi della tesi di Laurea in Matematica di Riccardo Alessandrini

Dettagli

INDICE INTRODUZIONE... 1. Capitolo 1: RETI WIRELESS... 5. 1.1 Reti Wireless... 5. 1.2 Lo standard IEEE 802.11... 10. 1.3 Le Vanet...

INDICE INTRODUZIONE... 1. Capitolo 1: RETI WIRELESS... 5. 1.1 Reti Wireless... 5. 1.2 Lo standard IEEE 802.11... 10. 1.3 Le Vanet... Indice INDICE INTRODUZIONE... 1 Capitolo 1: RETI WIRELESS... 5 1.1 Reti Wireless... 5 1.2 Lo standard IEEE 802.11... 10 1.3 Le Vanet... 14 1.4 LTE (Long Term Evolution)... 19 1.5 5G... 21 Capitolo 2: RETI

Dettagli

Sistemi Informativi I Lezioni di Ingegneria del Software

Sistemi Informativi I Lezioni di Ingegneria del Software 4 Codifica, Test e Collaudo. Al termine della fase di progettazione, a volte anche in parallelo, si passa alla fase di codifica e successivamente alla fase di test e collaudo. In questa parte viene approfondita

Dettagli

Tecniche di Clustering basate sul Machine Learning

Tecniche di Clustering basate sul Machine Learning UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II Scuola Politecnica e delle Scienze di base Area didattica Scienze Matematiche Fisiche e Naturali Corso di Laurea in Informatica Tecniche di Clustering basate

Dettagli

ANALISI AGLI ELEMENTI FINITI IN GEOTECNICA: UN PRIMO APPROFONDIMENTO

ANALISI AGLI ELEMENTI FINITI IN GEOTECNICA: UN PRIMO APPROFONDIMENTO ANALISI AGLI ELEMENTI FINITI IN GEOTECNICA: UN PRIMO APPROFONDIMENTO 2 GENERALITA SUL METODO AGLI ELEMENTI FINITI. Il Metodo agli Elementi Finiti (F.E.M.) è una tecnica avanzata di risoluzione di equazioni

Dettagli

Rete di Hopfield applicata al problema del TSP

Rete di Hopfield applicata al problema del TSP Rete di Hopfield applicata al problema del TSP 1. Introduzione Nel 1982, il fisico John J. Hopfield pubblicò un articolo fondamentale in cui presentò un modello matematico comunemente noto come rete di

Dettagli

SPERIMENTAZIONE CON LINDO SU UN PROBLEMA DI SCHEDULING

SPERIMENTAZIONE CON LINDO SU UN PROBLEMA DI SCHEDULING UNIVERSITA DEGLI STUDI DI PADOVA FACOLTA DI SCIENZE STATISTICHE CORSO DI LAUREA IN SCIENZE STATISTICHE ED ECONOMICHE TESI DI LAUREA SPERIMENTAZIONE CON LINDO SU UN PROBLEMA DI SCHEDULING Relatore: Ch.mo

Dettagli

Intelligenza Artificiale. Introduzione al calcolo evolutivo

Intelligenza Artificiale. Introduzione al calcolo evolutivo Intelligenza Artificiale Introduzione al calcolo evolutivo Marco Piastra Calcolo evolutivo - 1 Calcolo evolutivo ed IA Universe Borg Vogons Earth etc Biotop Society Stones & Seas etc Art Science Politics

Dettagli

Cristian Randieri. www.intellisystem.it

Cristian Randieri. www.intellisystem.it Cristian Randieri www.intellisystem.it La possibilità di modellizzare e controllare sistemi complessi ed incerti della Fuzzy Logic. La capacità di apprendere da esempi delle reti neurali. La capacità

Dettagli

Algoritmo per il rilevamento di targhe

Algoritmo per il rilevamento di targhe Algoritmo per il rilevamento di targhe 19 maggio 2008 Nell affrontare il problema del riconoscimento delle targhe sono stati sviluppati due algoritmi che basano la loro ricerca su criteri differenti. Lo

Dettagli

6.2 Modelli per il monossido di carbonio

6.2 Modelli per il monossido di carbonio 6.2 Modelli per il monossido di carbonio La serie temporale scelta per l addestramento è quella rilevata in via Piave poiché tra le stazioni idonee, per legge, al controllo di questo inquinante essa presenta

Dettagli

Altri metodi di indicizzazione

Altri metodi di indicizzazione Organizzazione a indici su più livelli Altri metodi di indicizzazione Al crescere della dimensione del file l organizzazione sequenziale a indice diventa inefficiente: in lettura a causa del crescere del

Dettagli

Analisi di una rete stradale con il software VISUM

Analisi di una rete stradale con il software VISUM Paolo Martinis Preone, 10.07.2004 Università degli Studi di Trieste Facoltà di Ingegneria Corso di Pianificazione dei Trasporti Prof. Giovanni Longo Anno Accademico 2003-2004 Analisi di una rete stradale

Dettagli

Reti Neurali Artificiali

Reti Neurali Artificiali Reti Neurali Artificiali Master in Gestione dei Dati e Bioimmagini a.a. 2012/2013 Prof. Crescenzio Gallo Dipartimento di Medicina Clinica e Sperimentale c.gallo@unifg.it Concetti base [ 2 ] Le Reti Neurali

Dettagli

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra.

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra. Appunti di Calcolatori Elettronici Modello di macchina multilivello Introduzione... 1 Linguaggi, livelli e macchine virtuali... 3 La struttura a livelli delle macchine odierne... 4 Evoluzione delle macchine

Dettagli

SEZIONE A: Traguardi formativi CLASSE QUARTA COMPETENZE ABILITÀ CONOSCENZE

SEZIONE A: Traguardi formativi CLASSE QUARTA COMPETENZE ABILITÀ CONOSCENZE COMPETENZA CHIAVE EUROPEA: A - Numeri SEZIONE A: Traguardi formativi COMPETENZE IN MATEMATICA CLASSE QUARTA COMPETENZE ABILITÀ CONOSCENZE Utilizzare con sicurezza le tecniche e le procedure del calcolo

Dettagli

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

Dettagli

Ingegneria di Manutenzione II. Intelligence diagnostica

Ingegneria di Manutenzione II. Intelligence diagnostica 1 Ingegneria di Manutenzione II Intelligence diagnostica Stefano Ierace, Luigi Troiano stefano.ierace@unibg.it - troiano@unisannio.it Università degli Studi di Bergamo Università del Sannio Obiettivi del

Dettagli

Random number generators

Random number generators Statistica computazionale Random number generators www.cash-cow.it Distribuito sotto licenza Creative Common, Share Alike Attribution 2 Indice I. Introduzione II. Processi fisici per la creazione di numeri

Dettagli

1.4.1 Architettura protocollare 802.15. 1.4.2 Architettura Core System

1.4.1 Architettura protocollare 802.15. 1.4.2 Architettura Core System Introduzione Capitolo 1: Le Reti Wireless 1.1 Introduzione 1.2 Le reti Cellulari 1.2.1 Struttura di una rete cellulare 1.2.2 Stabilimento e mantenimento di una chiamata 1.3 Panoramica sulle diverse generazioni

Dettagli

COMPETENZE SPECIFICHE

COMPETENZE SPECIFICHE COMPETENZE IN MATEMATICA DISCIPLINA DI RIFERIMENTO: MATEMATICA TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE FISSATI DALLE INDICAZIONI NAZIONALI PER IL CURRICOLO 2012. MATEMATICA TRAGUARDI ALLA FINE DELLA

Dettagli

Tecniche di riconoscimento statistico

Tecniche di riconoscimento statistico On AIR s.r.l. Tecniche di riconoscimento statistico Applicazioni alla lettura automatica di testi (OCR) Parte 1 - Introduzione generale Ennio Ottaviani On AIR srl ennio.ottaviani@onairweb.com http://www.onairweb.com/corsopr

Dettagli

MATEMATICA TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE ALLA FINE DELLA SCUOLA PRIMARIA

MATEMATICA TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE ALLA FINE DELLA SCUOLA PRIMARIA MATEMATICA TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE ALLA FINE DELLA SCUOLA PRIMARIA L alunno si muove con sicurezza nel calcolo scritto e mentale con i numeri naturali e sa valutare l opportunità di

Dettagli

AREA MATEMATICO-SCIENTIFICO-TECNOLOGICA MATEMATICA

AREA MATEMATICO-SCIENTIFICO-TECNOLOGICA MATEMATICA AREA MATEMATICO-SCIENTIFICO-TECNOLOGICA MATEMATICA TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA SECONDARIA DI PRIMO GRADO. L alunno ha rafforzato un atteggiamento positivo rispetto

Dettagli

Esercizi di Ricerca Operativa I

Esercizi di Ricerca Operativa I Esercizi di Ricerca Operativa I Dario Bauso, Raffaele Pesenti May 10, 2006 Domande Programmazione lineare intera 1. Gli algoritmi per la programmazione lineare continua possono essere usati per la soluzione

Dettagli

Le tecnologie ed i componenti di Ethernet

Le tecnologie ed i componenti di Ethernet Le tecnologie ed i componenti di Ethernet Hub, Bridge, Switch Ethernet Tecnologia LAN dominante: Economica:

Dettagli

Tipologie di macchine di Turing

Tipologie di macchine di Turing Tipologie di macchine di Turing - Macchina di Turing standard - Macchina di Turing con un nastro illimitato in una sola direzione - Macchina di Turing multinastro - Macchina di Turing non deterministica

Dettagli

Reti neurali artificiali e analisi dei dati per la ricerca sociale: un nuovo paradigma?

Reti neurali artificiali e analisi dei dati per la ricerca sociale: un nuovo paradigma? Reti neurali artificiali e analisi dei dati per la ricerca sociale: un nuovo paradigma? Giovanni Di Franco Pubblicato in Sociologia e Ricerca Sociale, n. 56, 1998, pp. 35-75. 1. Premessa Recentemente l

Dettagli

SISTEMA DI PREFETCHING CLIENT-SIDE PER TRAFFICO WEB

SISTEMA DI PREFETCHING CLIENT-SIDE PER TRAFFICO WEB UNIVERSITÀ DEGLI STUDI DI ROMA TOR VERGATA Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica Progetto per il corso di Ingegneria del Web SISTEMA DI PREFETCHING CLIENT-SIDE PER

Dettagli

Feature Selection per la Classificazione

Feature Selection per la Classificazione 1 1 Dipartimento di Informatica e Sistemistica Sapienza Università di Roma Corso di Algoritmi di Classificazione e Reti Neurali 20/11/2009, Roma Outline Feature Selection per problemi di Classificazione

Dettagli

Descrizione e stima dell errore

Descrizione e stima dell errore Descrizione e stima dell errore Raccomandazioni per l analisi di accuratezza di una simulazione CFD: 1 Descrizione e stima dell errore Raccomandazioni per l analisi di accuratezza di una simulazione CFD:

Dettagli

Automi. Sono così esempi di automi una lavatrice, un distributore automatico di bibite, un interruttore, una calcolatrice tascabile,...

Automi. Sono così esempi di automi una lavatrice, un distributore automatico di bibite, un interruttore, una calcolatrice tascabile,... Automi Con il termine automa 1 s intende un qualunque dispositivo o un suo modello, un qualunque oggetto, che esegue da se stesso un particolare compito, sulla base degli stimoli od ordini ricevuti detti

Dettagli

VERSO LA SMART SPECIALIZATION TRE LEVE MOLTO IMPORTANTI PER UNA NUOVA COMPETITIVITÀ

VERSO LA SMART SPECIALIZATION TRE LEVE MOLTO IMPORTANTI PER UNA NUOVA COMPETITIVITÀ COMPETITIVITA 2.0? VERSO LA SMART SPECIALIZATION TRE LEVE MOLTO IMPORTANTI PER UNA NUOVA COMPETITIVITÀ F.Boccia/B.IT sas 1 SOMMARIO PROGETTAZIONE ASSISTITA DA CAE/SIMULAZIONE/SUPERCALCOLO LOGISTICA INTELLIGENTE

Dettagli

Matlab per applicazioni statistiche

Matlab per applicazioni statistiche Matlab per applicazioni statistiche Marco J. Lombardi 19 aprile 2005 1 Introduzione Il sistema Matlab è ormai uno standard per quanto riguarda le applicazioni ingegneristiche e scientifiche, ma non ha

Dettagli

PDF created with pdffactory trial version www.pdffactory.com. Il processo di KDD

PDF created with pdffactory trial version www.pdffactory.com. Il processo di KDD Il processo di KDD Introduzione Crescita notevole degli strumenti e delle tecniche per generare e raccogliere dati (introduzione codici a barre, transazioni economiche tramite carta di credito, dati da

Dettagli

Note sull esperienza Misura di g versione 1, Francesco, 7/05/2010

Note sull esperienza Misura di g versione 1, Francesco, 7/05/2010 Note sull esperienza Misura di g versione 1, Francesco, 7/05/010 L esperienza, basata sullo studio di una molla a spirale in condizioni di equilibrio e di oscillazione, ha diversi scopi e finalità, tra

Dettagli

5 Gestione dei progetti software. 5.1 Attività gestionale. Sistemi Informativi I Lezioni di Ingegneria del Software

5 Gestione dei progetti software. 5.1 Attività gestionale. Sistemi Informativi I Lezioni di Ingegneria del Software 5 Gestione dei progetti software. Dopo aver completato lo studio del ciclo di vita del software, in questa parte vengono discussi gli aspetti gestionali della produzione del software. Vengono esaminate

Dettagli

Ricerca Operativa A.A. 2007/2008

Ricerca Operativa A.A. 2007/2008 Ricerca Operativa A.A. 2007/2008 9. Cenni su euristiche e metaeuristiche per ottimizzazione combinatoria Motivazioni L applicazione di metodi esatti non è sempre possibile a causa della complessità del

Dettagli

ROBOT COME PSICOLOGIA

ROBOT COME PSICOLOGIA FORZA, VELOCITÀ E ACCELERAZIONE: UNO SGUARDO CONTEMPORANEO AI PRINCIPI DELLA DINAMICA 301 ROBOT COME PSICOLOGIA DOMENICO PARISI Istituto di Scienze e Tecnologie della Cognizione, Consiglio Nazionale delle

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Il software Dipartimento di Ingegneria dell Informazione Universitàdegli Studi di Parma SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono

Dettagli

3. Gli algoritmi di ottimizzazione.

3. Gli algoritmi di ottimizzazione. Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 3-3. Gli algoritmi di ottimizzazione. I grafi. La teoria dei grafi è un comodo strumento per la definizione e la formalizzazione

Dettagli

Algoritmi euristici ed evolutivi per l ottimizzazione

Algoritmi euristici ed evolutivi per l ottimizzazione Algoritmi euristici ed evolutivi per l ottimizzazione Dipartimento di Matematica e Informatica Università degli Studi di Perugia Via Vanvitelli, Perugia 17 febbraio 2009 / GALN 2009 Sommario Introduzione

Dettagli

STRUMENTO DI SUPPORTO PER L ANALISI DEL RISCHIO-RAPINA

STRUMENTO DI SUPPORTO PER L ANALISI DEL RISCHIO-RAPINA Convegno ABI BANCHE E SICUREZZA 2007 STRUMENTO DI SUPPORTO PER L ANALISI DEL RISCHIO-RAPINA Fabrizio Capobianco Responsabile Ufficio Gestione Sicurezza - SGS Gruppo Banco Popolare di Verona e Novara Caratteristiche

Dettagli

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO CLASSE DISCIPLINA MODULO Conoscenze Abilità e competenze Argomento 1 Concetti di base Argomento 2 Sistema di elaborazione Significato dei termini informazione, elaborazione, comunicazione, interfaccia,

Dettagli

PROGRAMMA DI INFORMATICA

PROGRAMMA DI INFORMATICA LICEO SCIENTIFICO STATALE A. MESSEDAGLIA -VERONA Via Bertoni, 3b 37121 VERONA tel 045.596432-8034772 fax 045.8038213 Classe 2 Sezione G Anno scolastico 2014/2015 PROGRAMMA DI INFORMATICA docente: prof.

Dettagli

Intelligenza Artificiale Ing. Tiziano Papini

Intelligenza Artificiale Ing. Tiziano Papini Intelligenza Artificiale Ing. Tiziano Papini Email: papinit@dii.unisi.it Web: http://www.dii.unisi.it/~papinit Constraint Satisfaction metodi riparativi Intelligenza Artificiale - CSP Tiziano Papini -

Dettagli

Il software: natura e qualità

Il software: natura e qualità Sommario Il software: natura e qualità Leggere Cap. 2 Ghezzi et al. Natura e peculiarità del software Classificazione delle qualità del software Qualità del prodotto e del processo Qualità interne ed esterne

Dettagli

Revisione e implementazione di algoritmi di elaborazione delle immagini

Revisione e implementazione di algoritmi di elaborazione delle immagini Stagnaro Francesca Mat. 2543707 Relazione Finale di Tirocinio: Revisione e implementazione di algoritmi di elaborazione delle immagini Svolto presso l azienda Numensoft Snc di M. Peri & Soci III Anno di

Dettagli

Sommario. 1 Specifiche della soluzione. Davide Anastasia, Nicola Cogotti. 27 dicembre 2005

Sommario. 1 Specifiche della soluzione. Davide Anastasia, Nicola Cogotti. 27 dicembre 2005 Utilizzo delle reti neurali di tipo MLP e RBF per l approssimazione di funzioni reali di variabile reale note mediante coppie di punti (x,y) in presenza di rumore Davide Anastasia, Nicola Cogotti 27 dicembre

Dettagli

Abbiamo visto due definizioni del valore medio e della deviazione standard di una grandezza casuale, in funzione dalle informazioni disponibili:

Abbiamo visto due definizioni del valore medio e della deviazione standard di una grandezza casuale, in funzione dalle informazioni disponibili: Incertezze di misura Argomenti: classificazione delle incertezze; definizione di incertezza tipo e schemi di calcolo; schemi per il calcolo dell incertezza di grandezze combinate; confronto di misure affette

Dettagli

CAPITOLO 3 Previsione

CAPITOLO 3 Previsione CAPITOLO 3 Previsione 3.1 La previsione I sistemi evoluti, che apprendono le regole di funzionamento attraverso l interazione con l ambiente, si rivelano una risorsa essenziale nella rappresentazione di

Dettagli

Implementazione del gioco del Bantumi Corso di Intelligenza Artificiale 2012

Implementazione del gioco del Bantumi Corso di Intelligenza Artificiale 2012 Implementazione del gioco del Bantumi Corso di Intelligenza Artificiale 2012 Nicola Febbrari Università degli Studi di Verona Facoltà MM.FF.NN. nicola.febbrari@studenti.univr.it 22 gennaio 2013 1 Introduzione

Dettagli

MATEMATICA OBIETTIVI DI APPRENDIMENTO TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE

MATEMATICA OBIETTIVI DI APPRENDIMENTO TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE Il bambino raggruppa e ordina oggetti e materiali secondo criteri diversi. Identifica alcune proprietà dei materiali. Confronta e valuta quantità. Utilizza simboli per registrare materiali e quantità.

Dettagli

60 indicazioni nazionali per la scuola dell infanzia e del primo ciclo. matematica

60 indicazioni nazionali per la scuola dell infanzia e del primo ciclo. matematica 60 indicazioni nazionali per la scuola dell infanzia e del primo ciclo matematica Le conoscenze matematiche contribuiscono alla formazione culturale delle persone e delle comunità, sviluppando le capacità

Dettagli

Sequence Alignment Algorithms

Sequence Alignment Algorithms Sequence Alignment Algorithms Algoritmi per l Allineamento di Sequenze Relatore: Prof. Giancarlo Mauri Correlatore: Prof. Gianluca Della Vedova Tesi di Laurea di: Mauro Baluda Matricola 038208 Part of

Dettagli

Riconoscimento e recupero dell informazione per bioinformatica

Riconoscimento e recupero dell informazione per bioinformatica Riconoscimento e recupero dell informazione per bioinformatica Reti Neurali Manuele Bicego Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Introduzione: approcci

Dettagli

Tesi di Laurea Specialistica. Elaborazione di dati bioinformatici attraverso l uso di Particle Swarm Optimization

Tesi di Laurea Specialistica. Elaborazione di dati bioinformatici attraverso l uso di Particle Swarm Optimization Università degli Studi di Genova Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea Specialistica in Informatica Anno Accademico 2009/2010 Tesi di Laurea Specialistica Elaborazione di dati

Dettagli

Cos è l Ingegneria del Software?

Cos è l Ingegneria del Software? Cos è l Ingegneria del Software? Corpus di metodologie e tecniche per la produzione di sistemi software. L ingegneria del software è la disciplina tecnologica e gestionale che riguarda la produzione sistematica

Dettagli

Pro e contro delle RNA

Pro e contro delle RNA Pro e contro delle RNA Pro: - flessibilità: le RNA sono approssimatori universali; - aggiornabilità sequenziale: la stima dei pesi della rete può essere aggiornata man mano che arriva nuova informazione;

Dettagli

Note su quicksort per ASD 2010-11 (DRAFT)

Note su quicksort per ASD 2010-11 (DRAFT) Note su quicksort per ASD 010-11 (DRAFT) Nicola Rebagliati 7 dicembre 010 1 Quicksort L algoritmo di quicksort è uno degli algoritmi più veloci in pratica per il riordinamento basato su confronti. L idea

Dettagli

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Scopo: Stimare l onere computazionale per risolvere problemi di ottimizzazione e di altra natura

Dettagli

UNIVERSITÀ DI PISA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA ELETTRONICA. Estratto tesi

UNIVERSITÀ DI PISA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA ELETTRONICA. Estratto tesi UNIVERSITÀ DI PISA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA ELETTRONICA Estratto tesi Realizzazione di un dispositivo per l analisi e la caratterizzazione dei moduli fotovoltaici

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

Dettagli