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.
Tài liệu tham khảo:
- “Phương pháp xấp xỉ ngẫu nhiên” (Robbins và Monro, 1951)
- “Về phương pháp xấp xỉ ngẫu nhiên của Robbins và Monro” (Wolfowitz, 1952)
- “Ước tính ngẫu nhiên mức tối đa của hàm hồi quy” (Kiefer và Wolfowitz, 1952)
- “Một số phương pháp tăng tốc độ hội tụ của phương pháp lặp” (Polyak, 1964)
- “Một phương pháp tối thiểu hóa lồi không ràng buộc với tốc độ hội tụ” (Nesterov, 1983)
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 required init(copying other: SGD, to device: Device)