AdaDelta

public class AdaDelta<Model: Differentiable>: Optimizer
where
  Model.TangentVector: VectorProtocol & PointwiseMultiplicative
    & ElementaryFunctions & KeyPathIterable,
  Model.TangentVector.VectorSpaceScalar == Float

Optymalizator AdaDelta.

Implementuje algorytm optymalizacji AdaDelta. AdaDelta to metoda stochastycznego opadania w gradiencie, oparta na informacjach pierwszego rzędu. Dostosowuje tempo uczenia się w oparciu o ruchome okno aktualizacji gradientów, zamiast gromadzić wszystkie przeszłe gradienty. W ten sposób AdaDelta kontynuuje naukę nawet po dokonaniu wielu aktualizacji. Szybciej dostosowuje się do zmieniającej się dynamiki przestrzeni problemowej optymalizacji.

Odniesienie: „ADADELTA: Metoda adaptacyjnego tempa uczenia się” (Zeiler, 2012)

  • Deklaracja

    public typealias Model = Model
  • Szybkość uczenia się.

    Deklaracja

    public var learningRate: Float
  • rho

    Współczynnik zaniku odpowiadający ułamkowi gradientu, który należy zachować w każdym kroku czasowym.

    Deklaracja

    public var rho: Float
  • Mały skalar dodany do mianownika w celu poprawy stabilności liczbowej.

    Deklaracja

    public var epsilon: Float
  • Spadek szybkości uczenia się.

    Deklaracja

    public var decay: Float
  • Bieżący krok.

    Deklaracja

    public var step: Int
  • Skumulowana, wykładniczo malejąca średnia kwadratów gradientów.

    Deklaracja

    public var averageSquared: Model.TangentVector
  • Aktualizacje skumulowanych parametrów.

    Deklaracja

    public var accumulatedDelta: Model.TangentVector
  • Tworzy instancję dla model .

    Deklaracja

    public init(
      for model: __shared Model,
      learningRate: Float = 1,
      rho: Float = 0.95,
      epsilon: Float = 1e-6,
      decay: Float = 0
    )

    Parametry

    learningRate

    Szybkość uczenia się. Wartość domyślna to 1 .

    rho

    Czynnik zaniku. Wartość domyślna to 0.95 .

    epsilon

    Mały skalar dodany do mianownika w celu poprawy stabilności liczbowej. Wartość domyślna to 1e-6 .

    decay

    Spadek szybkości uczenia się. Wartość domyślna to 0 .

  • Deklaracja

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Deklaracja

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