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 tập theo tham số cụ thể, được điều chỉnh tương ứng với tần suất cập nhật các 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 required init(copying other: AdaGrad, to device: Device)