एडाग्रैड

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

एक AdaGrad अनुकूलक.

AdaGrad (अनुकूली ग्रेडिएंट) अनुकूलन एल्गोरिदम लागू करता है। AdaGrad में पैरामीटर-विशिष्ट सीखने की दरें हैं, जिन्हें प्रशिक्षण के दौरान कितनी बार पैरामीटर अपडेट किया जाता है, इसके सापेक्ष अनुकूलित किया जाता है। जो पैरामीटर अधिक अपडेट प्राप्त करते हैं उनमें सीखने की दर कम होती है।

AdaGrad व्यक्तिगत रूप से सभी मॉडल मापदंडों की सीखने की दरों को ग्रेडिएंट मानदंडों के वर्गों के चल रहे योग के वर्गमूल के विपरीत आनुपातिक रूप से स्केल करके अनुकूलित करता है।

संदर्भ: "ऑनलाइन लर्निंग और स्टोचैस्टिक ऑप्टिमाइज़ेशन के लिए अनुकूली सबग्रेडिएंट तरीके" (डुची एट अल, 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)