Contenuto principale

trainbr

Retropropagazione della regolarizzazione bayesiana

Descrizione

net.trainFcn = 'trainbr' visualizza la proprietà della rete trainFcn.

[trainedNet,tr] = train(net,...) addestra la rete con trainbr.

trainbr è una funzione di addestramento della rete che aggiorna i valori di pesi e bias secondo l'ottimizzazione di Levenberg-Marquardt. Minimizza una combinazione di errori quadratici, pesi e bias, per poi determinare la combinazione corretta in modo da produrre una rete che generalizzi in modo corretto. Questo processo è chiamato regolarizzazione bayesiana.

L’addestramento avviene secondo i parametri di addestramento trainbr, 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.mu — Parametro di regolazione Marquardt. Il valore predefinito è 0,005.

  • net.trainParam.mu_dec — Fattore di decremento per mu. Il valore predefinito è 0,1.

  • net.trainParam.mu_inc — Fattore di incremento per mu. Il valore predefinito è 10.

  • net.trainParam.mu_max — Valore massimo per mu. Il valore predefinito è 1e10.

  • net.trainParam.max_fail — Errori di convalida massimi. Il valore predefinito è 0.

  • net.trainParam.min_grad — Gradiente di performance massimo. Il valore predefinito è 1e-7.

  • 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.

Per impostazione predefinita, gli arresti di validazione sono disabilitati (max_fail = 0), in modo che l'addestramento possa continuare finché non viene trovata una combinazione ottimale di errori e pesi. Tuttavia, una certa minimizzazione del peso/bias può ancora essere ottenuta con tempi di addestramento più brevi se si abilita la validazione impostando max_fail su 6 o su un altro valore tassativamente positivo.

esempio

Esempi

comprimi tutto

Questo esempio mostra come risolvere un problema costituito da input p e target t utilizzando una rete. Comporta l'adattamento di un'onda sinusoidale rumorosa.

p = [-1:.05:1];
t = sin(2*pi*p)+0.1*randn(size(p));

Viene creata una rete feed-forward con un livello nascosto di 2 neuroni.

net = feedforwardnet(2,'trainbr');

In questo caso, la rete è addestrata e testata.

net = train(net,p,t);
a = net(p)

Argomenti di input

comprimi tutto

Rete di input, specificata come un oggetto di rete. Per creare un oggetto di rete, utilizzare ad esempio feedforwardnet o narxnet.

Argomenti di output

comprimi tutto

Rete addestrata, restituita come un oggetto network.

Record di addestramento (epoch e perf), restituito come una struttura i cui campi dipendono dalla funzione di addestramento della rete (net.NET.trainFcn). Può comprendere campi quali:

  • Funzioni e parametri di addestramento, divisione dei dati e performance

  • Indici di divisione dei dati per i set di addestramento, convalida e test

  • Maschere di divisione dei dati per i set di addestramento, convalida e test

  • Numero di epoche (num_epochs) ed epoca migliore (best_epoch).

  • Un elenco dei nomi degli stati di addestramento (states).

  • Campi per ciascun nome di stato che registrano il suo valore durante l'addestramento

  • Performance della rete migliore (best_perf, best_vperf, best_tperf)

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

comprimi tutto

Algoritmi

trainbr può addestrare qualsiasi rete, a condizione che le funzioni di peso, input netto e trasferimento abbiano funzioni derivate.

La regolarizzazione bayesiana minimizza una combinazione lineare di errori quadratici e pesi. Modifica inoltre la combinazione lineare in modo che alla fine dell'addestramento la rete risultante abbia buone qualità di generalizzazione. Per discussioni più dettagliate sulla regolarizzazione bayesiana, vedere MacKay (Neural Computation, Vol. 4, No. 3, 1992, pp. da 415 a 447) e Foresee and Hagan (Proceedings of the International Joint Conference on Neural Networks, June, 1997).

Questa regolarizzazione bayesiana avviene all'interno dell'algoritmo di Levenberg-Marquardt. 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 adattativo mu aumenta di mu_inc fino a quando la modifica mostrata sopra non comporta una riduzione del valore della performance. 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 supera mu_max.

Riferimenti

[1] MacKay, David J. C. "Bayesian interpolation." Neural computation. Vol. 4, No. 3, 1992, pp. 415–447.

[2] Foresee, F. Dan, and Martin T. Hagan. "Gauss-Newton approximation to Bayesian learning." Proceedings of the International Joint Conference on Neural Networks, June, 1997.

Cronologia versioni

Introduzione prima di R2006a