อาดาเดลต้า

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

เครื่องมือเพิ่มประสิทธิภาพ AdaDelta

ใช้อัลกอริธึมการปรับให้เหมาะสมของ AdaDelta AdaDelta เป็นวิธีการสุ่มไล่ระดับตามข้อมูลลำดับแรก โดยจะปรับอัตราการเรียนรู้ตามหน้าต่างที่เคลื่อนไหวของการอัพเดตการไล่ระดับสี แทนที่จะสะสมการไล่ระดับสีที่ผ่านมาทั้งหมด ดังนั้น AdaDelta ยังคงเรียนรู้ต่อไปแม้ว่าจะมีการอัพเดตหลายครั้งก็ตาม ปรับให้เข้ากับการเปลี่ยนแปลงไดนามิกของพื้นที่ปัญหาการปรับให้เหมาะสมได้เร็วขึ้น

อ้างอิง: “ADADELTA: วิธีอัตราการเรียนรู้แบบปรับตัว” (Zeiler, 2012)

  • คำประกาศ

    public typealias Model = Model
  • อัตราการเรียนรู้

    คำประกาศ

    public var learningRate: Float
  • ปัจจัยการสลายตัว ซึ่งสอดคล้องกับเศษส่วนของการไล่ระดับสีที่ต้องคงไว้ในแต่ละขั้นตอนของเวลา

    คำประกาศ

    public var rho: Float
  • สเกลาร์ขนาดเล็กถูกเพิ่มเข้าไปในตัวส่วนเพื่อปรับปรุงความเสถียรของตัวเลข

    คำประกาศ

    public var epsilon: Float
  • อัตราการเรียนรู้ลดลง

    คำประกาศ

    public var decay: Float
  • ขั้นตอนปัจจุบัน

    คำประกาศ

    public var step: Int
  • ค่าเฉลี่ยที่สะสมและสลายตัวแบบเอกซ์โปเนนเชียลของการไล่ระดับสีกำลังสอง

    คำประกาศ

    public var averageSquared: Model.TangentVector
  • อัพเดตพารามิเตอร์สะสม

    คำประกาศ

    public var accumulatedDelta: Model.TangentVector
  • สร้างอินสแตนซ์สำหรับ model

    คำประกาศ

    public init(
      for model: __shared Model,
      learningRate: Float = 1,
      rho: Float = 0.95,
      epsilon: Float = 1e-6,
      decay: Float = 0
    )

    พารามิเตอร์

    learningRate

    อัตราการเรียนรู้ ค่าเริ่มต้นคือ 1

    rho

    ปัจจัยการสลายตัว ค่าเริ่มต้นคือ 0.95

    epsilon

    สเกลาร์ขนาดเล็กถูกเพิ่มเข้าไปในตัวส่วนเพื่อปรับปรุงความเสถียรของตัวเลข ค่าเริ่มต้นคือ 1e-6

    decay

    อัตราการเรียนรู้ลดลง ค่าเริ่มต้นคือ 0

  • คำประกาศ

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • คำประกาศ

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