public class AdaGrad<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
เครื่องมือเพิ่มประสิทธิภาพ AdaGrad
ใช้อัลกอริธึมการปรับให้เหมาะสมของ AdaGrad (การไล่ระดับสีแบบปรับได้) AdaGrad มีอัตราการเรียนรู้เฉพาะพารามิเตอร์ ซึ่งได้รับการปรับให้สัมพันธ์กับความถี่ที่พารามิเตอร์ได้รับการอัปเดตระหว่างการฝึก พารามิเตอร์ที่ได้รับการอัพเดตมากขึ้นจะมีอัตราการเรียนรู้ที่น้อยลง
AdaGrad จะปรับอัตราการเรียนรู้ของพารามิเตอร์โมเดลทั้งหมดเป็นรายบุคคล โดยปรับขนาดให้เป็นสัดส่วนผกผันกับรากที่สองของผลรวมกำลังสองของบรรทัดฐานการไล่ระดับสี
การอ้างอิง: “วิธีการปรับย่อยแบบปรับเปลี่ยนได้สำหรับการเรียนรู้ออนไลน์และการเพิ่มประสิทธิภาพสุ่ม” (Duchi et al, 2011)
คำประกาศ
public typealias Model = Model
อัตราการเรียนรู้
คำประกาศ
public var learningRate: Float
สเกลาร์ขนาดเล็กถูกเพิ่มเข้าไปในตัวส่วนเพื่อปรับปรุงความเสถียรของตัวเลข
คำประกาศ
public var epsilon: Float
ผลรวมกำลังสองของบรรทัดฐานการไล่ระดับสี
คำประกาศ
public var accumulator: Model.TangentVector
สร้างอินสแตนซ์สำหรับ
model
คำประกาศ
public init( for model: __shared Model, learningRate: Float = 1e-3, initialAccumulatorValue: Float = 0.1, epsilon: Float = 1e-8 )
พารามิเตอร์
learningRate
อัตราการเรียนรู้ ค่าเริ่มต้นคือ
1e-3
initialAccumulatorValue
ค่าเริ่มต้นสำหรับผลรวมรันของกำลังสองของบรรทัดฐานการไล่ระดับสี ค่าเริ่มต้นคือ
0.1
epsilon
สเกลาร์ขนาดเล็กถูกเพิ่มเข้าไปในตัวส่วนเพื่อปรับปรุงความเสถียรของตัวเลข ค่าเริ่มต้นคือ
1e-8
คำประกาศ
public required init(copying other: AdaGrad, to device: Device)