Main Content

trainscg

Retropropagazione a gradiente coniugato scalato

Descrizione

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

esempio

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

trainscg è una funzione di addestramento della rete che aggiorna i valori di pesi e bias secondo il metodo del gradiente coniugato scalato.

L’addestramento avviene secondo i parametri di addestramento trainscg, mostrati qui con i relativi valori predefiniti:

  • net.trainParam.epochs — Numero massimo di epoche per l’addestramento. Il valore predefinito è 1000.

  • 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.goal — Obiettivo di performance. Il valore predefinito è 0.

  • net.trainParam.time — Tempo massimo di addestramento in secondi. Il valore predefinito è inf.

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

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

  • net.trainParam.mu — Parametro di regolazione Marquardt. Il valore predefinito è 0,005.

  • net.trainParam.sigma — Specifica della variazione di peso per l'approssimazione della seconda derivata. Il valore predefinito è 5.0e-5.

  • net.trainParam.lambda — Parametro per regolare l'indeterminatezza dell'hessiano. Il valore predefinito è 5.0e-7.

Esempi

comprimi tutto

Questo esempio mostra come risolvere un problema costituito da input p e target t utilizzando una rete.

p = [0 1 2 3 4 5];
t = [0 0 0 1 1 1];

Vengono create una rete feed-forward a due livelli con due neuroni nascosti e questa funzione di addestramento.

net = feedforwardnet(2,'trainscg');

In questo caso, la rete è addestrata e testata.

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

Per altri esempi, vedere help feedforwardnet e help cascadeforwardnet.

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)

Ulteriori informazioni

comprimi tutto

Utilizzo della rete

È possibile creare una rete standard che utilizza trainscg con feedforwardnet o cascadeforwardnet. Per preparare una rete personalizzata da addestrare con trainscg,

  1. Impostare net.trainFcn su 'trainscg'. Questa operazione imposta net.trainParam sui parametri predefiniti di trainscg.

  2. Impostare le proprietà di net.trainParam sui valori desiderati.

In entrambi i casi, chiamare train con la rete che si ottiene addestra la rete con trainscg.

Algoritmi

trainscg può addestrare qualsiasi rete, a condizione che le funzioni di peso, input netto e trasferimento abbiano funzioni derivate. La retropropagazione viene utilizzata per calcolare le derivate della performance perf rispetto alle variabili di peso e bias X.

L'algoritmo del gradiente coniugato scalato si basa su direzioni coniugate, come in traincgp, traincgf e traincgb, ma questo algoritmo non esegue una ricerca lineare a ciascuna iterazione. Per una discussione maggiormente dettagliata sull'algoritmo del gradiente coniugato scalato, vedere Moller (Neural Networks, Vol. 6, 1993, pp. 525–533).

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.

  • La performance di convalida (errore di convalida) è aumentata di oltre max_fail volte dall’ultima riduzione (usando la convalida).

Riferimenti

[1] Moller. Neural Networks, Vol. 6, 1993, pp. 525–533

Cronologia versioni

Introduzione prima di R2006a