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
—mu
iniziale. 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 (NaN
per 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
.mu
superamu_max
.La performance di convalida (errore di convalida) è aumentata di oltre
max_fail
volte dall’ultima riduzione (usando la convalida).
Cronologia versioni
Introduzione prima di R2006a