4.3 Programma di addestramento

Il programma utilizzato per l'addestramento delle reti neurali è NNA versione 04.00.01. Questo programma è stato sviluppato da CSELT (Centro Studi e Laboratori Telecomunicazioni S.p.A.) a partire dal 1992 e poi modificato da LOQUENDO S.p.A., con il compito di addestrare reti neurali per il riconoscimento vocale. Esso viene gestito da un file di configurazione che ne permette diversi settaggi. In seguito verranno analizzati i più importanti e verrà spiegata la funzione che svolgono nell'addestramento della rete.


4.3.0.1 Learning rate

Il learning rate è il fattore di apprendimento di una rete. Durante l'algoritmo di back-propagation viene calcolato, in base all'errore compiuto in riconoscimento dalla rete, quanto deve variare ogni peso al fine di permettere alla rete un riconoscimento ottimo per quel determinato pattern. Se venisse utilizzata direttamente questa variazione, la rete apprenderebbe molto bene a riconoscere quel pattern, dando risultati pessimi per gli altri. Perderebbe cioè tutta l'informazione che aveva appreso dai pattern precedenti. Per evitare questo si utilizza mettere un fattore moltiplicativo $\eta$, il learning rate, che riduce la variazione ottima per quel pattern. Facendo in questo modo, la rete tenderà a convergere lentamente all'ottimo, impostando i suoi pesi in un punto di equilibrio che non favoriranno nessuno dei suoi target. Il learning rate è un valore che varia da 0 a 1.
Si riporta per completezza la seguente formula già enunciata:
\begin{displaymath}
\Delta w_{ij} = -\eta \cdot \frac{\partial E}{\partial w_{ij}}
\end{displaymath} (4.3)

Durante l'addestramento di una rete nuova, si utilizza partire da un learnig rate alto per farlo progressivamente scendere durante il training. Questo è utile perchè velocizza i tempi di apprendimento e permette alla rete di uscire da minimi locali, migliorandone la qualità.


4.3.0.2 Momento

Il momento è un ulterire fattore aggiunto alla formula (4.3). Può capitare, specialmente per gli archi dei primi livelli della rete, che durante il training alcuni di essi oscillino attorno ad un valore medio senza convergere e senza fornire perciò alcun miglioramento alla rete.
Figure 4.4: Azione del momento nel far uscire un peso da un minimo locale
Image FIGminimi_locali
Questo comportamento si può riscontrare per quei pesi che si trovano in una situazione di minimo locale in cui, a seguito di uno spostamento verso una direzione, ne segue uno in direzione opposta che riporta di nuovo il peso nel punto di minimo locale.

Il momento agisce come un'inerzia che tende a far spostare un peso sempre verso la stessa direzione, permettendo in alcuni casi di saltare un massimo locale e di portarlo ad un valore di minimo migliore a quello che aveva in precedenza (figura 4.4). Alla variazione di peso proposta dalla formula (4.3) viene aggiunta la variazione dovuta al frame precedente in modo proporzionale ad $\alpha$, il momento:

\begin{displaymath}
\Delta w_{ij}(t)_{new} = w_{ij}(t) + \alpha \cdot \Delta w_{ij}(t-1)
\end{displaymath} (4.4)


4.3.0.3 Epoche

Le epoche rappresentano il numero di volte che uno stesso set di frasi di addestramento viene sottoposto alla rete. Ciclare più volte su uno stesso database di frasi può essere utile per diversi motivi: È utile poter mischiare i patterns ad ogni epoca successiva alla prima. Facendo in questo modo la rete tenderà a non polarizzarsi a riconoscere seguenze di patterns prefissate e si potrà osservare un miglioramento dei risultati.


4.3.0.4 Batch size

Ad ogni pattern i pesi in memoria devono venire aggiornati. Essendo numerosi, questa operazione impiegherà molto tempo. Per velocizzare l'esecuzione del programma è stato pensato di aggiornare i pesi in memoria della rete solo dopo un determinato numero di patterns, il batch size. Il funzionamento è abbastanza semplice: vengono accumulate in un vettore le variazioni dei pesi, per un numero di patterns pari al batch size. Una volta esaminati un numero di patterns pari al batch size, ne viene fatta la media:
\begin{displaymath}
\Delta w_{ij}^{(new)}(t)=\frac{\sum_{i=0}^{batch\ size} w_{ij}(t-i)}{batch\ size}
\end{displaymath} (4.5)

con $t=(1\cdot{batch\ size},2\cdot{batch\ size},...,n\cdot{batch\ size})$ e $\forall i, j$.
La media, in ogni caso, rappresenta un'approssimazione. Elevare il batch size porta ad una peggioramento lieve e progressivo delle prestazioni della rete, sebbene fino ad un valore di 10 le prestazioni siano quasi identiche. Vi è la possibilità di impostare il batch size a utterance (frasi), in cui l'aggiornamento dei pesi viene fatto alla fine di ogni frase di addestramento o ad epoche, in cui i pesi vengono cambiati alla fine di un'epoca.


4.3.0.5 Fabp e ufabp tolerance

Il parametro fabp consente al training di focalizzarsi sui patterns che hanno un errore quadratico medio elevato, saltando quelli con errore basso, non facendoli perciò contribuire alla variazione dei pesi della rete per l'epoca corrente. Il parametro ufabp funziona concettualmente come fabp, ma viene valutato per ogni utterance. In pratica, se l'errore quadratico medio di un intera frase è al di sopra di un determinato valore viene addestrata, altrimente viene saltata.

Questi due parametri hanno un'elevata importanza. Sebbene si debba fare il run-forward per ogni pattern o utterance al fine di calcolare l'errore quadratico medio, nei casi di errore basso si può evitare l'intera back-propagation. Questo porta ad una diminuzione notevole dei tempi di esecuzione del programma di addestramento. Dall'altro lato porta anche un miglioramento alla qualità della rete. È inutile migliorare il comportamento di una ingresso riconosciuto già bene. Per opera di questo due parametri la rete rimane più bilanciata perché si vanno a correggere quegli input dove la rete sbaglia maggiormente, migliorandone la capacità discriminante e quindi la qualità in riconoscimento.



Subsections
Stefano Scanzio 2007-10-16