Q. SGD를 설명해봐
A. 물론입니다. SGD는 Stochastic Gradient Descent의 약어로, 머신러닝에서 가장 기본적이고 널리 사용되는 최적화 알고리즘 중 하나입니다.
SGD는 모델이 예측한 출력값과 실제 출력값 간의 오차를 최소화하기 위해, 각각의 가중치(weight)와 편향(bias)을 업데이트하는 과정에서 사용됩니다. 이때, 전체 데이터셋을 한 번에 사용하는 것이 아니라, 데이터셋에서 무작위로 선택한 일부 샘플(batch)들을 사용하여 가중치와 편향을 조정합니다. 이러한 방식으로, 전체 데이터셋을 사용하는 것보다 계산 시간을 크게 단축시킬 수 있습니다.
SGD의 주요 단점은 local minima에 빠질 가능성이 있으며, 이를 극복하기 위한 여러 개선된 알고리즘들이 개발되어 왔습니다. 예를 들면, Momentum SGD, AdaGrad, RMSProp, Adam 등이 있습니다.
이렇게 SGD는 모델의 학습 속도를 높이고, 계산 시간을 단축시켜주는 등 다양한 장점을 가지고 있습니다. 따라서 머신러닝 엔지니어링에서 SGD는 매우 중요한 역할을 합니다.
Q. local minima가 뭐야?
A. 머신러닝에서, 모델이 최적화하려는 목적 함수가 복잡한 비선형 함수인 경우, 목적 함수의 최소값을 찾기 위해 gradient descent 기반 최적화 알고리즘을 사용합니다.
local minima는 최적화 과정에서 가장 큰 문제 중 하나로, 모델이 전체 공간에서 최소값을 찾지 못하고 목적 함수가 더 이상 감소하지 않는 지역 최소값(local minimum)에 머무르게 되는 현상입니다. 이러한 경우, 모델은 지역 최소값에 머무르면서 전역 최소값(global minimum)을 찾지 못할 수 있습니다.