AI바라기의 인공지능
최적화 문제와 경사 하강법이란? 본문
최적화란?
딥러닝에서 최적화는 모델의 학습을 통해 가중치(weight)와 편향(bias)을 조정하여 손실(loss) 함수를 최소화하는 과정을 말합니다. 이를 위해서는 최적화 알고리즘이 필요합니다.
즉 입력값을 통해서 예측값이 도출 되는데 이 예측값과 실제값의 차이를 줄이기 위한 방법입니다.
대표적인 최적화 알고리즘으로는 경사 하강법(Gradient Descent)이 있습니다.
경사 하강법은 손실 함수의 기울기(gradient) 방향으로 가중치와 편향을 업데이트하는 방법입니다. 이 때, 학습률(learning rate)이 중요한데, 학습률이 크면 수렴 속도는 빨라지지만, overshooting이 발생할 수 있으며, 학습률이 작으면 수렴 속도는 느려지지만, overshooting을 방지할 수 있습니다.
경사 하강법에는 크게 다음과 같은 종류가 있습니다.
- 배치 경사 하강법 (Batch Gradient Descent)
- 전체 데이터셋을 한 번에 사용하여 기울기를 계산하고, 모든 파라미터를 한 번에 업데이트하는 방법입니다.
- 전체 데이터셋을 한 번에 사용하므로 수행 속도가 느리고, 대규모 데이터셋에서는 메모리 문제가 발생할 수 있습니다.
2. 확률적 경사 하강법 (Stochastic Gradient Descent)
- 각 데이터 포인트를 하나씩 사용하여 기울기를 계산하고, 파라미터를 업데이트하는 방법입니다.
- 전체 데이터셋을 사용하는 것보다 수행 속도가 빠르고 메모리 문제가 없지만, 기울기 계산이 노이즈가 많아 파라미터 값이 수렴하기까지 불안정할 수 있습니다.
3. 미니 배치 경사 하강법 (Mini-batch Gradient Descent)
- 전체 데이터셋을 작은 미니 배치(mini-batch)로 나누어서 각 미니 배치를 사용하여 기울기를 계산하고, 파라미터를 업데이트하는 방법입니다.
- 배치 경사 하강법과 확률적 경사 하강법의 중간쯤에 위치하며, 수행 속도와 파라미터 수렴 속도를 균형있게 조절할 수 있습니다.
이 외에도 옵티마이저에 따라서 여러가지 방법이 존재합니다.
확률적 경사 하강법은 SGD입니다. 속도 차이를 보시면 일반적인 경사하강법 보다는 빠르지만 다른 옵티마이저에 비해서 느린 것을 확인 할 수 있습니다.
다음 글은 여러가지 옵티마이저에 대해서 알아보겠습니다.