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.