Come ormai ben sapete, una delle caratteristiche salienti delle reti neurali è quella di godere di una certa elasticità di ragionamento che consente di avere risposte significative anche fuori dal training set. Più precisamente, possiamo dare come input alla rete valori non presenti nel training set chiedendole di effettuare una interpolazione o una estrapolazione. Il problema in questione è molto legato alla possibilità di avere un "overtraining" della rete, cioè un addestramento troppo incisivo.
Effettivamente quando si addestra una rete neurale raggiungendo errori molto piccoli si rischia di insegnare alla rete a riconoscere il "rumore" , per cui dati estranei al training set possono diventare dati estranei in senso assoluto: la rete in questo modo ha perso potere di generalizzazione. Bisogna tenere presente che una rete neurale non è un preciso sistema di calcolo ma sistema di calcolo impreciso anche se intelligente: quando addestriamo una rete neurale, dobbiamo trovare una soluzione bilanciata tra la necessità di raggiungere un errore piccolo sul training set e la richiesta di potere di generalizzazione che, comunque, dipende anche dalla validità dei dati scelti per costruire il training set.
Normalmente un minore numero di connessioni sinaptiche in rapporto al numero di esempi del training set induce una maggiore capacità di generalizzazione. Questo è dovuto al fatto che la rete non ha abbastanza memoria per "imparare" anche il "rumore". Una tecnica utilizzata è quella di eliminare connessioni sinaptiche che subiscono scarse variazioni durante il processo di addestramento, attuando cosi una ottimizzazione " a finestre" del complesso delle connessioni sinaptiche. Il programma Neurfuzz nasce con obbiettivi sperimentali e segue, in questo caso, una strada completamente differente, che ha dato risultati positivi solo in certe condizioni, con particolari training sets.
Questa opzione è rimasta nel programma sebbene non sia stata validata in alcun contesto definito e specificabile. La procedura utilizzata in questa opzione sperimentale è descritta di seguito. Per ogni epoca, a partire da un certo errore (che può essere scelto dall’ utilizzatore), viene calcolato l'errore globale, ottenuto con il validation set, e confrontato con quello ottenuto con il training set: se esiste una differenza percentuale maggiore di quella scelta dall’ utente, il numero dei neuroni degli strati hidden viene automaticamente incrementato.
Dopo questa procedura, viene effettuata una operazione molto particolare che, consiste in un superficiale "lavaggio del cervello", ottenuto con piccole variazioni casuali e distribuite sui pesi degli strati hidden. Questa operazione ha come primo effetto evidente, quello di elevare notevolmente l errore della rete, ma errori molto piccoli vengono nuova mente raggiunti in tempi brevissimi(effettivamente è rimasta una matrice profonda dell'addestramento precedente) e con una "ridistribuzione" del know how su tutti i neuroni, indispensabile per il raggiungimento dello scopo. Il diagramma di flusso di tutta la operazione è rappresentato in fig.7.
Luca Marchese
Successivo: Test sulla Resistenza al rumore
Sommario: Indice