Algoritmi Genetici Gli Algoritmi Genetici (AG) sono procedure complesse adattative finalizzate alla risoluzione di problemi di ricerca e ottimizzazione e basate concettualmente sui principi che regolano l'evoluzione naturale delle specie. 1) Selezionare le soluzioni migliori e ricombinarle in qualche modo fra loro in maniera tale che esse evolvano verso un punto di ottimo. 2) La funzione da massimizzare prende il nome di fitness (adattamento). La funzione di fitness valuta la adattabilità dell’individuo. Essa dipende dal numero di variabili: Esempio se la funzione dipende da 5 parametri (a,b,c,d,e) ed ogni variabile varia in un intervallo compreso tra 1 e 10 -> l’esplorazione dello spazio delle soluzioni sarà 510 = circa 10 milioni 3) Ogni informazione, tipo i valori dei 5 parametri, possono essere codificati in formato binario (il linguaggio dei computer!). Una soluzione potrà quindi essere rappresentata mediante una successione (detta stringa) di 0 e 1, ad es. 100110101001110 Algoritmi Genetici Popolazione: un insieme di soluzioni. Individui: membri della popolazione Cromosoma: la sequenza di 0 e 1 Geni: i valori 0 e 1 dei parametri del cromosoma Genotipo: L'insieme dei geni rappresentati da una stringa. Fenotipo: L'individuo ad esso corrispondente. Nella rappresentazione binaria si assume che ogni gene sia rappresentabile con un certo numero p di bit. Esempio Gene1 = {0,0,1,1} Gene2 = {0,1,0,1} Gene3 = {1,0,1,1} Gene4 = {1,1,0,1} Una soluzione, cioè un individuo della specie, è rappresentata da una stringa di n*p cifre binarie (il cromosoma è composto da n geni ovvero n parametri) alla quale è associato un valore di fitness (F). Algoritmi Genetici Ad ogni generazione viene scelta un porzione dell’intera popolazione e viene fatta evolvere con i meccanismi di ricombinazione. Al passaggio successivo passeranno gli individui con fitness migliore ovvero gli individui più “adatti” (calcolo basato sulla funzione di fitness). Un individuo è selezionato se la sua fitness è probabile (ad esempio se f è il valore di fitness di una soluzione e F la somma dei valori di fitness di tutta la popolazione, la probabilità potrebbe essere f/F) la fitness media della popolazione tenderà quindi ad aumentare con le generazioni, portando così la specie ad evolversi nel tempo. Algoritmi Genetici L’evoluzione procede principalmente per eventi di crossing over (due tipi) o mutazione Per accelerare la convergenza all’ipotetico massimo conviene spesso far si che l'individuo migliore di una generazione venga copiato e passi alla successiva senza subire modifiche. Tale tecnica è detta elitismo, e se le popolazioni sono abbastanza numerose può essere estesa a più di un individuo, imponendo cioè che i migliori n individui vengano clonati nella generazione successiva mentre per gli altri si procede nella solita maniera. Algoritmi Genetici Quando utilizzarli ? (Le Applicazioni) Anche in questo caso, come per MMC e SA, il problema che si propongono di risolvere è quello di cercare il l’ottimo globale di una certa funzione. La funzione o il modello deve, quindi, essere noto. Sono utili quando la funzione è troppo complessa per essere velocemente massimizzata con tecniche tipo exhaustive search. Vantaggi 1) Si scelgono, rispetto agli altri tipi di ottimizzazione, quando ci sono molti parametri che descrivono un fenomeno e tra di essi non c’è una evidente correlazione. 2) La ricerca stocastica dell’ottimo globale viene fatta in parallelo e questo li rende più efficienti e meno suscettibili agli ottimi locali. Essendo in parallelo, infatti, quello che avviene in una certa porzione della popolazione non dipende da quello che avviene in altre parti della popolazione. In pratica effettuano una ricerca Montecarlo molto efficiente con in più una progressione evolutiva. Algoritmi Genetici Svantaggi 1) Sebbene la prospettiva di trovare l’ottimo globale sia efficiente la convergenza a questo risultato è più lenta di altre tecniche di ottimizzazione. Infatti, se già le soluzioni della popolazioni di partenza sono vicine all’ottimo globale, una ricerca con altre tecniche è più rapida e accurata. Nei GA viene perso troppo tempo a testare e calcolare la fitness di soluzioni subottimali. 2) La natura stocastica del metodo comporta che trovare l’ottimo globale sia difficile e si ha solo un’approssimazione o stima di quest’ultimo. Trovarlo effettivamente è dovuto più al caso (come per tutti i sistemi di ottimizzazione per problemi complessi). LE RETI NEURALI MACHINE LEARNING AI (Artificial Intelligence) Motivazione • Quando è possibile costruire delle predizioni basate su osservazioni elementari e un insieme di regole (da stabilire) abbiamo visto che si possono considerare i metodi di ottimizzazione. Questi metodi sono in grado di generare soluzioni nuove non ancora osservate. – Creano quindi delle ipotesi che spiegano il comportamento p.es. della natura. – In bioinformatica spesso sono chiamati metodi ab initio. • In alternativa si può pensare di costruire delle predizioni basate sulla conoscenza dei dati che abbiamo. Questi metodi sono di apprendimento o machine learning (come HMM, NN, SVM) e sono di tipo knowledge-based, nel senso che richiedono una conoscenza iniziale della materia con dei training set su cui basare le proprie predizioni. – Non si genera conoscenza nuova, semplicemente si usa quella esistente per interpretare nuovi casi. – Non sono in grado di predire situazioni che non si sono ancora verificate in precedenza. Motivazione Per molti problemi di tipo biologico si hanno dati sperimentali che determinano certe condizioni di una proteina (p.es. Struttura secondaria) senza però conoscere a pieno i meccanismi che li determinano. Quindi: Sarebbe utile avere un modo per costruire modelli che simulino i risultati sperimentali. Questo permette di predire altri casi non ancora realizzati. A questo scopo sono stati sviluppati i metodi di machine learning che permettono al computer di identificare delle regolarità ed estrapolare regole di carattere generali. La categoria più conosciuta di questi metodi sono le reti neurali. Machine learning Fase di apprendimento Fase di predizione Output (conosciuto) Predizione Black box (rete neurale) Black box (rete neurale) Input Input Esempio: Predizione della struttura secondaria. Sequenza AA {α-elica, β-strand, coil} Rete Neurale (neural net – NN) Output (CCHHHH) Fase di predizione Predizione Black box (rete neurale) Input Input (ASCDEFG) DEFINIZIONE DI RETE NEURALE Le reti neurali artificiali sono modelli computazionali costituiti da elementi di elaborazione (ispirati ai neuroni) connessi tra loro tramite collegamenti (ispirati alle sinapsi) in modo da formare uno schema assimilabile ad un semplicissimo tessuto nervoso. Per definizione, le reti neurali artificiali sono strutture parallele e distribuite per il trattamento dell'informazione, consistenti in elementi di elaborazione interconnessi per mezzo di canali unidirezionali chiamati connessioni. DEFINIZIONE DI RETE NEURALE Ogni connessione ha un peso numerico associato, il cui valore varia in base all'esperienza maturata. I pesi diventano il principale mezzo di memorizzazione a lungo termine per le reti neurali e l'apprendimento di un particolare "comportamento" si ottiene in genere attraverso il loro aggiornamento. mento A partire da osservazioni di carattere biologico è stato definito un modello generale di neurone artificiale che può essere visto come una unità di elaborazione che effettua una somma pesata dei segnali di ingresso ed esegue una trasformazione non lineare del risultatato ottenuto. STRUTTURA DI UN NEURONE Un neurone (o più semplicemente nodo) è composto da: Un insieme di collegamenti di ingresso che provengono da altre unità. Una singola uscita che si dirama in diverse connessioni secondarie ognuna delle quali trasporta lo stesso segnale (il segnale di uscita dell'unità). Una funzione che definisca il segnale di uscita dell'unità stessa (o livello di attivazione) dati gli ingressi (aj: valore d'ingresso proveniente dall'uscita dell'unita j) e i rispettivi pesi (Wj,i: peso associato al collegamento dall'unità j all'unità i). STRUTTURA DI UN NEURONE Il calcolo è suddiviso in due componenti: in primo luogo una componente lineare, chiamata funzione d'ingresso che effettua la somma pesata dei valori degli ingressi all’unità i. Quindi una componente non lineare g chiamata funzione di attivazione (una funzione elementare tipo la funzione gradino, segno o la cosiddetta sigmoide) che calcolano il valore di uscita dell’unità a partire dalla somma pesata precedente. STRUTTURA DI RETE NEURALE Per costruire una rete neurale si deve decidere che tipo di unità adottare e come interconnettere ciascuna unità. Generalmente la distinzione tra i diversi modelli è basata sulla struttura interna dei nodi per cui vengono individuate due classi: 1. Reti feed-forward Nelle reti di tipo feed-forward i neuroni sono organizzati in strati (layer) e le connessioni presenti sono esclusivamente da uno strato al successivo. Nessun nodo può essere connesso ai nodi del medesimo strato o ad uno strato precedente, oppure saltare allo strato successivo. 2. Reti ricorrenti hanno una forma arbitraria e sono dotate di memoria a breve termine. Reti neurali applicate a proteine • La parametrizzazione delle reti neurali richiede molti esempi (fino a 2000) di proteine non omologhe. • Per la predizione del residuo i della proteina si utilizza il contesto locale (p.es. i-6, ..., i-1, i, i+1, ..., i+6) • Ogni residuo è codificato in modo sparso. 21 unità per ogni posizione: 20 per ogni tipo di residuo, uno per l‘assenza (gap). i -3 i i+2 A B C D E F G H I J K L M N O P Q R S Struttura semplificata di una rete neurale per la predizione della struttura secondaria (perceptrone). La sequenza in input è costituita da una finestra di 13 posizioni centrata intorno a un residuo (per esempio la leucina è riportata in grassetto). Ogni residuo della finestra viene descritto in un gruppo di input, che comprende 21 unità (i rettangoli bianchi e neri): una per ogni tipo di residuo e una per l'eventuale assenza di un residuo. Per 13 residui, ci saranno 13X21 unità di input Ogni gruppo di input è connesso allo strato di output mediante dei pesi variabili, che vengono definiti nella fase di apprendimento della rete neurale. La struttura secondaria da assegnare al residuo centrale della sequenza di input viene decisa sulla base dell'unità di output con il valore più alto. ALGORITMI DI APPRENDIMENTO DI UNA RETE NEURALE Definita la struttura bisogna inizializzare i pesi dei vari collegamenti per addestrarla a risolvere particolari compiti. Rendere minimo I’errore commesso in relazione ad un insieme prefissato di esempi con un algoritmo di addestramento automatico. Dalla sua efficienza e affidabilità dipende la capacita di quest'ultima di acquisire conoscenza. Le tecniche di apprendimento possono essere suddivise in due categorìe: 1. Apprendimento supervisionato richiede un insieme di esempi per i quali l'uscita desiderata della rete è nota a fronte di un particolare ingresso, il processo di apprendimento consiste quindi nel trattare la rete in modo che essa fornisca la risposta corretta per il set di esempi. La rete risultante dovrebbe poi essere in grado di dare una buona risposta quando vengono sottomessi esempi non contemplati tra quelli dell’addestramento. (predizione) 2. Autorganizzazione o apprendimento non supervisionato l'apprendimento della rete neurale è autonomo: essa processa i dati che le vengono presentati, estrae alcune delle loro proprietà e impara a riflettere queste proprietà sulle sue uscite. La rete neurale non fa altro che configurare se stessa in modo che ogni neurone a livello output risponda in modo simile per input simili tra loro, ossia in qualche modo correlati. (clustering) ALGORITMI DI APPRENDIMENTO DI UNA RETE NEURALE Tutti gli algoritmi di apprendimento presentano degli aspetti generali comuni: 1. I valori iniziali dei pesi della rete vengono assegnati in modo casuale entro un piccolo campo di variazione (ad esempio [-0.1, 0.1]) oppure vengono fissati tutti a zero. 2. L'apprendimento consiste nella presentazione ripetuta di una serie di input (training set). La convergenza della rete (ossia arrivare ad un equilibrio per cui la rete si comporta esattamente come voluto) può essere raggiunta, infatti, elaborando più volte gli stessi input e modificando ad ogni ciclo i pesi di una quantità predefinita. Ciascun ciclo viene chiamato epoca. 3. La velocità di apprendimento è regolata da una costante detta tasso di apprendimento che controlla la porzione di modifica che viene applicata ai valori dei pesi. ALGORITMI DI APPRENDIMENTO DI UNA RETE NEURALE Per le reti feed-forward l'algoritmo di apprendimento supervisionato più utilizzato è sicuramente la back-propagation (formalizzata nel 1969 da Bryson e Ho). Questo algoritmo utilizza una tecnica di ricerca basata sul gradiente che minimizza una funzione costo uguale alla differenza media quadrata tra gli output desiderati e quelli generati dalla rete. rete Nella back-propagation la funzione di attivazione di un neurone artificiale deve essere una funzione continua e differenziabile (ad esempio, la sigmoide). E = Out – T e = Σ (Ei)2 Out è il valore di output della rete mentre T è il valore atteso ALGORITMI DI APPRENDIMENTO DI UNA RETE NEURALE Operativamente la tecnica di back-propagation può essere suddivisa in quattro fasi: 1. Inizialmente viene presentata allo strato di ingresso della rete una matrice contenente i segnali di ingresso e vengono calcolate le uscite di ciascun singolo strato fino ad ottenere il segnale di uscita. 2. Il segnale di uscita finale Out viene confrontato con il segnale di riferimento conosciuto T (contenuto nel set degli esempi utilizzato) e viene calcolato il residuo o differenza e = Out - T e la somma dei quadrati delle componenti dei residui (e = Σ (Ei)2 ). 3. II processo di apprendimento della rete viene interrotto se e risulta minore di un valore prefissato o se il numero massimo di iterazioni (epoche) epoche stabilito per l'apprendimento viene raggiunto. 4. Vengono calcolati i nuovi valori dei pesi nello strato di output e negli strati interni e si ricomincia il processo. LE RETI NEURALI DINAMICHE PROBLEMA: COME COSTRUIRE UNA RETE ? QUANTI LAYER O NEURONI INSERIRE ? Uno degli svantaggi fondamentali degli algoritmi di apprendimento classici delle reti neurali, consiste nella necessità di fissare a priori il numero e la grandezza degli strati della rete. Questo potrebbe portare ad un sopra o sottodimensionamento della struttura che necessita di un ulteriore ingegnerizzazione a posteriori. SOLUZIONE 1. Scegliere il numero di layer e neuroni in modo empirico, minimizzandone il numero per quanto possibile. Così si elimineranno parametri da addestrare. 2. Per evitare questi inconvenienti ci si può orientare verso algoritmi di costruzione dinamica che modellino la struttura della rete durante l'addestramento stesso (denominate "reti neurali artificiali dinamiche"). dinamiche Queste classi di algoritmi includono sia tecniche di eliminazione dei nodi o pesi delle connessioni che non giocano un ruolo significativo, sia tecniche di inserimento di ulteriori nodi. Ad esempio tali algoritmi valutano che la rete in tutte le generazioni che fa durante l’addestramento, commette un errore sempre maggiore rispetto alla tolleranza prestabilita. QUANDO SI USANO LE RETI NEURALI ? Normalmente la risoluzione di un problema può essere effettuata in maniera ottima se si riesce a formalizzare il problema stesso in maniera teorica, ad esempio mediante un modello matematico (ottimizzazione). Nei casi in cui questo non è possibile ci si può orientare verso una struttura di elaborazione basata su esempi ammesso che se ne abbiano in grande quantità. Tali strutture utilizzano un insieme di esempi di riferimento (training-set) come esperienza passata sulla quale basarsi per la risoluzione del problema in questione. Vantaggi • Applicabili ad un gran numero di problemi molto diversi tra di loro. • Relativamente facili da costruire. • Buona approssimazione del dato reale. Limiti • Numero elevato di esempi per l‘allenamento. • Non spiegano il fenomeno (black box). • Problema del overfitting. Support Vector Machines (cenni) Support Vector Machines (SVM) • Dati i problemi di allenamento con le reti neurali, in particolare il numero elevato di esempi richiesto, è stata sviluppata questa classe di predittori. • L‘idea consiste in trasformare i dati complessi in input, attraverso una kernel function, in uno spazio multidimensionale nel quale i dati si separano in modo lineare. • Le SVM vengono anche considerate le “nuove reti neurali“ dato che agli effetti pratici sono molto simili (stesso processo di apprendimento con training set, seguito da utilizzo). • La teoria non è ancora stata formulata in modo completo, quindi non sono (ancora) applicabili per tutte le classi di problema. (p.es. allineamenti) Support Vector Machines (SVM) • Data una sequenza di esempi, la SVM cerca di individuare il piano di taglio ottimale per separare i dati in classi diverse. • Questo taglio viene eseguito nel feature space, una trasformazione dei dati effettuata mediante la kernel function. Kernel function Input data Feature space Support Vector Machines (SVM) Vantaggi • Richiede meno dati per l‘addestramento di una rete neurale. • Riduce il problema del overfitting. • In teoria è più affidabile delle reti neurali. Limiti • Non è applicabile a tutti i problemi in mancanza di alcune fondamenta teoriche. • Per funzionare meglio di una rete neurale richiede una codifica più sofisticata dei dati.