경사하강법(gradient descent) 정리
경사하강법이란 간단히 말하면 함수의 기울기를 이용하여 함수의 최솟값을 찾는 방법이다.
경사하강법은 반복적으로 수행하며 정해진 반복 횟수를 다 했거나 더 이상 값을 최소화하지 못한다고 판정되면 반복을 멈춘다.
위 예시와 같이 경사하강법은 정해진 수식을 반복하여 함수의 최솟값을 찾는다.
기본적인 경사하강법의 수식
이 수식 전체를 설명하자면 최솟값을 찾고 싶은 함수 f를 x에 대해 미분하여 현재 x 좌표의 기울기를 구한 후 lr 곱하고 구한 값을 현 x 좌표에 빼주는 식이다.
이 말이 이상하게 들릴 수도 있지만 아래의 설명을 듣고 다시 와서 스스로 이 식이 어떻게 작동하는지 이해했으면 좋겠다.
수식 분해 및 해석
위 설명에서 기울기와 lr를 곱한 값을 뺀다.
왜 빼냐 하면
기울기 값을 보면 알 수 있다 우리는 경사면을 타고 내려가듯이 함수값을 최소화 해야한다 하지만 우리가 구한 값을 빼지않고 더한다면 경사면을 타고 올라가 듯이 수식이 만들어진다.
x 아래의 i는 현재 반복의 x 좌표라는 뜻이고 i+1은 다음 반복의 x 좌표라는 뜻이다.
수식에서 lr은 learning rate(step size)를 뜻하며 lr의 크기에 따라 한 번의 경사하강법에서 얼마나 이동할지를 결정하게 된다.
이 수식은 최솟값을 찾고 싶은 함수 f에 x를 (편)미분하여 x_i 좌표의 기울기 값을 찾아 내는 수식이다.
local minima (지역 최소값) 문제
local minima 문제는 우리가 찾고 싶어하는 global minima가 아닌 다른 하나의 골짜기(?)에 빠지는 것을 의미한다.
위 문제를 해결하기 위해 다양한 경사하강법 기법이 등장했다.
다음 글은 다양한 경사하강법의 기법을 설명하도록 하겠다.
참고자료 : https://angeloyeo.github.io/2020/08/16/gradient_descent.html, https://hackernoon.com/life-is-gradient-descent-880c60ac1be8