SGD

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

Trình tối ưu hóa giảm độ dốc ngẫu nhiên (SGD).

Triển khai thuật toán giảm độ dốc ngẫu nhiên với sự hỗ trợ cho động lượng, giảm tốc độ học tập và động lượng Nesterov. Động lượng và động lượng Nesterov (hay còn gọi là phương pháp tăng tốc độ dốc của Nesterov) là các phương pháp tối ưu hóa bậc nhất có thể cải thiện tốc độ huấn luyện và tốc độ hội tụ của quá trình giảm độ dốc.

Người giới thiệu:

  • Tuyên ngôn

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

    Tuyên ngôn

    public var learningRate: Float
  • Yếu tố động lượng. Nó tăng tốc độ dốc giảm dần ngẫu nhiên theo hướng thích hợp và làm giảm dao động.

    Tuyên ngôn

    public var momentum: Float
  • Tỷ lệ học tập suy giảm.

    Tuyên ngôn

    public var decay: Float
  • Sử dụng đà Nesterov nếu đúng.

    Tuyên ngôn

    public var nesterov: Bool
  • Trạng thái vận tốc của mô hình.

    Tuyên ngôn

    public var velocity: Model.TangentVector
  • Tập hợp các bước được thực hiện.

    Tuyên ngôn

    public var step: Int
  • Tạo một phiên bản cho model .

    Tuyên ngôn

    public init(
      for model: __shared Model,
      learningRate: Float = 0.01,
      momentum: Float = 0,
      decay: Float = 0,
      nesterov: Bool = false
    )

    Thông số

    learningRate

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

    momentum

    Hệ số động lượng làm tăng tốc độ giảm dần độ dốc ngẫu nhiên theo hướng thích hợp và làm giảm dao động. Giá trị mặc định là 0 .

    decay

    Tỷ lệ học tập suy giảm. Giá trị mặc định là 0 .

    nesterov

    Sử dụng đà Nesterov nếu true . Giá trị mặc định là true .

  • Tuyên ngôn

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

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