확률적 경사 하강법(SGD)이 머신러닝 모델을 최적화하는 방식을 알아보세요. SGD Ultralytics 어떻게 SGD 더 빠르고 효율적인 AI 훈련을 SGD 확인해 보세요.
확률적 경사 하강법(SGD)은 기계 학습에서 모델을 효율적으로 훈련시키는 데 널리 사용되는 강력한 최적화 알고리즘으로, 특히 대규모 데이터셋을 다룰 때 SGD 핵심은 표준 경사 하강법의 SGD 모델 매개변수를 더 자주 업데이트하여 학습 과정을 가속화하도록 설계되었습니다. 기존 배치 경사 하강법이 단일 업데이트 전에 전체 데이터셋에 대한 오류를 계산하는 방식과 달리, SGD 한 번에 무작위로 선택된 단일 훈련 예제만을 사용하여 모델의 가중치를 업데이트합니다. 이러한 "확률적" 또는 무작위적 SGD 최적화 경로에 노이즈를 도입하여 모델이 수렴 실패를 피하는 데 도움을 줄 수 있습니다. 하강법과 달리,SGD 한 번에 무작위로 선택된 단일 훈련 예시만을 사용하여 모델의 가중치를SGD . 이러한 "확률적" 또는 무작위적 특성은 최적화 경로에 노이즈를 도입하여, 모든 데이터를 한 번에 처리하는 것이 계산적으로 불가능한 대규모 데이터셋에서 모델이 차선책 해법을 벗어나 더 빠르게 수렴하도록 돕습니다.
모든 학습 과정의 주요 목표는 모델의 예측값과 실제 목표값 간의 차이를 정량화하는 손실 함수를 최소화하는 것이다. SGD 반복적인 사이클을 통해 이를 SGD . 먼저 알고리즘은 훈련 데이터에서 무작위 데이터 포인트를 선택합니다. 그런 다음 예측을 생성하기 위해 전방 전달을 수행하고 오류를 계산합니다. 역전파를 사용하여 알고리즘은 해당 단일 예시를 기반으로 기울기(본질적으로 오류 지형의 기울기)를 계산합니다. 마지막으로 오류를 줄이기 위해 기울기의 반대 방향으로 모델 가중치를 업데이트합니다.
이 과정은 모델 성능이 안정화될 때까지 여러 번 반복되며, 종종 에포크 단위로 그룹화됩니다. 이러한 업데이트의 규모는 학습률이라는 하이퍼파라미터로 제어됩니다. 각 단계가 단일 샘플에 기반하기 때문에, 최소값으로 향하는 경로는 배치 기울기 하강법의 부드러운 궤적에 비해 종종 지그재그 형태이거나 잡음이 발생합니다. 그러나 이 노이즈는 딥 러닝에서 종종 유리하게 작용합니다. 모델이 국소적 최소점에 갇히는 것을 방지하여 더 나은 전역적 해법을 도출할 가능성이 있기 때문입니다.
SGD 최적화 알고리즘 간의 차이점을 이해하는 것은 적절한 훈련 전략을 선택하는 데 매우 중요합니다.
SGD 그 변형들은 오늘날 사용되는 많은 혁신적인 AI 기술의 핵심 동력입니다.
다음과 같은 고급 라이브러리는 ultralytics 내부적으로 처리하는 동안 최적화
train() 명령어를 통해, SGD 하위 수준에서 어떻게 초기화되고 사용되는지 확인할 수 있습니다.
PyTorch 워크플로우. 이 코드 조각은 tensor 대한 간단한 SGD 정의하는 방법을 보여줍니다.
import torch
import torch.nn as nn
import torch.optim as optim
# Define a simple linear model
model = nn.Linear(10, 1)
# Initialize Stochastic Gradient Descent (SGD) optimizer
# 'lr' is the learning rate, and 'momentum' helps accelerate gradients in the right direction
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
# Create a dummy input and target
data = torch.randn(1, 10)
target = torch.randn(1, 1)
# Forward pass
output = model(data)
loss = nn.MSELoss()(output, target)
# Backward pass and optimization step
optimizer.zero_grad() # Clear previous gradients
loss.backward() # Calculate gradients
optimizer.step() # Update model parameters
print("Model parameters updated using SGD.")
SGD 널리 사용되지만 여러 문제점을 SGD . 주요 문제는 기울기 단계의 잡음으로, 이로 인해 손실값이 부드럽게 수렴하기보다 크게 요동칠 수 있습니다. 이를 완화하기 위해 실무자들은 종종 모멘텀 기법을 사용합니다. 이는 SGD 관련 SGD 가속되도록 돕고 진동을 완화하는 기술로, 언덕을 굴러 내려가는 무거운 공과 유사합니다. 또한 적절한 학습률 설정은 매우 중요합니다. 너무 높으면 모델이 최소값을 지나쳐 버릴 수 있으며(경사 폭발), 너무 낮으면 훈련 속도가 극도로 느려집니다. Ultralytics 같은 도구는 하이퍼파라미터 튜닝을 관리하고 훈련 지표에 대한 시각화를 제공함으로써 이 과정을 자동화합니다. Adam 같은 발전은 본질적으로 학습률 조정을 자동화하여 SGD 고유한 어려움 일부를 해결합니다.