public class AdaGrad<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Optymalizator AdaGrad.
Implementuje algorytm optymalizacji AdaGrad (gradient adaptacyjny). AdaGrad ma szybkości uczenia się specyficzne dla parametrów, które są dostosowywane w zależności od częstotliwości aktualizacji parametrów podczas szkolenia. Parametry, które otrzymują więcej aktualizacji, mają mniejszą szybkość uczenia się.
AdaGrad indywidualnie dostosowuje szybkość uczenia się wszystkich parametrów modelu, skalując je odwrotnie proporcjonalnie do pierwiastka kwadratowego z bieżącej sumy kwadratów norm gradientu.
Odniesienie: „Adaptacyjne metody subgradientowe do uczenia się online i optymalizacji stochastycznej” (Duchi i in., 2011)
Deklaracja
public typealias Model = Model
Szybkość uczenia się.
Deklaracja
public var learningRate: Float
Mały skalar dodany do mianownika w celu poprawy stabilności liczbowej.
Deklaracja
public var epsilon: Float
Bieżąca suma kwadratów norm gradientu.
Deklaracja
public var accumulator: Model.TangentVector
Tworzy instancję dla
model
.Deklaracja
public init( for model: __shared Model, learningRate: Float = 1e-3, initialAccumulatorValue: Float = 0.1, epsilon: Float = 1e-8 )
Parametry
learningRate
Szybkość uczenia się. Wartość domyślna to
1e-3
.initialAccumulatorValue
Wartość początkowa bieżącej sumy kwadratów norm gradientu. Wartość domyślna to
0.1
.epsilon
Mały skalar dodany do mianownika w celu poprawy stabilności liczbowej. Wartość domyślna to
1e-8
.Deklaracja
public required init(copying other: AdaGrad, to device: Device)