Optimization

머신러닝 학습 과정의 목적은 손실함수를 최소화하는 모델 함수의 파라미터를 찾는 것이다. Model Parameter 값에 대한 손실 함수 값의 변화를 나타낸 공간을 Parameter Space 라고 한다.

image.png

Parameter Space 의 개형은 모델 함수, 손실 함수, 데이터에 따라 변한다.

image.png

왼쪽은 데이터와 모델 함수를, 오른쪽은 parameter space 를 등고선 형태로 나타낸 것이다. 안쪽 등고선일수록 높이가 낮은 곳으로, 최적화의 목표 지점이 된다.

image.png

위와 같이 데이터를 더 잘 설명하는 모델 함수를 찾을수록 손실 함수 값이 줄어드는 것을 알 수 있다. 그렇다면 이 모델 함수를 찾기 위해서 어떻게 해야할까?

Gradient Descent

경사하강법은 지도학습에서 범용적으로 사용 가능한 학습 기법이다. 머신러닝의 목적함수를 최적화하기 위해 우리는 수학적으로 복잡한 식을 해결해야 하는데, 이는 손으로 푸는 것이 굉장히 어렵다. 경사 하강법은 이 때 아주 좋은 해결책이 된다.

image.png

어떤 함수가 최소가 되는 지점을 찾을 때, 우리는 함수의 미분값이 0이 되는 지점들을 추려 후보군으로 설정하고, 그 중 최솟값이 되는 지점을 찾는다. Optimization 의 목적은 손실함수를 최소화 하는 것이기 때문에, 경사하강법도 마찬가지로 함수의 Gradient 가 0이 되는 지점을 찾는다.

함수의 전체 개형을 모르는 상태에서, 함수의 미분값을 따라가며 관찰하는게 경사 하강법의 기본적인 아이디어다.

함수의 어떤 지점 $\theta_0$ 에서 시작해 기울기를 측정한다. 함수의 최소값으로 가기 위해서는 함수가 감소하는 방향으로 이동해야 하고, 이 방향은 기울기의 음의 방향이다.

$$ \theta_{i+1}=\theta_i-\alpha\nabla L(\theta_i) $$

이렇게 기울기를 바탕으로 훈련하는 방식을 Gradient Based Learning 이라고 한다. 이 방식의 장점은 우리가 이동해야 할 방향이 정해져 있다는 것이다. 이 방향으로 적절히 이동하면 우리는 수렴하는 지점 즉 최적점을 이론상 무조건 찾을 수 있다. 다만 실제 실험에서 완벽한 최적점을 찾는 것은 많은 시간과 자원이 들기에, 기울기 변화가 아주 작은 지점까지 찾기도 한다.

$$ ||w_{new}-w_{old}||\le \epsilon $$

학습률

image.png