AdaGrad

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 func update(_ model: inout Model, along direction: Model.TangentVector)
  • Deklaracja

    public required init(copying other: AdaGrad, to device: Device)