public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Un optimiseur de descente de gradient stochastique (SGD).
Implémente l'algorithme de descente de gradient stochastique avec prise en charge de l'élan, de la décroissance du taux d'apprentissage et de l'élan de Nesterov. L'élan et l'élan Nesterov (alias la méthode du gradient accéléré Nesterov) sont des méthodes d'optimisation de premier ordre qui peuvent améliorer la vitesse d'entraînement et le taux de convergence de la descente du gradient.
Références :
- « Une méthode d'approximation stochastique » (Robbins et Monro, 1951)
- « Sur la méthode d'approximation stochastique de Robbins et Monro » (Wolfowitz, 1952)
- « Estimation stochastique du maximum d'une fonction de régression » (Kiefer et Wolfowitz, 1952)
- "Quelques méthodes pour accélérer la convergence de la méthode d'itération" (Polyak, 1964)
- « Une méthode pour un problème de minimisation convexe sans contrainte avec le taux de convergence » (Nesterov, 1983)
Déclaration
public typealias Model = Model
Le taux d'apprentissage.
Déclaration
public var learningRate: Float
Le facteur élan. Il accélère la descente du gradient stochastique dans la direction appropriée et amortit les oscillations.
Déclaration
public var momentum: Float
Le taux d’apprentissage diminue.
Déclaration
public var decay: Float
Utilisez l'élan Nesterov si c'est vrai.
Déclaration
public var nesterov: Bool
L'état de vitesse du modèle.
Déclaration
public var velocity: Model.TangentVector
L’ensemble des mesures prises.
Déclaration
public var step: Int
Crée une instance pour
model
.Déclaration
public init( for model: __shared Model, learningRate: Float = 0.01, momentum: Float = 0, decay: Float = 0, nesterov: Bool = false )
Paramètres
learningRate
Le taux d'apprentissage. La valeur par défaut est
0.01
.momentum
Le facteur de quantité de mouvement qui accélère la descente du gradient stochastique dans la direction appropriée et amortit les oscillations. La valeur par défaut est
0
.decay
Le taux d’apprentissage diminue. La valeur par défaut est
0
.nesterov
Utilisez l'élan Nesterov si
true
. La valeur par défaut esttrue
.Déclaration
public required init(copying other: SGD, to device: Device)