maOptimizer: Optimierungsalgorithmen
Gibt Optimierungsalgorithmen für Neural Net an.
Verwendung
adaDeltaSgd(decay = 0.95, conditioningConst = 1e-06)
sgd(learningRate = 0.001, momentum = 0, nag = FALSE, weightDecay = 0,
lRateRedRatio = 1, lRateRedFreq = 100, lRateRedErrorRatio = 0)
Argumente
decay
Gibt die Verfallsrate an, die auf Gradienten angewendet wird, wenn der Schritt im adaptiven ADADELTA-Optimierungsalgorithmus berechnet wird. Diese Rate wird verwendet, um sicherzustellen, dass die Lernrate weitere Fortschritte macht, indem Remotegradienten bei der Berechnung der Schrittweite geringere Gewichtungen erhalten. Mathematisch wird das quadratische Mittel der Gradienten durch einen exponentiell abfallenden Durchschnitt der quadrierten Gradienten im Nenner der Aktualisierungsregel ersetzt. Der zugewiesene Wert muss im Bereich (0,1) liegen.
conditioningConst
Gibt eine Konditionierungskonstante für den adaptiven ADADELTA-Optimierungsalgorithmus an, mit der die Schrittweite in Regionen konditioniert wird, in denen der exponentiell abfallende Durchschnitt der quadrierten Gradienten klein ist. Der zugewiesene Wert muss im Bereich (0,1) liegen.
learningRate
Gibt die Weite des Schritts in Richtung des negativen Gradienten für jede Iteration des Lernprozesses an. Standardwert: = 0.001
.
momentum
Gibt Gewichtungen für jede Dimension an, die den Beitrag des vorherigen Schritts zur Weite des nächsten Schritts während des Trainings steuern. Dies ändert die learningRate
, um das Training zu beschleunigen. Der Wert muss >= 0
und < 1
sein.
nag
Wenn TRUE
, wird der beschleunigte Gradientenabstieg von Nesterow verwendet. Diese Methode reduziert die Oracle-Komplexität des Gradientenabstiegs und ist optimal für eine reibungslose konvexe Optimierung.
weightDecay
Gibt die Skalierungsgewichtungen für die Schrittweite an. Nach jeder Gewichtungsaktualisierung werden die Gewichtungen im Netzwerk um (1 - ``learningRate * weightDecay)
skaliert. Der Wert muss >= 0
und < 1
sein.
lRateRedRatio
Gibt das Verhältnis der Lernratenreduzierung an: das Verhältnis, um das die Lernrate während des Trainings reduziert wird. Die Reduzierung der Lernrate kann lokale Minima vermeiden. Der Wert muss > 0
und <= 1
sein.
- Ein Wert von
1.0
bedeutet keine Reduzierung. - Der Wert
0.9
bedeutet, dass die Lernrate auf 90 % ihres aktuellen Werts reduziert wird.
Die Verringerung kann entweder in regelmäßigen Abständen ausgelöst werden, um nach einer festen Anzahl von Iterationen zu erfolgen, oder wenn ein bestimmtes Fehlerkriterium hinsichtlich der Erhöhung oder Verringerung in der Verlustfunktion erfüllt ist. - Um eine regelmäßige Reduzierung der Rate auszulösen, geben Sie die Häufigkeit an, indem Sie die Anzahl der Iterationen zwischen Reduzierungen mit dem Argument
lRateRedFreq
festlegen. - Um eine Reduzierung der Rate auf einem Fehlerkriterium basierend auszulösen, geben Sie eine Zahl in
lRateRedErrorRatio
an.
lRateRedFreq
Legt die Häufigkeit der Verringerung der Lernrate fest, indem die Anzahl der Iterationen zwischen den Reduzierungen angegeben wird. Wenn beispielsweise 10
angegeben wird, wird die Lernrate alle 10 Iterationen reduziert.
lRateRedErrorRatio
Gibt das Fehlerkriterium zur Verringerung der Lernrate an. Bei Festlegung auf 0
wird die Lernrate reduziert, wenn der Verlust zwischen Iterationen zunimmt. Bei Festlegung auf einen größeren Bruchwert als 0
wird die Lernrate reduziert, wenn der Verlust um weniger als diesen Bruchteil des vorherigen Werts abnimmt.
Details
Diese Funktionen können für das Argument optimizer
in rxNeuralNet verwendet werden.
Die sgd
-Funktion gibt das stochastische Gradientenabstiegsverfahren an. maOptimizer
Die adaDeltaSgd
-Funktion gibt das AdaDelta-Gradientenabstiegsverfahren an, das im Dokument „ADADELTA: An Adaptive Learning Rate Method“ (ADADELTA: Eine adaptive Lernratenmethode) aus dem Jahr 2012 von Matthew D. Zeiler beschrieben wird.
Wert
Eine Zeichenfolge, die die Spezifikation für den Optimierungsalgorithmus enthält.
Autor(en)
Microsoft Corporation Microsoft Technical Support
References
ADADELTA: An Adaptive Learning Rate Method
Weitere Informationen
Beispiele
myIris = iris
myIris$Setosa <- iris$Species == "setosa"
res1 <- rxNeuralNet(formula = Setosa~Sepal.Length + Sepal.Width + Petal.Width,
data = myIris,
optimizer = sgd(learningRate = .002))
res2 <- rxNeuralNet(formula = Setosa~Sepal.Length + Sepal.Width + Petal.Width,
data = myIris,
optimizer = adaDeltaSgd(decay = .9, conditioningConst = 1e-05))