-
[Regression]확률적 경사하강법(Stochastic Gradient Descent)과 미니배치 경사하강법(Mini-Batch Gradient Descent)Engineering/AI 2021. 4. 17. 23:40
1. 배치 경사하강법(Batch Gradient Descent)
이전에 살펴본 경사하강법은 실제로는 머신러닝에서 배치 경사하강법(Batch Gradient Descent)이라 불리며 Figure 1과 같은 수렴 도식도를 가지게 된다. 이는 모든 데이터를 활용하는 기법으로 $i$번째 항을 기준으로 매개변수 갱신식을 살펴보면 아래와 같다.
$$\theta_i := \theta_i - \eta \sum_{k=1}^{n}((f_{\theta}(x_k)-y_k)\times x_{k_{i}})$$
이러한 배치 경사하강법은 단점이 하나 더 존재한다. 바로 지역 최솟값(Local Minimum)이 발견된다면 전역 최솟값 근처(Global Minimum)로 가기 전에 지역 최솟값에 수렴하게 되는 문제이다. 이러한 문제를 해결하기 위해 확률적 경사하강법이 고안되었다.
2. 확률적 경사하강법(Stochastic Gradient Descent)
확률적 경사하강법(SGD)은 기존에 모든 학습 데이터를 사용하는 배치 경사하강법과 달리 학습 데티어를 무작위로 한 개 골라서 그것을 매개변수 갱신에 사용하는 방법이다. 특정 인덱스 $j$를 뽑았다고 가정하고 식으로 표현하면 아래와 같다.
$$\theta_i := \theta_i - \eta ((f_{\theta}(x_j)-y_j)\times x_{j_{i}})$$
기존에 존재하던 시그마 기호가 사라졌다. 기존의 방식과 달리 학습 데이터를 무작위로 선택하기 때문에 지역 최솟값에 빠지지 않는다.
그러나 확률적 경사하강법은 반복이 충분하지 않을 때 Figure 3처럼 노이즈가 심하다는 문제점을 가지고 있다. 이와 함께 가끔씩 전역 최솟값을 찾지 못하는 문제점이 발생할 수 있다. 또한 하나의 인덱스를 가지고 계산하므로 병렬 연산을 활용하지 못해 속도가 느리다. 이러한 단점들을 극복하기 위해 나온 것이 바로 미니배치 경사하강법이다.
3. 미니배치 경사하강법(Mini-Batch Gradient Descent)
미니배치 경사하강법은 학습 데이터를 무작위로 특정 개수 m개만 선택해서 매개변수를 갱신하는 방법이다. 무작위로 m개의 학습 데이터를 선정하고 이를 토대로 고른 인덱스들의 집합을 M이라 두면 아래와 같은 갱신식이 도출된다. 이 때 k는 m개의 학습 데이터 중 선택된 특정 인덱스이다.
$$\theta_i := \theta_i - \eta \sum_{k\in M}^{}((f_{\theta}(x_k)-y_k)\times x_{k_{i}})$$
이렇게 미니배치 경사하강법을 활용하게 되면 노이즈가 줄어들고 전역 최솟값에 빠질 확률을 줄여준다. 이때 배치 사이즈는 GPU가 2의 배수라는 것을 고려하여 선정해준다고 한다.
미니배치 경사하강법은 Figure 4와 같이 수렴한다.
- Reference
Figure 2 및 설명 참고 : Likelion k-digital training 2nd
Figure 1, 3, 4 : datascience-enthusiast.com/DL/Optimization_methods.html
반응형'Engineering > AI' 카테고리의 다른 글
[Fundamentals]원-핫 인코딩(One-Hot Encoding) (0) 2021.04.18 [Regression]회귀(Regression)와 경사하강법(Gradient Descent) (0) 2021.04.17 [Regression]최소제곱법(Least-Square Method)과 목적함수(Objective Function) (0) 2021.04.17 [Fundamentals]파라미터(Parameter)와 하이퍼파라미터(Hyperparameter) (0) 2021.04.15 [Fundamentals]단층 퍼셉트론(Single-Layer Perceptron) (0) 2021.04.15