Scelta dei Parametri Secondari
Per fare in modo che una rete neurale svolga per bene il suo lavoro è necessario
scegliere con cura non solo la sua struttura, ma anche i valori di tutti i parametri secondari, come
ad esempio il tasso di apprendimento. Una strategia molto utilizzata consiste nel semplificare come prima
cosa la rete neurale e quindi testare diversi valori dei parametri secondari: i tempi di test risulteranno
più brevi che non usando l'intera rete, quindi potremo provare più valori in meno tempo e scegliere
quelli che danno i risultati migliori.
- Abbiamo visto all'inizio a cosa serva il tasso di apprendimento: ricordo che serve a stabilire
la lunghezza dei passi nell'algoritmo del gradiente decrescente (la "forza" dei tiri per fare buca
nella nostra metafora). Ricordo anche che sceglierlo troppo alto ci farà superare il bersaglio
(il minimo della funzione costo), mentre troppo basso rallenterà inutilmente il processo di
apprendimento.
Per trovare un buon valore iniziale prima di tutto si stima un valore per cui il costo inizia subito
a diminuire: non serve essere troppo precisi e di solito si determina il suo ordine di grandezza
(1, 0.1, 0.01 e così via). Una volta fatto questo, si aggiusta un po' il suo valore. Tuttavia,
un buon metodo di allenamento prevede anche di variare il valore del tasso di apprendimento:
solitamente, si abbassa man mano che la rete si allena per permetterle di aggiustare meglio i valori
di pesi e bias (deve fare, in pratica, cambiamenti sempre più piccoli man mano che si allena).
Per sapere quando abbassarlo, si osserva l'accuratezza della rete: quando inizia a peggiorare, allora
è il momento di diminuire il tasso di apprendimento.
La variazione della funzione costo usando diversi valori del tasso di apprendimento: il
valore soglia è 0.25 e lo useremo per sistemare il valore che andremo poi ad utilizzare.
- Anche il numero di epoche di allenamento deve essere scelto in maniera adeguata. Il
procedimento non è tuttavia molto complesso: si misura l'accuratezza alla fine di ogni epoca e,
quando smette di migliorare, si ferma l'allenamento. Ovviamente non bisogna essere frettolosi:
capita che, anche in fase di miglioramento, l'accuratezza oscilli un pochino, mantenendo comunque
un trend positivo. "L'accuratezza smette di migliorare" significa che per un po' il suo massimo non
è salito: bisogna leggere quindi non i valori singoli, ma il trend dell'accuratezza.
- Per scegliere un buon tasso di regolarizzazione invece bisogna prima aver stabilito un
buon valore del tasso di apprendimento, che viene scelto senza regolarizzazione. Quindi si stima
l'ordine di grandezza del tasso di regolarizzazione e poi si sistema il suo valore. Quindi si
usa questo valore appena trovato per risistemare il tasso di apprendimento. Un po' contorto,
ma niente di complesso. Sintetizzando: trovo il tasso di apprendimento, trovo quello di
regolarizzazione, sistemo quello di apprendimento.
- Per finire, l'ultimo parametro che ci manca è la grandezza dei mini-batch. Per
determinarla, si usano dei valori accettabili degli altri parametri e quindi si costruisce il
grafico dell'accuratezza in funzione del tempo: la dimensione che ci dà una crescita più
rapida è il valore che stiamo cercando.
Ovviamente, sistemare a mano ognuno di questi parametri richiede molto tempo,
ma può aiutare a prendere un po' di confidenza con le reti neurali. Fortunatamente, però esistono
dei sistemi che li ottimizzano in modo automatico. Tuttavia, sappiate che il problema della scelta
dei parametri secondari non è ancora stato risolto completamente.