SWDesk/ArtificialIntelligence
확률적 경사 하강법(SGD) 함수 사용법
bizmaker
2024. 11. 25. 08:30
텐서플로우/케라스에서 제공하는 최적화 함수인 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)

반응형