에이다델타

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

AdaDelta 최적화 프로그램.

AdaDelta 최적화 알고리즘을 구현합니다. AdaDelta는 1차 정보를 기반으로 하는 확률적 경사하강법입니다. 과거의 모든 그라디언트를 누적하는 대신 그라디언트 업데이트의 이동 창을 기반으로 학습 속도를 조정합니다. 따라서 AdaDelta는 많은 업데이트가 수행된 경우에도 계속 학습합니다. 최적화 문제 공간의 변화하는 역학에 더 빠르게 적응합니다.

참고: "ADADELTA: 적응형 학습률 방법" (Zeiler, 2012)

  • 선언

    public typealias Model = Model
  • 학습률입니다.

    선언

    public var learningRate: Float
  • 각 시간 단계에서 유지할 기울기의 비율에 해당하는 붕괴 인자입니다.

    선언

    public var rho: Float
  • 수치 안정성을 향상시키기 위해 분모에 작은 스칼라가 추가되었습니다.

    선언

    public var epsilon: Float
  • 학습률이 감소합니다.

    선언

    public var decay: Float
  • 현재 단계.

    선언

    public var step: Int
  • 제곱 기울기의 누적되고 기하급수적으로 감소하는 평균입니다.

    선언

    public var averageSquared: Model.TangentVector
  • 누적된 매개변수가 업데이트됩니다.

    선언

    public var accumulatedDelta: Model.TangentVector
  • model 에 대한 인스턴스를 만듭니다.

    선언

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

    매개변수

    learningRate

    학습률입니다. 기본값은 1 입니다.

    rho

    붕괴 요인. 기본값은 0.95 입니다.

    epsilon

    수치 안정성을 향상시키기 위해 분모에 작은 스칼라가 추가되었습니다. 기본값은 1e-6 입니다.

    decay

    학습률이 감소합니다. 기본 값은 0 입니다.

  • 선언

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

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