경사하강법
본문짙은 안개 속에서 산의 가장 낮은 골짜기를 찾아야 한다. 멀리 내다볼 수 없으니 발밑의 경사만 느낄 수 있다. 가장 좋은 방법은 발밑이 내려가는 쪽으로 한 걸음 옮기고, 다시 경사를 느껴 또 한 걸음 옮기는 것이다. 인공지능도 손실함수의 최솟값을 이렇게 찾는다. 한 걸음의 크기는 얼마로 해야 할까?
4.4.1기울기를 따라 내려가기
손실함수 \(L(w)\)의 그래프에서 한 점의 접선의 기울기가 양수이면 오른쪽이 오르막이므로 왼쪽으로, 음수이면 오른쪽으로 가야 내려간다. 곧 기울기의 반대 방향으로 움직이면 손실이 줄어든다. 그리고 기울기가 크면 아직 최소점에서 멀다는 뜻이므로 크게, 작으면 가깝다는 뜻이므로 작게 움직인다.
현재 매개변수 \(w\)에서 손실함수의 기울기 \(L'(w)\)를 구해 \[w_{\text{새}} = w - \eta\,L'(w)\] 로 고치는 일을 되풀이한다. \(\eta\)(에타)는 한 걸음의 크기를 정하는 수로, 학습률이라 한다.
\(L(w) = (w - 3)^2 + 1\)이면 기울기는 \(L'(w) = 2(w - 3)\)이다. \(\eta = 0.2\)이면 \(w_{\text{새}} = w - 0.4(w - 3)\)이므로, 따라서 최소점에서 떨어진 거리 \(w - 3\)이 한 걸음마다 0.6배로 줄어든다. 그림 1에서 걸음 수를 늘리면 출발점 \(-2\)에서 3으로 빠르게 다가간다.1
4.4.2학습률의 크기
일반적으로 이 손실함수에서는 거리가 한 걸음마다 \((1 - 2\eta)\)배가 된다. \(\eta\)가 0.5보다 작으면 같은 쪽에서 다가가고, 0.5이면 한 걸음에 도착하며, 0.5와 1 사이이면 골짜기를 넘나들며 다가간다. \(\eta\)가 1보다 크면 \(|1 - 2\eta| > 1\)이라 오히려 멀어진다. 그림 1에서 학습률을 1.05로 올리면 자취가 골짜기 양쪽으로 점점 크게 튄다.
이 손실함수라면 \(L'(w) = 0\)을 풀어 \(w = 3\)을 바로 얻을 수 있는데, 왜 굳이 한 걸음씩 걸을까? 실제 인공지능의 손실함수는 매개변수가 수백만 개이고 식이 복잡해서, 기울기가 0인 곳을 식으로 풀어 낼 수 없는 경우가 대부분이다. 반면 지금 서 있는 곳의 기울기를 계산하는 일은 언제나 할 수 있으므로, 컴퓨터는 이것을 수없이 되풀이하는 쪽을 택한다. 다만 산에 골짜기가 여럿 있으면 어디서 출발했느냐에 따라 가장 낮은 골짜기가 아니라 가까운 작은 웅덩이에 머물 수 있다. 그래서 여러 곳에서 출발해 보거나 걸음의 크기를 바꾸어 가며 결과를 비교한다.
4.4.3예제 풀이
\(L(w) = (w - 3)^2 + 1\)에서 \(w_0 = -2\), 학습률 \(\eta = 0.2\)로 경사하강법을 세 번 적용한 \(w_1, w_2, w_3\)을 구하여라.
\(L'(w) = 2(w - 3)\)이다. \(w_1 = -2 - 0.2 \times 2(-5) = -2 + 2 = 0\), \(w_2 = 0 - 0.2 \times 2(-3) = 1.2\), \(w_3 = 1.2 - 0.2 \times 2(-1.8) = 1.92\)이다.
즉 최소점까지의 거리는 5, 3, 1.8, 1.08로 0.6배씩 줄어든다. 손실은 26에서 10, 4.24, 2.17로 빠르게 줄어든다. 인공지능의 실제 손실함수는 매개변수가 수백만 개인 산과 같지만, 각 매개변수에 대해 기울기를 구해 반대쪽으로 조금씩 움직이는 원리는 똑같다.
아래 탐구 카드에서 안개 속 골짜기를 찾아 내려가고, 기울기와 절편을 함께 학습할 때의 길을 직접 따라가 보자.
- 손실함수의 그래프에 골짜기가 여럿이면 경사하강법은 출발점 근처의 골짜기에 머물 수 있다. 이런 점을 극솟값이라 하며, 가장 낮은 최솟값과 다를 수 있다.
경사하강법은 손실함수의 기울기 반대쪽으로 \(w \leftarrow w - \eta L'(w)\)만큼씩 움직이기를 되풀이하여 최솟값을 찾는다. 학습률 \(\eta\)가 너무 작으면 느리고, 너무 크면 발산한다. 그래서 처음 질문의 안개 낀 산에서는 발밑이 내려가는 쪽으로, 경사가 급할수록 크게, 알맞은 보폭으로 걸어 내려가면 골짜기에 닿는다.