อดากราด

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 func update(_ model: inout Model, along direction: Model.TangentVector)
  • คำประกาศ

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