Si può addestrare la rete utilizzando il tipico algoritmo di retropropagazione dell’ errore, ma anche tramite un algoritmo che sfrutta i principi dell’ evoluzione di Darwin. Gli algoritmi genetici sono ampiamente utilizzati nella moderna intelligenza artificiale per risolvere problemi di ottimizzazione. La base fondamentale di un algoritmo genetico è una popolazione di individui (cromosomi) composti, ciascuno, da un certo numero di geni che rappresentano caratteri dell’ individuo. Un individuo può avere caratteri più adatti alla soluzione del problema di un altro: si dice che la "fitness function" per quell' individuo porta ad un valore più vicino alla soluzione.
Per fitness function si intende una funzione che lega i caratteri del cromosoma(le variabili indipendenti nel problema) alla variabile che rappresenta la soluzione del problema. Un algoritmo genetico deve calcolare la fitness function per ogni individuo della popolazione e salvare gli individui migliori . Partendo da questi individui, deve generare una nuova popolazione tramite gli operatori "crossover" e "mutation"che, rispettivamente, scambiano geni tra cromosomi e creano piccole mutazioni casuali su alcuni geni dei cromosomi. Viene ricalcolata la fitness function per ogni individuo della nuova popolazione e salvati gli individui migliori. Questo ciclo viene ripetuto un numero molto elevato di volte creando sempre nuove "generazioni di individui".
Nel nostro caso, un individuo o cromosoma è rappresentato dal vettore contenente tutti i pesi dei collegamenti tra gli strati neuronali della rete e ogni singolo peso rappresenta un gene del cromosoma. Ogni individuo viene testato e, in questo caso, la fitness function coincide con l'esecuzione della rete stessa Gli individui migliori sono quelli che portano ad un errore globale più vicino al target . Si parte con tre individui e si salva il migliore e, come sopra esposto, si crea da esso una nuova popolazione di tre individui con gli operatori crossover e mutation, lasciando invariato un individuo per impedire possibili involuzioni. Questo ciclo viene ripetuto fino al raggiungimento del target error.
Un addestramento con algoritmo genetico è utile su livelli molto bassi di errore della rete per due motivi: il primo è il fatto che un algoritmo genetico può superare i minimi locali e, il secondo è che su livelli alti di errore il classico algoritmo a retropropagazione dell'errore è molto efficiente mentre su livelli di errore bassi, cioè quando ci si avvicina al minimo assoluto (o comunque ad un minimo), tale algoritmo produce avvicinamenti al target molto lenti(ricordate la tecnica della discesa del gradiente e il fatto che la derivata di una funzione su un punto di minimo è nulla?)
Per questo motivo l'apprendimento con algoritmo genetico può partire solamente da errori inferiori a 0.5, perché per errori maggiori la retropropagazione degli errori risulta più efficiente. Si può anche utilizzare un tool ibrido che inizia l'addestramento con algoritmo ebp e continua con algoritmo genetico, automaticamente, in prossimità del 10% di distanza dal target. Un diagramma di flusso dell’ algoritmo genetico è rappresentato in fig.4.
Luca Marchese
Successivo: Test distribuzione Dati
Sommario: Indice