다음을 통해 공유


maOptimizer: 최적화 알고리즘

신경망에 대한 최적화 알고리즘을 지정합니다.

사용

  adaDeltaSgd(decay = 0.95, conditioningConst = 1e-06)

  sgd(learningRate = 0.001, momentum = 0, nag = FALSE, weightDecay = 0,
    lRateRedRatio = 1, lRateRedFreq = 100, lRateRedErrorRatio = 0)

인수

decay

ADADELTA 적응 최적화 알고리즘에서 단계를 계산할 때 경사에 적용되는 감쇠율을 지정합니다. 이 비율은 단계 크기 계산에서 원격 경사에 더 작은 가중치를 제공하여 학습 속도가 계속 진행되도록 하는 데 사용됩니다. 수학적으로 경사의 평균 제곱을 업데이트 규칙의 분모에 있는 제곱 경사의 기하급수적으로 감쇠하는 평균으로 바꿉니다. 할당된 값은 범위(0,1)에 있어야 합니다.

conditioningConst

제곱 경사의 기하급수적으로 감쇠하는 평균이 작은 지역의 단계 크기를 조건화하는 데 사용되는 ADADELTA 적응 최적화 알고리즘의 조건화 상수를 지정합니다. 할당된 값은 범위(0,1)에 있어야 합니다.

learningRate

학습 프로세스의 각 반복에서 음수 경사 방향으로 수행되는 단계의 크기를 결정합니다. 기본값은 = 0.001입니다.

momentum

학습 중에 다음 단계의 크기에 맞게 이전 단계의 기여도를 제어하는 각 차원의 가중치를 지정합니다. 이렇게 하면 학습 속도를 높이도록 learningRate가 수정됩니다. 값은 >= 0< 1이어야 합니다.

nag

TRUE이면 Nesterov의 가속 경사 하강이 사용됩니다. 이 메서드는 경사 하강의 오라클 복잡성을 줄이고 평활 곡선 최적화에 적합합니다.

weightDecay

단계 크기의 스케일링 가중치를 지정합니다. 각 가중치 업데이트 후 네트워크의 가중치는 (1 - ``learningRate * weightDecay)에 의해 스케일링됩니다. 값은 >= 0< 1이어야 합니다.

lRateRedRatio

학습 중에 학습 속도가 감소하는 비율인 학습 속도 감소 비율을 지정합니다. 학습 속도를 줄이면 국소 최소값을 방지할 수 있습니다. 값은 > 0<= 1이어야 합니다.

  • 1.0 값은 감소가 없음을 의미합니다.
  • 0.9 값은 학습 속도가 현재 값인 90으로 감소함을 의미합니다.
    감소는 주기적으로 트리거되거나, 고정된 반복 횟수 후에 발생하도록 트리거되거나, 손실 함수의 증가 또는 감소와 관련된 특정 오류 조건이 충족되는 경우 감소가 트리거될 수 있습니다.
  • 주기적 속도 감소를 트리거하려면 lRateRedFreq 인수를 사용하여 감소 간 반복 횟수를 설정하여 빈도를 지정합니다.
  • 오류 조건에 따라 속도 감소를 트리거하려면 lRateRedErrorRatio에서 숫자를 지정합니다.

lRateRedFreq

감소 간 반복 횟수를 지정하여 학습 속도 감소 빈도를 설정합니다. 예를 들어, 10이 지정된 경우 학습 속도는 10회 반복마다 한 번씩 감소합니다.

lRateRedErrorRatio

학습 속도 감소 오류 조건을 지정합니다. 0으로 설정하면 반복 간에 손실이 증가하는 경우 학습 속도가 감소합니다. 0보다 큰 소수 자릿수 값으로 설정하면 손실이 이전 값의 소수 자릿수보다 작은 값으로 감소하는 경우 학습 속도가 감소합니다.

세부 정보

이러한 함수는 rxNeuralNet에서 optimizer 인수에 사용할 수 있습니다.

sgd 함수는 확률적 경사 하강을 지정합니다. maOptimizer

adaDeltaSgd 함수는 Matthew D.Zeiler의 2012년 논문 “ADADELTA: 적응 학습 속도 방법”에 설명된 AdaDelta 경사 하강을 지정합니다.

최적화 알고리즘의 사양을 포함하는 문자열입니다.

작성자

Microsoft Corporation Microsoft Technical Support

참조

ADADELTA: An Adaptive Learning Rate Method

추가 정보

rxNeuralNet,


 myIris = iris
 myIris$Setosa <- iris$Species == "setosa"

 res1 <- rxNeuralNet(formula = Setosa~Sepal.Length + Sepal.Width + Petal.Width,
         data = myIris, 
         optimizer = sgd(learningRate = .002))

 res2 <- rxNeuralNet(formula = Setosa~Sepal.Length + Sepal.Width + Petal.Width,
         data = myIris, 
         optimizer = adaDeltaSgd(decay = .9, conditioningConst = 1e-05))