손실 줄이기: 경사하강법

반복 방식 다이어그램(그림 1)에는 '매개변수 업데이트 계산'이라는 두루뭉술한 모양의 녹색 상자가 포함되어 있었습니다. 이 애매모호한 알고리즘을 좀 더 실질적인 것으로 대체해 보겠습니다.

\(w_1\)의 가능한 모든 값에 대해 손실을 계산할 시간과 컴퓨팅 자료가 있다고 가정합니다. 지금까지 살펴본 것과 같은 회귀 문제에서 손실과 \(w_1\)을 대응한 도표는 항상 볼록 함수 모양을 할 것입니다. 즉, 도표가 다음과 같이 항상 그릇 모양으로 나타납니다.

U자형 곡선 위의 두 번째 지점입니다. 이 지점은 최소값에 조금 더 가깝습니다.

그림 2. 회귀 문제에서는 볼록 함수 모양의 손실 대 가중치 도표가 산출됩니다.

 

볼록 문제에는 기울기가 정확하게 0인 지점인 최소값이 하나만 존재합니다. 이 최소값에서 손실 함수가 수렴합니다.

전체 데이터 세트에 대해 상상할 수 있는 모든 \(w_1\) 값의 손실 함수를 계산하는 것은 수렴 지점을 찾는 데 비효율적인 방법입니다. 머신러닝에서 널리 사용하는 더 나은 방법인 경사하강법을 살펴보겠습니다.

경사하강법의 첫 번째 단계는 \(w_1\)에 대한 시작 값(시작점)을 선택하는 것입니다. 시작점은 별로 중요하지 않습니다. 따라서 많은 알고리즘에서는 \(w_1\)을 0으로 설정하거나 임의의 값을 선택합니다. 다음 그림에서는 0보다 조금 큰 시작점을 지정했습니다.

U자형 곡선 위의 두 번째 지점입니다. 이 지점은 최소값에 조금 더 가깝습니다.

그림 3. 경사하강법의 시작점

그런 다음 경사하강법 알고리즘은 시작점에서 손실 곡선의 기울기를 계산합니다. 간단히 설명하자면 기울기는 편미분의 벡터로서, 어느 방향이 '더 정확한지' 혹은 '더 부정확한지' 알려줍니다. 그림 3에 나온 것과 같이 단일 가중치에 대한 손실의 기울기는 미분 값과 같습니다.

기울기는 벡터이므로 다음 두 가지 특성을 모두 가지고 있습니다.

  • 방향
  • 크기

기울기는 항상 손실 함수 값이 가장 크게 증가하는 방향을 향합니다. 경사하강법 알고리즘은 가능한 한 빨리 손실을 줄이기 위해 기울기의 반대 방향으로 이동합니다.

U자형 곡선 위의 두 번째 지점입니다. 이 지점은 최소값에 조금 더 가깝습니다.

그림 4. 경사하강법은 음의 기울기를 사용합니다.

손실 함수 곡선의 다음 지점을 결정하기 위해 경사하강법 알고리즘은 다음과 같이 기울기의 크기의 일부를 시작점에 더합니다.

U자형 곡선 위의 두 번째 지점입니다. 이 지점은 최소값에 조금 더 가깝습니다.

그림 5. 기울기 보폭을 통해 손실 곡선의 다음 지점으로 이동합니다.

그런 다음 경사하강법은 이 과정을 반복해 최소값에 점점 접근합니다.