본문 바로가기
기술 트렌드, 생각 정리 & 회고/생각 정리, 회고

[머신 러닝] - 경사 하강법(Gradient descent)

by TwoJun 2023. 3. 13.

금일(2023-03-13) 학부에서 머신러닝 수업 중, 기계 학습의 핵심이라고 언급해 주셨던 "경사 하강법(Gradient descent)"에 대해 추가적인 스터디가 필요했고, 이 부분에 대해 간략하게 정리한 글입니다.

 

 

 

 

 

1. 경사 하강법(Gradient descent)의 정의

1-1. 정의

- 경사 하강법(Gradient descent)은, 함수의 값이 낮아지는 방향으로 각 독립변수들의 값을 변형시키면서 함수가 최솟값을 갖도록 하는 독립변수의 값을 탐색 방법을 의미하며 일반적으로 입력된 Parameter의 검증(Validation)이 필요할 때 사용됩니다.

 

 

 

 

1-2. 위키백과에서의 정의

- 경사 하강법(Gradient descent)은, 1차 근삿값 발견용 최적화 알고리즘으로써, 이 부분의 기본 개념은 함수의 기울기(경사, Gradient)를 구하고 해당 경사의 반대 방향으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것을 말합니다.

 

 

 

 

1-3. 쉽게 이해해 보자면?

- 시각적으로 어느 부분이 목적지인지 전혀 확인되지 않는 산 속에서 산 밑으로 내려가야 하거나 산 정상까지 도달해야 한다면? 시각적으로 목적지 확인이 불가능하기 때문에 주변의 지형 등 형태 파악을 통해 이를 근거로 목적지까지 가야 하는 판단이 필요하게 됩니다.

 

- 목적지가 산의 정상이라면, 현재 자신의 위치에서 가장 경사가 높은 곳으로 계속 이동하다 보면 일반적으로 산의 정상에 도달할 수 있을 것이고, 목적지가 산 밑이라면 현재 위치에서 계속해서 가장 낮은 지점을 찾아 이동하다 보면 산 밑으로 내려갈 수 있게 됩니다. 산의 정상까지 가는 방법을 반대로 "경사 상승법(Gradient ascent)", 산 밑으로 내려가는 것을 "경사 하강법(Gradient descent)"이라고 부를 수 있습니다.

 

 

 

 

 

 

2. 경사 하강법을 사용하는 이유

(1) 일반적으로 경사 하강법은 함수의 최솟값을 찾아야 하는 상황에서 사용됩니다. 인공 지능의 경우 최적의 학습 패턴을 위해 자신의 파라미터(Parameter)를 검증해야 하며 검증 과정에서 손실 함수를 사용합니다. 검증 과정에서 손실 함수의 값이 가장 낮은 파라미터를 발견했다면 해당 파라미터가 최적의 파라미터임이 검증되는 것입니다.

 

 

(2) 그렇다면 "손실 함수를 미분해서 미분계수가 0인 지점을 찾으면 되지 않을까?"라는 생각을 해 볼 수는 있겠지만 보통 자연 현상에서 마주치는 함수들은 다항함수처럼 간단한 함수가 아닌 대부분 복잡하고 비선형 형태의 패턴을 갖는 함수이며 이러한 함수들은 미분을 통해 계산하기 어려운 경우가 많습니다.

 

 

(3) 이를 통해 일반적인 미분보다는 경사 하강법을 사용하여 손실 함수의 최솟값을 구하게 됩니다.

 

 

 

 

 

 

3. 경사 하강법을 통해 근삿값을 구하는 과정

Reference : https://hackernoon.com/life-is-gradient-descent-880c60ac1be8

 

 

3-1. 경사(Gradient)의 방향 성분, 크기 이용하기

 

- 여기서 생각해야 할 점은, 기울기에 대한 파라미터만을 가지고 해당 파라미터에 대해 손실 함수의 최솟값이 존재하는지 보장할 수 없습니다. 단, 해당 방향으로 손실 함수의 값이 줄어드는 것은 확정적이므로 결론적인 최솟값을 찾기 위해서는 구한 기울기의 정보로 나아갈 방향을 탐색해야 합니다.

 

 

 

 

 

 

4. 경사 하강법의 문제점

- 모든 방법에는 단점이 존재할 수밖에 없는 것처럼, 경사 하강법에서도 여러 가지 문제점이 존재합니다.

 

- 대표적으로 아래와 같이 2가지 문제점이 있습니다.

 

(1) 적절한 Step size (또는, 학습률(Learning rate))

(2) Local minima(지역 극솟값) 

 

 

 

 

4-1. 첫 번째 대표적인 문제 - Step size 선정 : Step size를 과도하게 설정한 경우

Step size의 크기가 과도하게 설정되었음.

- Step size를 크게 잡은 경우, 한 번에 이동하는 크기가 커지게 되므로 빠르게 수렴할 수 있다는 장점이 있습니다. 그렇다고 해서 Step size의 크기를 과도하게 설정하면 손실 함수의 최솟값을 계산하기 어려워질 수 있으며 함수의 값이 커지는 방향으로 최적화가 진행될 수 있으므로 주의해야 합니다.

 

 

 

 

 

4-2. 첫 번째 대표적인 문제 - Step size 선정 : Step size를 너무 작게 설정한 경우

Step size의 크기가 너무 작게 설정되었음.

- 이번엔 Step size가 너무 작게 설정된 경우 발산하지 않을 수 있다는 점이 있지만, 최적의 파라미터를 탐색할 때 소요되는 시간이 다소 오래 걸릴 수 있다는 단점이 존재하게 됩니다.

 

 

 

 

 

4-3. 첫 번째 대표적인 문제(결론) - Step size 선정 : Step size를 적절하게 설정하자.

Step size의 크기가 너무 작게 설정되었음.

- 이를 통해 Step size의 크기를 적절히 조정하여 최적의 파라미터를 탐색하는 것이 중요한 요소가 됩니다.

 

 

 

 

4-4. 두 번째 대표적인 문제 - Local minima 문제

손실 함수에서 최적의 파라미터를 위한 Global minimum을 찾아야 한다.

- 경사 하강법의 또 다른 문제점은 지역 극솟값(Local minima) 문제입니다.

 

- 실제로 최적의 파라미터를 찾기 위해 Global minimum을 찾아야 하지만, 경사 하강법의 특성상 알고리즘이 시작되는 파라미터 위치가 랜덤이므로 특정한 경우에서 Local minima에 빠지게 되어 헤어나오지 못하는 상황이 발생할 수도 있게 됩니다.

 

 

 

 

 

 

 

5. Reference

5-1. 위키백과(Wikipedia)

 

 

5-2. 경사 하강법 배경 지식, 관련 이미지 출처

URL : https://angeloyeo.github.io/2020/08/16/gradient_descent.html

 

경사하강법(gradient descent) - 공돌이의 수학정리노트

 

angeloyeo.github.io

 

 

 

 

※ 해당 포스팅에 대해 내용 추가가 필요하다고 생각되면 기존 포스팅 내용에 다른 내용이 추가될 수 있습니다.

개인적으로 공부하며 정리한 내용이기에 오타나 틀린 부분이 있을 수 있으며, 이에 대해 지적해 주시면 감사하겠습니다.

댓글