Kann mir bitte jemand sagen, wie ich ein neuronales Netzwerk mit der Batch-Methode aufbauen soll?
Ich habe gelesen, dass wir im Batch-Modus für alle Stichproben im Trainingssatz den Fehler, das Delta und damit die Delta-Gewichte für jedes Neuron im Netzwerk berechnen und diese dann akkumulieren, anstatt sie sofort zu aktualisieren, und bevor wir beginnen In der nächsten Epoche aktualisieren wir die Gewichte.
Ich habe auch irgendwo gelesen, dass die Batch-Methode der Online-Methode ähnelt, mit dem Unterschied, dass man nur die Fehler für alle Stichproben im Trainingssatz summieren und dann den Durchschnitt daraus bilden und diese dann zum Aktualisieren der Gewichte wie folgt verwenden muss man macht in der Online-Methode (der Unterschied ist nur der Durchschnitt) wie folgt:
for epoch=1 to numberOfEpochs
for all i samples in training set
calculate the errors in output layer
SumOfErrors += (d[i] - y[i])
end
errorAvg = SumOfErrors / number of Samples in training set
now update the output layer with this error
update all other previous layers
go to the next epoch
end
- Welche davon sind wirklich die richtige Form der Batch-Methode?
- Wenn Sie beim ersten Beispiel nicht alle Delta-Gewichte addieren, erhalten Sie eine große Anzahl?
Antworten:
Die Verwendung von Durchschnitt oder Summe ist äquivalent in dem Sinne, dass es Paare von Lernraten gibt, für die sie dasselbe Update erzeugen.
Um dies zu bestätigen, rufen Sie zunächst die Aktualisierungsregel auf:
quelle
Die beiden Antworten sind gleichwertig. Ich persönlich würde es als durchschnittlichen Fehler anstelle der Summe betrachten. Denken Sie jedoch daran, dass der Gradientenabstieg einen Parameter hat, der als Lernrate bezeichnet wird, und dass nur ein Teil des Gradienten des Fehlers subtrahiert wird. Ob der Fehler als Gesamtdurchschnitt definiert ist, kann durch Ändern der Lernrate kompensiert werden.
quelle