1. Gradient Descent (경사 하강법)

: 비용함수의 gradient를 반대방향으로 파라미터를 조정하며 최솟값을 찾는, 최적화 방법

 

 = 함수의 기울기(Gradient)를 구하고 해당 경사의 반대 방향을 계속 이동시켜 극값에 이를 때까지 반복하는 것.

 = 함수의 값이 낮아지는 방향으로, 최솟값을 갖도록 값을 계속해서 변경하는 것

(Batch Gradient Descent, BGD)

 

왜 필요한가?

인공지능은 최적의 학습 패턴을 찾고자, 자신의 파라미터(Parameter)를 검증해야 한다. (기계학습의 과정)

이 검증 과정에서 손실 함수를 사용하며, 

검증 과정에서 손실 함수의 값이 가장 낮은 parameter를 발견했다면 해당 파라미터가 최적의 파라미터임이

검증되는 것이다.

 

"손실 함수를 미분해서 미분계수가 0인 지점을 찾으면 되지 않을까?"라는 의문을 가질 수도 있겠지만,

보통 자연 현상에서 마주치는 함수들은 대부분 복잡하고 비선형 형태의 패턴을 갖는 함수이다.

이러한 함수들은 미분을 통해 계한하기 어렵기 때문에,

Gradient Descent를 사용하여 손실 함수의 최솟값을 구하게 된다.

 

 

 

근삿값을 구하는 과정

 

 

한계점

1. Step size(Learning rate)의 문제

   1-1) Step size를 과도하게 설정한 경우

   - 한번에 이동하는 크기가 커짐 

   -> 빠르게 수렴할 수는 있지만, 

      매개변수가 목표값을 지나치거나, 오버슈팅할 수도 있음!

   1-2) Step size를 너무 작게 설정하는 경우

 - 한번에 이동하는 크기가 작음

  -> 발산하지 않을 수 있다는 장점이 있지만,

      최적의 파라미터를 탐색할 때 소요되는 시간이 오래 걸릴 수 있다.

 

2. Local minima 문제

 

최적의 파라미터를 찾기 위해서는 Global minimum을 찾아야 하지만, 

경사 하강법의 특성상 알고리즘이 시작되는 파라미터 위치가 랜덤이므로 

Local minima에 빠져 헤어나오지 못하는 상황이 발생할 수도 있다.

 

  -> 이러한 한계를 극복하기 위해 SGD, BGD와 같은 방법 사용!

 

 

 

 

2. Stochastic Gradient Descent(SGD, 확률적 경사 하강법)

Gradient Descent는 전체 데이터셋을 사용하여, 매 업데이트마다 경사를 계산했다.(연산량이 매우 많음)

반면, SGD는 훈련 데이터셋에서 무작위로 선택한 하나의 샘플 또는 소수의 샘플(mini batch)을 사용하여 경사를 계산하고 매개변수를 업데이트 한다.

  무작위로 선택한 하나의 샘플 -> 확률적 경사 하강법(Stochastic Gradient Descent, SGD)

  소수의 샘플 -> 미니 배치 경사 하강법(mini-batch Gradient Descent, MSGD)

 

Stochastic Gradient Descent(SGD)

확률적으로(무작위로) 데이터를 선택하여, 매 반복(iteration)마다 무작위로 선택된 하나의 데이터 포인트 gradient만을 사용하여 매개변수를 업데이트 한다.

(batch size = 1)

 

- 연산량이 비교적 매우 적어, 손실 함수의 최적값에 빠른 수렴 속도를 보인다.

- 진폭이 매우 크다.

 

- 하지만, 한 번의 반복에 한 번의 데이터를 사용하기 때문에 최적값에 수렴하지 않을 가능성이 있어, 수렴 안정성이 낮다.

- 한 번에 하나의 데이터 포인트만을 사용하기에, 더 많은 노이즈와 불안정성을 초래한다.

 

 

 

 

3. Mini-batch SGD(MSGD, 미니 배치 경사 하강법)

batch size를 사용자가 정해서 사용하는 것 (보통 batch size = 32/64/128)

정해진 배치의 크기만큼 데이터를 여러 묶음으로 나누어, 각 묶음에 대하여 경사하강법을 적용한다.

 

여러 데이터 포인트의 평균 gradient를 사용하여 매개변수를 업데이트 한다.

일반적으로 Mini-batch SGD를 사용한다.

(bath size는 1보다 큼)

 

- BGD보다는 연산량이 적음

- SGD보다는 안정적으로 수렴함

- 머신러닝에서 'SGD를 이용한다'라고 하면, 대부분 'mini-batch SGD'를 사용하는 것!

 

 

 

경사 하강법 요약

BGD SGD mini-batch SGD

 

 

 

 

 

 

 

* 참고

https://twojun-space.tistory.com/124

https://yhyun225.tistory.com/7

'딥러닝 이론' 카테고리의 다른 글

Batch/Epoch/Iteration  (0) 2024.07.22
기계 학습의 과정  (0) 2024.07.22