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

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

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

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

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

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

LA PROGETTAZIONE DI UN NUOVO STRUMENTO PER IL WEB

LA PROGETTAZIONE DI UN NUOVO STRUMENTO PER IL WEB UNIVERSITÀ DEGLI STUDI DI PADOVA FACOLTÀ DI LETTERE E FILOSOFIA CORSO DI LAUREA MAGISTRALE IN STRATEGIE DI COMUNICAZIONE LA PROGETTAZIONE DI UN NUOVO STRUMENTO PER IL WEB LA PROPOSTA DI UN MODELLO MIRATO

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

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

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

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

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

Più processori uguale più velocità?

Più processori uguale più velocità? Più processori uguale più velocità? e un processore impiega per eseguire un programma un tempo T, un sistema formato da P processori dello stesso tipo esegue lo stesso programma in un tempo TP T / P? In

Dettagli

TECNICHE DI SIMULAZIONE

TECNICHE DI SIMULAZIONE TECNICHE DI SIMULAZIONE INTRODUZIONE Francesca Mazzia Dipartimento di Matematica Università di Bari a.a. 2004/2005 TECNICHE DI SIMULAZIONE p. 1 Introduzione alla simulazione Una simulazione è l imitazione

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

La distribuzione Normale. La distribuzione Normale

La distribuzione Normale. La distribuzione Normale La Distribuzione Normale o Gaussiana è la distribuzione più importante ed utilizzata in tutta la statistica La curva delle frequenze della distribuzione Normale ha una forma caratteristica, simile ad una

Dettagli

SPC e distribuzione normale con Access

SPC e distribuzione normale con Access SPC e distribuzione normale con Access In questo articolo esamineremo una applicazione Access per il calcolo e la rappresentazione grafica della distribuzione normale, collegata con tabelle di Clienti,

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

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

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

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

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

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

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

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

Corso di. Dott.ssa Donatella Cocca

Corso di. Dott.ssa Donatella Cocca Corso di Statistica medica e applicata Dott.ssa Donatella Cocca 1 a Lezione Cos'è la statistica? Come in tutta la ricerca scientifica sperimentale, anche nelle scienze mediche e biologiche è indispensabile

Dettagli

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola

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

Il concetto di valore medio in generale

Il concetto di valore medio in generale Il concetto di valore medio in generale Nella statistica descrittiva si distinguono solitamente due tipi di medie: - le medie analitiche, che soddisfano ad una condizione di invarianza e si calcolano tenendo

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione 4 LEZIONE: Programmazione su Carta a Quadretti Tempo della lezione: 45-60 Minuti. Tempo di preparazione: 10 Minuti Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione SOMMARIO:

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

e-dva - eni-depth Velocity Analysis

e-dva - eni-depth Velocity Analysis Lo scopo dell Analisi di Velocità di Migrazione (MVA) è quello di ottenere un modello della velocità nel sottosuolo che abbia dei tempi di riflessione compatibili con quelli osservati nei dati. Ciò significa

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

ARCHITETTURA DI RETE FOLEGNANI ANDREA

ARCHITETTURA DI RETE FOLEGNANI ANDREA ARCHITETTURA DI RETE FOLEGNANI ANDREA INTRODUZIONE È denominata Architettura di rete un insieme di livelli e protocolli. Le reti sono organizzate gerarchicamente in livelli, ciascuno dei quali interagisce

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Analisi e diagramma di Pareto

Analisi e diagramma di Pareto Analisi e diagramma di Pareto L'analisi di Pareto è una metodologia statistica utilizzata per individuare i problemi più rilevanti nella situazione in esame e quindi le priorità di intervento. L'obiettivo

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Codifiche a lunghezza variabile

Codifiche a lunghezza variabile Sistemi Multimediali Codifiche a lunghezza variabile Marco Gribaudo marcog@di.unito.it, gribaudo@elet.polimi.it Assegnazione del codice Come visto in precedenza, per poter memorizzare o trasmettere un

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

DIMENSIONI CRITERI INDICATORI

