본문 바로가기
AI Research/Deep Learning

[딥러닝 기본지식] 경사 하강법(Gradient Descent)의 이해 - 정의

by ga.0_0.ga 2023. 3. 3.
728x90
반응형

▶ 경사법의 등장 배경

신경망은 최적의 매개변수를 학습 시에 찾아야 합니다. 여기에서 최적이란 손실 함수가 최솟값이 될 때 매개변수 값을 말합니다. 그러나 매개변수 공간이 매우 넓고 크기 때문에 어디가 최솟값인지 한번에 알기는 힘듭니다. 이런 상황에서 기울기를 이용해 함수의 최솟값을 찾는 것이 경사법입니다. 이때, 각 지점에서 함수의 값을 낮출수있도록 하는 지표가 되는 것은 기울기입니다.

기울기가 가리키는 곳에 정말 함수의 최솟값이 있는지 정말 그쪽으로 가는 것이 맞는지 어떻게 보장할 수 있을까요? 실제로 함수에서는 기울기가 가리키는 방향에 최솟값이 없는 경우가 대부분입니다. 기울어진 방향이 최솟값을 가리키는 것은 아니지만, 그 방향으로 가야 함수 값을 줄일 수 있다는건 분명한 사실입니다. 그래서 최솟 값이 되는 장소를 찾을 때 기울기 정보를 이용해야 합니다.

경사법은 현재 위치에서 기울어진 방향으로 일정 거리만큼 이동합니다. 다시 그 장소에서 또 기울기를 구하고, 또 그 기울어진 방향으로 나아갑니다. 이렇게 해서 함수의 값을 점점 줄이는 것이 경사법입니다.

▶ 경사하강법

경사하강법은 함수의 기울기를 구하고 경사의 절댓값이 낮은 쪽으로 계속 이동시켜 최저점에 다 다를 때까지 반복하는 것입니다. 함수의 최소, 최댓값을 찾으려면 미분계수가 0인 점을 찾으면 되는게 아닌가 하고 생각할 수 있는데 미분 계수가 0인 지점을 찾는 것이 아닌 경사하강법을 사용하는 이유는 아래와 같습니다.

- 딥러닝 모델에서 사용하는 함수들은 매우 복잡해 미분 계수와 그 값을 계산하기 어렵습니다.

- 또한, 실게 미분계수를 계산하는 과정을 컴퓨터로 구현하는 것보다 경사하강법을 구현하는 것이 더 쉽기 때문입니다.

- 마지막으로 모델 학습시에 대부분 상당한 양의 데이터를 이용하는데 이때 경사하강법과 같이 반복적인 방법을 통해 구하면 계산량이 감소해 더 효율적입니다.

▶ 경사하강법 수식 유도하기

경사하강법은 함수의 기울기를 이용해서 함수가 최솟 값 일 때의 x를 찾기위한 방법입니다. 즉, x를 어디로 옮겨야 하는지를 알아내는 방법입니다. 아래 그림을 살펴보면,

그림출처

기울기가 양수면 x값이 증가할 수록 함수값도 증가하며, 반대로 음수인 경우에는 x값이 증가할수록 함수 값이 감소하게 됩니다. 또한 기울기가 가파를수록 x의 위치가 최솟값과 먼 것을 알 수 있습니다.

이를 이용해 특정 지점 x에서 x가 커질수록 함수값이 커질때와 작아질때를 보면,

- 커질때 => 기울기의 부호는 양수이므로, 음의 방향으로 x를 옮겨야 함.

- 작아질 때 => 기울기의 부호는 음수이므로, 양의 방향으로 x를 옮겨야함.

이를 수식으로 표현하면 아래와 같은 식이 나옵니다.

위 식에서 이동거리는 어떻게 구할 수 있을까요? 바로 gradient의 크기를 이용하면 됩니다.

잘 생각해보면, gradient값은 극소값에 가까울수록 그 값이 작아집니다. 따라서 이동거리에 사용할 gradient의 크기와 비례한다는 점을 이용하면 현재 x의 값이 극소값에서 멀때는 많이 이동하고 가까울때는 조금씩만 이동할 수 있게됩니다. 즉, 이동거리는 gradient값을 직접 이용하되, 이동 거리를 적절히 조절할 수 있게 수식을 조정하면 됩니다. 따라서 최종적으로 도축되는 수식은 아래와 같습니다.

함수 f(x)에 대한 gradient descent의 시각화​

 

▶ 적절한 step size

경사하강법으로 학습시 step size가 너무 크거나 작으면 문제가 생깁니다. 너무 크게 설정하면 빠르게 수렴할 수 있지만 최소 값을 계산하는 방향으로 수렴하지 못하고 함수 값이 계속 커지는 방향으로 최적화가 진행될 수 있습니다. 또한 발산할 수도 있습니다. 너무 작으면 최적의 x값을 구하는데 시간이 오래걸린다는 단점이 있습니다.

▶ 경사하강법의 단점

경사하강법의 대표적인 문제점은 바로 local minima 문제입니다.

실제로 우리가 도달해야하는 점은 global minimum이지만 경사하강법의 시작점은 매번 랜덤이기 때문에 운이 나쁘면 local minima 빠져 헤어나올 수 없는 경우가 생기기도 합니다.

이와 같은 문제점을 해결하기 위해 모멘텀(momentum)이라는 것을 사용합니다. 기울기에 관성을 줘서 작은 기울기는 쉽게 넘아갈 수 있도록 해주는 것입니다.

 

728x90
반응형

댓글