trainlm
Retropropagazione di Levenberg-Marquardt
Descrizione
net.trainFcn = 'trainlm' visualizza la proprietà della rete trainFcn.
[ addestra la rete con trainedNet,tr] = train(net,...)trainlm.
trainlm è una funzione di addestramento della rete che aggiorna i valori di pesi e bias secondo l'ottimizzazione di Levenberg-Marquardt.
trainlm è spesso l’algoritmo di retropropagazione più veloce nella toolbox ed è vivamente consigliato come algoritmo supervisionato di prima scelta, sebbene richieda più memoria rispetto ad altri algoritmi.
L’addestramento avviene secondo i parametri di addestramento trainlm, mostrati qui con i relativi valori predefiniti:
net.trainParam.epochs— Numero massimo di epoche per l’addestramento. Il valore predefinito è 1000.net.trainParam.goal— Obiettivo di performance. Il valore predefinito è 0.net.trainParam.max_fail— Errori di convalida massimi. Il valore predefinito è6.net.trainParam.min_grad— Gradiente di performance massimo. Il valore predefinito è1e-7.net.trainParam.mu—muiniziale. Il valore predefinito è 0,001.net.trainParam.mu_dec— Fattore di decremento permu. Il valore predefinito è 0,1.net.trainParam.mu_inc— Fattore di incremento permu. Il valore predefinito è 10.net.trainParam.mu_max— Valore massimo permu. Il valore predefinito è1e10.net.trainParam.show— Epoche tra visualizzazioni (NaNper nessuna visualizzazione). Il valore predefinito è 25.net.trainParam.showCommandLine— Generazione di output della riga di comando. Il valore predefinito èfalse.net.trainParam.showWindow— Visualizzazione dell’interfaccia grafica di addestramento. Il valore predefinito ètrue.net.trainParam.time— Tempo massimo di addestramento in secondi. Il valore predefinito èinf.
I vettori di convalida sono usati per interrompere l’addestramento in anticipo se la performance della rete sui vettori di convalida non riesce a migliorare o se resta uguale per max_fail epoche in una riga. I vettori di test sono usati come ulteriore controllo della corretta generalizzazione della rete, ma non hanno alcun effetto sull’addestramento.
Esempi
Argomenti di input
Argomenti di output
Limitazioni
Questa funzione utilizza i calcoli jacobiani, che presuppongono che la performance sia una media o una somma degli errori quadratici. Quindi, le reti addestrate con questa funzione devono utilizzare la funzione di performance mse o sse.
Ulteriori informazioni
Algoritmi
trainlm supporta l’addestramento con i vettori di convalida e di test se la proprietà NET.divideFcn della rete è impostata su una funzione di divisione dei dati. I vettori di convalida sono usati per interrompere l’addestramento in anticipo se la performance della rete sui vettori di convalida non riesce a migliorare o se resta uguale per max_fail epoche in una riga. I vettori di test sono usati come ulteriore controllo della corretta generalizzazione della rete, ma non hanno alcun effetto sull’addestramento.
trainlm può addestrare qualsiasi rete, a condizione che le funzioni di peso, input netto e trasferimento abbiano funzioni derivate.
La retropropagazione viene utilizzata per calcolare la matrice jacobiana jX della performance perf rispetto alle variabili di pesi e bias X. Ogni variabile viene regolata secondo il metodo di Levenberg-Marquardt,
jj = jX * jX je = jX * E dX = -(jj+I*mu) \ je
dove E indica tutti gli errori e I indica la matrice di identità.
Il valore adattivo mu aumenta di mu_inc fino a quando la modifica sopra non produce un valore di performance ridotto. La modifica viene poi apportata alla rete e mu diminuisce di mu_dec.
L’addestramento si interrompe quando si verifica una delle condizioni seguenti:
Viene raggiunto il numero massimo di
epochs(ripetizioni).Viene superata la quantità massima di
time.La performance è minimizzata al
goal.Il gradiente di performance massimo scende al di sotto di
min_grad.musuperamu_max.La performance di convalida (errore di convalida) è aumentata di oltre
max_failvolte dall’ultima riduzione (usando la convalida).
Cronologia versioni
Introduzione prima di R2006a
