티스토리 뷰

텐서플로우/케라스에서 제공하는 최적화 함수인 SGD(Stocastic Gradient Descent, 확률적 경사 하강법)의 입력 파라미터와 출력 파라미터의 종류 및 특징에 대해 알아보고자 한다.

 

[입력 파라미터]

 

  • learning_rate (기본값: 0.01)
    • 학습률
    • 모델이 얼마나 빠르게 또는 느리게 최적화할지를 결정함.
    • 일반적으로 0.001 ~ 0.1 범위의 값을 사용하며, 학습 속도와 정확도에 중요한 영향을 미침.
  • momentum (기본값: 0.0)
    • 모멘텀 값으로, 이전 단계의 그래디언트를 일정 비율로 누적하여 최적화 방향을 부드럽게 만듦.
    • 학습의 진동을 줄이고 더 빠른 수렴에 기여함.
    • 0 ~ 1 범위의 값을 설정하며, 일반적으로 0.9가 자주 사용됨.
  • nesterov (기본값: False)
    • Nesterov 모멘텀을 활성화할지 결정함.
    • Nesterov 모멘텀은 일반 모멘텀보다 더 빠르게 최적화 방향을 예측하여 학습을 가속화함.
  • weight_decay (기본값: None)
    • L2 정규화를 적용하여 가중치의 크기를 감소시키는 데 사용됨.
    • 과적합(overfitting)을 방지하는 데 기여함.
  • clipnorm (기본값: None)
    • 그래디언트 벡터의 크기를 지정된 값으로 클리핑
    • 그래디언트 폭발 문제를 방지하는 데 사용됨.
  • clipvalue (기본값: None)
    • 그래디언트 값의 절대값을 특정 범위 내로 제한함.
  • name (기본값: "SGD")
    • 최적화 함수의 이름을 사용자 정의 이름으로 설정할 수 있음.

 

[출력 파마미터]

  • Optimizer 객체
    • tf.keras.optimizers.SGD는 Optimizer 클래스의 객체를 반환합니다.
    • 이 객체는 모델 학습 과정에서 손실 함수의 그래디언트를 계산하고, 가중치와 편향 값을 업데이트하는 데 사용됩니다.

[예시 코드]

from tensorflow.keras.optimizers import SGD

# SGD Optimizer 설정
optimizer = SGD(
    learning_rate=0.01,  # 학습률
    momentum=0.9,        # 모멘텀
    nesterov=True        # Nesterov 모멘텀 사용
)

print(optimizer)

 

 

https://spotintelligence.com/2024/03/05/stochastic-gradient-descent-sgd-machine-learning/

 

반응형