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
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 required init(copying other: AdaDelta, to device: Device)