maoptimizer : algorithmes d’optimisation
Spécifie les algorithmes d’optimisation pour le réseau neuronal.
Utilisation
adaDeltaSgd(decay = 0.95, conditioningConst = 1e-06)
sgd(learningRate = 0.001, momentum = 0, nag = FALSE, weightDecay = 0,
lRateRedRatio = 1, lRateRedFreq = 100, lRateRedErrorRatio = 0)
Arguments
decay
Spécifie la vitesse d’atténuation appliquée aux gradients lors du calcul du pas dans l’algorithme d’optimisation adaptative ADADELTA. Ce taux est utilisé pour s’assurer que le taux d’apprentissage continue à progresser en donnant des poids plus petits aux gradients distants dans le calcul de la taille du pas. Mathématiquement, il remplace le carré moyen des gradients par une moyenne exponentielle des gradients au carré dans le dénominateur de la règle de mise à jour. La valeur assignée doit être comprise dans la plage (0,1).
conditioningConst
Spécifie une constante de conditionnement pour l’algorithme d’optimisation adaptative ADADELTA utilisé pour conditionner la taille du pas dans les régions où la moyenne d’atténuation exponentielle des dégradés au carré est petite. La valeur assignée doit être comprise dans la plage (0,1).
learningRate
Spécifie la taille du pas effectué dans la direction du gradient négatif pour chaque itération du processus d’apprentissage. La valeur par défaut est = 0.001
.
momentum
Spécifie les pondérations pour chaque dimension qui contrôlent la contribution de l’étape précédente à la taille du pas suivant pendant l’apprentissage. Cela modifie learningRate
pour accélérer l’apprentissage. La valeur doit être >= 0
et < 1
.
nag
Si TRUE
, la descente de gradient accélérée de Nesterov est utilisée. Cette méthode réduit la complexité d’oracle de la descente de gradient et est optimale pour l’optimisation convexe lisse.
weightDecay
Spécifie les poids d’échelle pour la taille de pas. Après chaque mise à jour de poids, les pondérations du réseau sont mises à l’échelle par (1 - ``learningRate * weightDecay)
. La valeur doit être >= 0
et < 1
.
lRateRedRatio
Spécifie le taux de réduction du taux d’apprentissage : taux par lequel le taux d’apprentissage est réduit au cours de l’apprentissage. La réduction du taux d’apprentissage aide à éviter les minima locaux. La valeur doit être > 0
et <= 1
.
- Une valeur de
1.0
signifie qu’il n’y a pas de réduction. - Une valeur de
0.9
indique que le taux d’apprentissage est réduit à 90 % de la valeur actuelle.
La réduction peut être déclenchée régulièrement, se produire après un nombre fixe d’itérations, ou lorsqu’un certain critère d’erreur concernant les augmentations ou diminutions de la fonction de perte est respecté. - Pour déclencher une réduction périodique du taux, spécifiez la fréquence en définissant le nombre d’itérations entre les réductions avec l’argument
lRateRedFreq
. - Pour déclencher la réduction du taux selon un critère d’erreur, spécifiez un nombre dans
lRateRedErrorRatio
.
lRateRedFreq
Définit la fréquence de réduction du taux d’apprentissage en spécifiant le nombre d’itérations entre les réductions. Par exemple, si 10
est spécifié, le taux d’apprentissage est réduit une fois toutes les 10 itérations.
lRateRedErrorRatio
Spécifie le critère d’erreur de réduction du taux d’apprentissage. Si la valeur est 0
, le taux d’apprentissage est réduit si la perte augmente entre les itérations. Si elle est définie sur une valeur fractionnaire supérieure à 0
, le taux d’apprentissage est réduit si la perte diminue de moins de la fraction de sa valeur précédente.
Détails
Ces fonctions peuvent être utilisées pour l’argument optimizer
dans rxNeuralNet.
La fonction sgd
spécifie la descente de gradient stochastique. maOptimizer
La fonction adaDeltaSgd
spécifie la descente de gradient AdaDelta, décrite dans l’article de 2012 « ADADELTA: An Adaptive Learning Rate Method » de Matthew D.Zeiler.
Valeur
Chaîne de caractères qui contient la spécification de l’algorithme d’optimisation.
Auteur(s)
Microsoft Corporation Microsoft Technical Support
Références
ADADELTA: An Adaptive Learning Rate Method
Voir aussi
Exemples
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))