DIMENSIONI CRITERI INDICATORI Allegato 4 - Manerbio META EDUCATIVA: autonomia in ambito scolastico (classe 4/5 scuola primaria) DIMENSIONI CRITERI INDICATORI GESTIONALE OPERATIVA Uso degli strumenti Conoscere gli strumenti necessari

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

Dettagli

Agenti Mobili Intelligenti e Sicurezza Informatica Utilizzare un nuovo paradigma applicativo per la realizzazione di sistemi informatici sicuri.

Agenti Mobili Intelligenti e Sicurezza Informatica Utilizzare un nuovo paradigma applicativo per la realizzazione di sistemi informatici sicuri. Agenti Mobili Intelligenti e Sicurezza Informatica Utilizzare un nuovo paradigma applicativo per la realizzazione di sistemi informatici sicuri. Roma, 25 ottobre 2010 Ing. Antonio Salomè Ing. Luca Lezzerini

Dettagli

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi ControlloCosti Cubi OLAP I cubi OLAP Un Cubo (OLAP, acronimo di On-Line Analytical Processing) è una struttura per la memorizzazione e la gestione dei dati che permette di eseguire analisi in tempi rapidi,

Dettagli

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1 PROGRAMMA GESTIONE TURNI MANUALE UTENTE INDICE 1 PREMESSA 3 2 COMANDI COMUNI 3 3 SEDI 3 4 FESTIVITÀ 4 5 PERIODI TURNI 4 6 COD. TURNI 6 7 TURNI SPORTIVI 9 8 COD. EQUIPAGGI 9 9 DISPONIBILITÀ 10 10 INDISPONIBILITÀ

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Progetto PI.20060128, passo A.1 versione del 14 febbraio 2007

Progetto PI.20060128, passo A.1 versione del 14 febbraio 2007 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso di Progettazione del Software Proff. Toni Mancini e Monica Scannapieco Progetto PI.20060128,

Dettagli

Identificazione dei Parametri Caratteristici di un Plasma Circolare Tramite Rete Neuronale

Identificazione dei Parametri Caratteristici di un Plasma Circolare Tramite Rete Neuronale Identificazione dei Parametri Caratteristici di un Plasma Circolare Tramite Rete euronale Descrizione Il presente lavoro, facente segiuto a quanto descritto precedentemente, ha il fine di: 1) introdurre

Dettagli

www.andreatorinesi.it

www.andreatorinesi.it La lunghezza focale Lunghezza focale Si definisce lunghezza focale la distanza tra il centro ottico dell'obiettivo (a infinito ) e il piano su cui si forma l'immagine (nel caso del digitale, il sensore).

Dettagli

Esercizio 1: trading on-line

