AdaGrad

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

Trình tối ưu hóa AdaGrad.

Triển khai thuật toán tối ưu hóa AdaGrad (độ dốc thích ứng). AdaGrad có tốc độ học theo tham số cụ thể, được điều chỉnh tương ứng với tần suất cập nhật tham số trong quá trình đào tạo. Các tham số nhận được nhiều cập nhật hơn có tỷ lệ học tập nhỏ hơn.

AdaGrad điều chỉnh riêng tốc độ học của tất cả các tham số mô hình bằng cách chia tỷ lệ chúng tỷ lệ nghịch với căn bậc hai của tổng bình phương của định mức độ dốc.

Tham khảo: “Các phương pháp phân cấp thích ứng cho việc học trực tuyến và tối ưu hóa ngẫu nhiên” (Duchi et al, 2011)

  • Tuyên ngôn

    public typealias Model = Model
  • Tỷ lệ học tập.

    Tuyên ngôn

    public var learningRate: Float
  • Một đại lượng vô hướng nhỏ được thêm vào mẫu số để cải thiện độ ổn định về số.

    Tuyên ngôn

    public var epsilon: Float
  • Tổng bình phương của các chỉ tiêu độ dốc.

    Tuyên ngôn

    public var accumulator: Model.TangentVector
  • Tạo một phiên bản cho model .

    Tuyên ngôn

    public init(
      for model: __shared Model,
      learningRate: Float = 1e-3,
      initialAccumulatorValue: Float = 0.1,
      epsilon: Float = 1e-8
    )

    Thông số

    learningRate

    Tỷ lệ học tập. Giá trị mặc định là 1e-3 .

    initialAccumulatorValue

    Giá trị bắt đầu cho tổng bình phương của định mức gradient. Giá trị mặc định là 0.1 .

    epsilon

    Một đại lượng vô hướng nhỏ được thêm vào mẫu số để cải thiện độ ổn định về số. Giá trị mặc định là 1e-8 .

  • Tuyên ngôn

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Tuyên ngôn

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