public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Optymalizator stochastycznego gradientu opadania (SGD).
Implementuje algorytm stochastycznego gradientu opadania z obsługą pędu, zaniku szybkości uczenia się i pędu Niestierowa. Pęd i pęd Niestierowa (inaczej metoda przyspieszonego gradientu Niestierowa) to metody optymalizacji pierwszego rzędu, które mogą poprawić prędkość uczenia i współczynnik zbieżności opadania gradientu.
Referencje:
- „Metoda przybliżenia stochastycznego” (Robbins i Monro, 1951)
- „O stochastycznej metodzie aproksymacji Robbinsa i Monro” (Wolfowitz, 1952)
- „Stochastyczne oszacowanie maksimum funkcji regresji” (Kiefer i Wolfowitz, 1952)
- „Niektóre metody przyspieszania zbieżności metodą iteracyjną” (Polyak, 1964)
- „Metoda problemu nieograniczonej minimalizacji wypukłej ze stopniem zbieżności” (Nesterov, 1983)
Deklaracja
public typealias Model = Model
Szybkość uczenia się.
Deklaracja
public var learningRate: Float
Czynnik pędu. Przyspiesza opadanie gradientu stochastycznego w odpowiednim kierunku i tłumi oscylacje.
Deklaracja
public var momentum: Float
Spadek szybkości uczenia się.
Deklaracja
public var decay: Float
Użyj pędu Niestierowa, jeśli jest prawdziwy.
Deklaracja
public var nesterov: Bool
Stan prędkości modelu.
Deklaracja
public var velocity: Model.TangentVector
Zestaw podjętych kroków.
Deklaracja
public var step: Int
Tworzy instancję dla
model
.Deklaracja
public init( for model: __shared Model, learningRate: Float = 0.01, momentum: Float = 0, decay: Float = 0, nesterov: Bool = false )
Parametry
learningRate
Szybkość uczenia się. Wartość domyślna to
0.01
.momentum
Współczynnik pędu, który przyspiesza opadanie w gradiencie stochastycznym w odpowiednim kierunku i tłumi oscylacje. Wartość domyślna to
0
.decay
Spadek szybkości uczenia się. Wartość domyślna to
0
.nesterov
Użyj pędu Niestierowa, jeśli jest
true
. Wartość domyślna totrue
.Deklaracja
public required init(copying other: SGD, to device: Device)