Esercizio 1: trading on-line Esercizio 1: trading on-line Si realizzi un programma Java che gestisca le operazioni base della gestione di un fondo per gli investimenti on-line Creazione del fondo (con indicazione della somma in inizialmente

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

CHIUSURE di MAGAZZINO di FINE ANNO

CHIUSURE di MAGAZZINO di FINE ANNO CHIUSURE di MAGAZZINO di FINE ANNO Operazioni da svolgere per il riporto delle giacenze di fine esercizio Il documento che segue ha lo scopo di illustrare le operazioni che devono essere eseguite per:

Dettagli

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI Un utilizzatore a valle di sostanze chimiche dovrebbe informare i propri fornitori riguardo al suo utilizzo delle sostanze (come tali o all

Dettagli

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo Logica Numerica Approfondimento E. Barbuto Minimo Comune Multiplo e Massimo Comun Divisore Il concetto di multiplo e di divisore Considerato un numero intero n, se esso viene moltiplicato per un numero

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

Come masterizzare dischi con Nero 11

Come masterizzare dischi con Nero 11 Come masterizzare dischi con Nero 11 Non c è dubbio che Nero è diventato un sinonimo di masterizzatore di dischi, data la lunga esperienza sul mercato. Molte persone pensano in questo programma nel momento

Dettagli

Capitolo 13: L offerta dell impresa e il surplus del produttore

Capitolo 13: L offerta dell impresa e il surplus del produttore Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:

Dettagli

Plate Locator Riconoscimento Automatico di Targhe

Plate Locator Riconoscimento Automatico di Targhe Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Complessità Computazionale

Complessità Computazionale Complessità Computazionale Analisi Algoritmi e pseudocodice Cosa significa analizzare un algoritmo Modello di calcolo Analisi del caso peggiore e del caso medio Esempio di algoritmo in pseudocodice INSERTION

Dettagli

Transitori del primo ordine

Transitori del primo ordine Università di Ferrara Corso di Elettrotecnica Transitori del primo ordine Si consideri il circuito in figura, composto da un generatore ideale di tensione, una resistenza ed una capacità. I tre bipoli

Dettagli

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...

Dettagli

Luigi Piroddi piroddi@elet.polimi.it

Luigi Piroddi piroddi@elet.polimi.it Automazione industriale dispense del corso 10. Reti di Petri: analisi strutturale Luigi Piroddi piroddi@elet.polimi.it Analisi strutturale Un alternativa all analisi esaustiva basata sul grafo di raggiungibilità,

Dettagli

Generazione Automatica di Asserzioni da Modelli di Specifica

Generazione Automatica di Asserzioni da Modelli di Specifica UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Generazione Automatica di Asserzioni da Modelli di Specifica Relatore:

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Gestione ed analisi di base dati nell epidemiologia. delle malattie infettive

Gestione ed analisi di base dati nell epidemiologia. delle malattie infettive Università degli Studi di Torino - Facoltà di Medicina Veterinaria Laboratorio di epidemiologia delle malattie infettive Scuola Specializzazione in Sanità Animale, Allevamento e Produzioni Zootecniche

Dettagli

Come creare il test di Yasso tramite l applicazione Training Center

Come creare il test di Yasso tramite l applicazione Training Center Come creare il test di Yasso tramite l applicazione Training Center A differenza degli altri test pubblicati da Garmin, il test di Yasso necessita di un approfondimento. Il test di Yasso è un test molto

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Ottimizzazione Multi Obiettivo

Ottimizzazione Multi Obiettivo Ottimizzazione Multi Obiettivo 1 Ottimizzazione Multi Obiettivo I problemi affrontati fino ad ora erano caratterizzati da una unica (e ben definita) funzione obiettivo. I problemi di ottimizzazione reali

Dettagli

ANALISI DELLE FREQUENZE: IL TEST CHI 2

ANALISI DELLE FREQUENZE: IL TEST CHI 2 ANALISI DELLE FREQUENZE: IL TEST CHI 2 Quando si hanno scale nominali o ordinali, non è possibile calcolare il t, poiché non abbiamo medie, ma solo frequenze. In questi casi, per verificare se un evento

Dettagli

Introduzione all analisi dei segnali digitali.

Introduzione all analisi dei segnali digitali. Introduzione all analisi dei segnali digitali. Lezioni per il corso di Laboratorio di Fisica IV Isidoro Ferrante A.A. 2001/2002 1 Segnali analogici Si dice segnale la variazione di una qualsiasi grandezza

Dettagli

MANUALE DELLA QUALITÀ Pag. 1 di 6

MANUALE DELLA QUALITÀ Pag. 1 di 6 MANUALE DELLA QUALITÀ Pag. 1 di 6 INDICE GESTIONE DELLE RISORSE Messa a disposizione delle risorse Competenza, consapevolezza, addestramento Infrastrutture Ambiente di lavoro MANUALE DELLA QUALITÀ Pag.

Dettagli

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) (Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste

Dettagli

Statistica. Lezione 6

Statistica. Lezione 6 Università degli Studi del Piemonte Orientale Corso di Laurea in Infermieristica Corso integrato in Scienze della Prevenzione e dei Servizi sanitari Statistica Lezione 6 a.a 011-01 Dott.ssa Daniela Ferrante

Dettagli

Appunti di Sistemi Elettronici

Appunti di Sistemi Elettronici Prof.ssa Maria Rosa Malizia 1 LA PROGRAMMAZIONE La programmazione costituisce una parte fondamentale dell informatica. Infatti solo attraverso di essa si apprende la logica che ci permette di comunicare

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Sistemi Informativi Territoriali. Map Algebra

Sistemi Informativi Territoriali. Map Algebra Paolo Mogorovich Sistemi Informativi Territoriali Appunti dalle lezioni Map Algebra Cod.735 - Vers.E57 1 Definizione di Map Algebra 2 Operatori locali 3 Operatori zonali 4 Operatori focali 5 Operatori

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

Introduzione all Information Retrieval

Introduzione all Information Retrieval Introduzione all Information Retrieval Argomenti della lezione Definizione di Information Retrieval. Information Retrieval vs Data Retrieval. Indicizzazione di collezioni e ricerca. Modelli per Information

Dettagli

Probabilità condizionata: p(a/b) che avvenga A, una volta accaduto B. Evento prodotto: Evento in cui si verifica sia A che B ; p(a&b) = p(a) x p(b/a)

Probabilità condizionata: p(a/b) che avvenga A, una volta accaduto B. Evento prodotto: Evento in cui si verifica sia A che B ; p(a&b) = p(a) x p(b/a) Probabilità condizionata: p(a/b) che avvenga A, una volta accaduto B Eventi indipendenti: un evento non influenza l altro Eventi disgiunti: il verificarsi di un evento esclude l altro Evento prodotto:

Dettagli

13. Campi vettoriali

13. Campi vettoriali 13. Campi vettoriali 1 Il campo di velocità di un fluido Il concetto di campo in fisica non è limitato ai fenomeni elettrici. In generale il valore di una grandezza fisica assegnato per ogni punto dello

Dettagli

REPORT BRAIN FARM. MODALITA DI ADDESTRAMENTO in questa fase, si sono impostati diversi parametri: GENITORI:3 FIGLI:3 GENERAZIONI:100

REPORT BRAIN FARM. MODALITA DI ADDESTRAMENTO in questa fase, si sono impostati diversi parametri: GENITORI:3 FIGLI:3 GENERAZIONI:100 REPORT BRAIN FARM Federica Catanzariti 147 Consuelo Nicoletti 1621 Mariapaola Mercurio 1 Paola Ozimo 13 Maria Rosa Vardè 19 Lo scopo del nostro lavoro è quello di imparare a usare Brain Farm che ci permette

Dettagli

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante: Sommario Macchine a stati finiti M. Favalli Engineering Department in Ferrara 4 Sommario (ENDIF) Analisiesintesideicircuitidigitali / 35 (ENDIF) Analisiesintesideicircuitidigitali 2 / 35 4 Le macchine

Dettagli

Un gioco con tre dadi

Un gioco con tre dadi Un gioco con tre dadi Livello scolare: biennio Abilità interessate Costruire lo spazio degli eventi in casi semplici e determinarne la cardinalità. Valutare la probabilità in diversi contesti problematici.

Dettagli

Matematica generale CTF

Matematica generale CTF Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von

Dettagli

B+Trees. Introduzione

B+Trees. Introduzione B+Trees Introduzione B+Trees Il B+Trees e la variante maggiormente utilizzata dei BTrees BTrees e B+trees fanno parte della famiglia degli alberi di ricerca. Nel B+Trees i dati sono memorizzati solo nelle

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Elementi di Psicometria con Laboratorio di SPSS 1

Elementi di Psicometria con Laboratorio di SPSS 1 Elementi di Psicometria con Laboratorio di SPSS 1 29-Analisi della potenza statistica vers. 1.0 (12 dicembre 2014) Germano Rossi 1 germano.rossi@unimib.it 1 Dipartimento di Psicologia, Università di Milano-Bicocca

Dettagli

CONTROLLO IN TENSIONE DI LED

CONTROLLO IN TENSIONE DI LED Applicazioni Ver. 1.1 INTRODUZIONE CONTROLLO IN TENSIONE DI LED In questo documento vengono fornite delle informazioni circa la possibilità di pilotare diodi led tramite una sorgente in tensione. La trattazione

Dettagli