public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
SGD(확률적 경사하강법) 최적화 프로그램입니다.
운동량, 학습률 감소 및 Nesterov 운동량을 지원하는 확률적 경사하강법 알고리즘을 구현합니다. 모멘텀 및 네스테로프 모멘텀(일명 네스테로프 가속 경사 방법)은 경사하강법의 훈련 속도와 수렴 속도를 향상시킬 수 있는 1차 최적화 방법입니다.
참고자료:
- “확률적 근사 방법” (Robbins and Monro, 1951)
- “로빈스와 먼로의 확률적 근사 방법에 대하여” (Wolfowitz, 1952)
- “회귀 함수의 최대값에 대한 확률론적 추정” (Kiefer and Wolfowitz, 1952)
- “반복법의 수렴 속도를 높이는 몇 가지 방법” (Polyak, 1964)
- "수렴 속도에 따른 제약 없는 볼록 최소화 문제에 대한 방법" (Nesterov, 1983)
선언
public typealias Model = Model
학습률입니다.
선언
public var learningRate: Float
모멘텀 요인. 이는 관련 방향으로 확률적 경사 하강을 가속화하고 진동을 완화합니다.
선언
public var momentum: Float
학습률이 감소합니다.
선언
public var decay: Float
사실이라면 Nesterov 추진력을 사용하십시오.
선언
public var nesterov: Bool
모델의 속도 상태입니다.
선언
public var velocity: Model.TangentVector
수행된 단계 집합입니다.
선언
public var step: Int
model
에 대한 인스턴스를 만듭니다.선언
public init( for model: __shared Model, learningRate: Float = 0.01, momentum: Float = 0, decay: Float = 0, nesterov: Bool = false )
매개변수
learningRate
학습률입니다. 기본값은
0.01
입니다.momentum
해당 방향으로 확률적 경사하강법을 가속화하고 진동을 완화시키는 운동량 인자입니다. 기본값은
0
입니다.decay
학습률이 감소합니다. 기본값은
0
입니다.nesterov
true
인 경우 Nesterov 추진력을 사용합니다. 기본값은true
입니다.선언
public required init(copying other: SGD, to device: Device)