brunch

You can make anything
by writing

C.S.Lewis

by 코딩하는 수학쌤 Aug 30. 2021

32. 선형 회귀 분석과 손실 함수-3 (경사하강법)

[4악장 - Cadenza] 머신러닝의 알고리즘과 수학

경사 하강법(Gradient Descent)이란?

 앞의 글에서 살펴봤던 예시에서는 손실 함수로 이차함수가 생성되었기 때문에 수학 시간에 배웠던 꼭짓점의 위치를 계산하여 최소가 되는 지점을 바로 알 수 있습니다. 그러나 손실 함수가 항상 이차함수가 나오거나 절댓값을 포함한 일차식으로 나오지는 않습니다. 이보다 훨씬 복잡한 형태의 함수가 나오는 경우에도 적용 가능한 일반적인 방법이 필요합니다.


 이 경우에 함수의 증가와 감소와 미분의 관계를 활용합니다. 만약 함수의 접선의 기울기의 값이 양수인지 음수인지 알 수 있다고 해봅시다. 만약 x=a에서의 접선의 기울기가 양수라면 그 시점에서는 증가하고 있는 상태입니다. 따라서 최솟값은 a보다 작은 쪽인 왼쪽에 존재할 것입니다. 반대로 x=a에서 접선의 기울기가 음수라고 해보죠. 그러면 함수는 감소하고 있는 중입니다. 즉 최솟값은 a보다 큰 쪽에 위치한다는 것을 의미합니다. 

 따라서 접선의 기울기의 부호와 크기에 따라 (엄밀하게는 접선 벡터를 살펴봅니다) 최솟값을 가지는 위치를 찾아가는 방법이 바로 경사 하강법입니다. 




경사 하강법과 평균 절대 오차(MAE), 평균 제곱 오차 (MSE)

 접선의 기울기의 부호를 활용해서 최솟값이 왼쪽인지 오른쪽인지는 파악했다고 가정해봅시다. 그런데 최솟값에 갈수록 접선의 기울기는 점점 0에 가까워지게 됩니다. 즉 접선이 많이 기울어져 있을 때는 최솟값을 가지는 지점과 거리가 멀다고 생각해서 많이 이동하고, 접선의 기울기가 0에 가까울 때는 조금씩 이동하도록 설계된 방법이 경사 하강법입니다.

 

 경사 하강법은 접선의 기울기를 살펴본다고 했습니다. 그러면 어떤 함수의 접선을 살펴보는 것일까요? 바로 손실 함수의 그래프의 접선의 기울기입니다. 따라서 손실 함수에 따라 접선의 모양은 달라질 수밖에 없습니다. 


 우리는 지난 글에서 단순 회귀 분석의 평균 절대 오차와 평균 제곱 오차를 살펴봤습니다. 두 손실 함수의 그래프는 모양이 다릅니다. 평균 절대 오차는 일차식에 절댓값 기호를 씌운 항들의 합으로 표현이 되고, 평균 제곱 오차는 식을 정리하면 이차 곡선이 나오게 되죠. 두 손실 함수는 그래프의 모양이 각각 달라집니다.



경사 하강법을 평균 절대 오차에 적용을 시켜볼까요? 기울기의 부호는 알 수 있는데 평균 절대 오차에서는 접선의 기울기가 연속적으로 줄어들지 않습니다. 계속해서 같은 기울기를 지나다가 어느 순간 확 꺾이니 최솟값을 가진 지점으로의 점진적인 접근이 어렵습니다.


 반면 평균 제곱 오차의 경우 오차가 2차 함수와 같은 형태를 이루기 때문에 접선의 기울기가 점차적으로 변하는 것을 볼 수 있습니다. 따라서 두 모델 중 어느 모델이 더 나은 모델인지를 파악할 때는 평균 절대 오차와 평균 제곱 오차 둘 다 유용하겠지만 경사 하강법을 활용하는 데 있어서는 평균 제곱 오차가 훨씬 유리합니다.




얼마의 속도로 최솟값에 다가갈까? = 학습률


 최솟값의 위치에 어느 속도로 다가가야 할까요? 그 속도는 상황에 따라 다를 수 있습니다. 앞에서와 마찬가지로 목적지를 찾아가야 한다고 가정해보겠습니다. 아주 조심스럽게 목적지를 찾을 수도 있고 빠른 속도로 확확 지나갈 수도 있습니다. 접선이 기울이진 정도에 얼마의 크기로 비례하여 속도를 내는지를 결정짓는 값이 ‘학습률’입니다.



최적화 과정의 예시 (인공지능 수학 교과서 - 씨마스)

 수학 전공 중에서 수치해석이라는 과목이 있습니다. 이 과목에서 방정식의 근을 추정하거나 적분값 등을 찾는 방법에서 iteration(반복 처리)이라는 방법을 사용합니다. 한 번에 정한 답을 구할 수 없으니 임의의 초깃값(initial value)을 선택한 후 같은 방법을 반복해서 찾아가는 방법입니다. 마치 점화식을 이용해 수렴하는 수열의 극한을 구하는 방법과 비슷합니다. 하나의 값을 통해 다음 항을 구하고, 다시 그 항을 이용해 다음 항을 구하고.. 그래서 항들 사이의 차이가 거의 없다면 극한값을 찾았다는 것을 의미합니다.



학습률에 따른 최적화 진행 (인공지능 수학 교과서 -씨마스)

 최적화 과정도 이와 비슷합니다. 다만 학습률을 설정하여 어느 속도로 최적화 과정을 진행하는가를 결정해야 합니다. 학습률의 크기를 적절하게 조절하면 미분계수의 크기에 관계없이 손실 함수의 값이 변하는 정도를 조절할 수 있습니다. 하지만 머신러닝에서 데이터를 학습할 때 적절한 학습률을 찾기란 어려운 일입니다. 따라서 학습률의 값들을 적절하게 테스트를 해보며 최적화가 잘 일어나는지 점검합니다. 실제 머신러닝에서 학습률은 0.001, 0.0001과 같이 작은 수를 활용해보고 손실 함수의 값이 증가하면 1/2로 줄여가고, 너무 작은 크기로 감소한다면 2배로 키워가는 식으로 학습률을 조정합니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari