Download Free Audio of Algoritmi genetici Un algoritmo genetico è un ... - Woord

Read Aloud the Text Content

This audio was created by Woord's Text to Speech service by content creators from all around the world.


Text Content or SSML code:

Algoritmi genetici Un algoritmo genetico è un algoritmo ispirato al principio della selezione naturale ed evoluzione biologica. Può essere utilizzato per risolvere problemi di ottimizzazione abbastanza generali ( non sono richieste proprietà particolarmente stringenti). L’aggettivo genetico è dovuto al fatto che gli algoritmi genetici attuano dei meccanismi concettualmente simili a quelli dei processi biochimici scoperti nella genetica. In sintesi, un algoritmo genetico consente di valutare diverse soluzioni di partenza, come se fossero diversi individui di una popolazione, e ricombinandole (analogamente alla riproduzione biologica sessuata) ed introducendo mutazioni casuali, produrre nuove soluzioni (nuovi individui). Il procedimento si ripete in questo modo fino ad aver raggiunto una soluzione soddisfacente o un numero massimo di iterazioni, nel tentativo di convergere verso soluzioni ottime. Uno degli svantaggi degli algoritmi genetici è che data la natura casuale dell’algoritmo, non è possibile sapere a priori se convergerà ad una soluzione ottima o se avverrà una convergenza prematura a una soluzione non-ottima. Se si otterrà un risultato soddisfacente, non è detto che si capisca perchè abbia funzionato. A livello pratico per implementare un algoritmo genetico dobbiamo introdurre alcune definizioni: ● Cromosoma: è una delle soluzioni del problema considerato, tipicamente è rappresentato da una stringa di bit. ● Popolazione: è un insieme di soluzioni (cromosomi) del problema considerato. ● Gene: una parte del cromosoma. Tipicamente, alcuni “bit” del cromosoma compongono un gene. ● Fitness: Valutazione associata ad una soluzione (cromosoma), ottenuta attraverso una funzione di fitness apposita o attraverso una simulazione. ● Crossover: generazione di una nuova soluzione mescolando le soluzioni esistenti, ● Mutazione: Alterazione (piccola) casuale di una soluzione Il crossover permette di esplorare aree anche distanti dello spazio di ricerca. La mutazione permette di esplorare aree vicine alla soluzione originale nello spazio di ricerca. È possibile migliorare l’algoritmo introducendo ulteriori meccanismi, alcuni basati, ad esempio, sulla scelta dei genitori: Uno di questi è l’elitismo, che copia gli individui migliori della generazione precedente senza applicarvi mutazioni o crossover, permettendo di evitare la perdita di individui con alto fitness a causa della casualità. Un’altra tecnica è rappresentata dallo scaling, per cui la probabilità di essere selezionato non è proporzionale alla fitness, ma ad una funzione correlata. Un sistema dinamico che evolve verso un attrattore elabora informazione. Si discuta facendo riferimento anche ad alcuni casi studiati. Un sistema dinamico è un sistema che evolve nel tempo seguendo delle regole. È composto da uno spazio delle fasi (o degli stati) in cui avviene l’evoluzione del sistema, e dalla legge che descrive questa evoluzione. Un esempio di sistema dinamico è il sistema solare, dove i corpi (pianeti) orbitano attorno al sole, ma sono soggetti anche gli uni alle forze gravitazionali degli altri. I sistemi dinamici lineari sono sistemi la cui evoluzione è governata da equazioni lineari. Nella maggior parte dei casi, i sistemi dinamici lineari non sono sufficientemente sofisticati per descrivere dei fenomeni reali (sul lungo periodo). Nei sistemi dinamici è possibile individuare dei punti fissi. Ad esempio, in un sistema dinamico che modella due popolazioni in un ambiente, è possibile trovare un punto fisso nello stato (0, 0) inteso come 0 individui vivi della popolazione numero 1 e 0 individui vivi della popolazione numero 2 (entrambe le popolazioni sono estinte). Un punto fisso è un punto in cui il sistema è in “equilibrio”, se non perturbato non si muove da quello stato. Esistono punti fissi stabili e instabili. Un punto fisso è stabile se, data una piccola perturbazione allo stato, il sistema dinamico torna sul punto fisso (esempio: pallina in una valle). Un punto fisso è instabile se data una piccola perturbazione allo stato, il sistema dinamico non torna più in quel punto fisso (esempio:pallina su un cucuzzolo). I sistemi dinamici possono contenere degli attrattori, cioè dei sottoinsiemi dello spazio delle fasi che attirano molte configurazioni iniziali diverse. L’insieme delle configurazioni iniziali che vanno a finire eventualmente in un certo attrattore è chiamato bacino di attrazione. Esistono vari tipi di attrattori, alcuni presenti solo nei sistemi non lineari: punti, periodi (ripetizioni periodiche degli stessi valori),centri (orbite nello spazio delle fasi), cicli limite (esempio del pendolo con molla), ma anche attrattori “strani”, con struttura geometrica complessa, spesso frattale (esempio: attrattore di Lorenz).. Presentare il modello delle reti neurali a strati (percettroni e MLP) e descriverne le proprietà. Si tratta di un modello di rete neurale artificiale che mappa insiemi di dati in ingresso con insieme di dati in uscita. Operativamente dobbiamo immaginare strati multipli di neuroni connessi in maniera analoga ad un grafo diretto completo, in cui ogni strato è connesso completamente con il successivo. Per permetterne l’apprendimento, si utilizza la retropropagazione del gradiente (back-propagation). Significa che: dando dei dati in ingresso, vogliamo ottenere un determinato risultato in uscita per calcolare quindi il gradiente della funzione di perdita (o di costo). Durante il training avviene un costante processo di aggiustamento dei pesi dei collegamenti tra i nostri neuroni (weights) al fine di ottenere il risultato auspicato. Poiché durante la retropropagazione i gradienti ai vari livelli vengono moltiplicati tramite la regola della catena, il prodotto di n numeri, in un insieme come (0,1), può decrescere esponenzialmente rispetto alla profondità n della rete. Paradossalmente, un valore troppo elevato può portare all’esplosione del gradiente. Ad oggi il problema della perdita di gradiente è stato in parte risolto dalla potenza dall’elevata potenza di calcolo degli attuali strumenti computazionali e grazie alla transazione da CPU a GPGPU. Inoltre si è scoperto che un altro metodo utile per contrastare questo tipo di fenomeno è quello di allenare ogni strato in maniera indipendente e poi assemblarli tutti insieme.