[Artificial Intelligence] Gradient Descent / Stochastic Gradient Descent
1. Gradient Descent
- loss를 최소화하는 w와 b를 찾는 것이 목표이다.
- 어떻게 찾을 수 있을까?
1.1 Analytic Solution
- Analytic Solution에서는 loss funtion을 각각 W와 b로 미분하여 각각 0이되는 값을 찾는다.
Wresult=∂W∂Loss(W,b)=0bresult=∂b∂Loss(W,b)=0
- 이것은 linear regression과 같은 간단한 모델에 적합하지만, 일반적인 모델에는 부적합하다.
1.2 Practical Approch
- Practical Approch에서는 이 문제를 해결하기 위해 Iteration optimization인 Gradient Descent가 있다.
- Gradient Descent란 함수의 기울기(W)를 구하고, 기울기의 반대 방향으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것이다. 따라서, loss에 최적화된 근사값을 구한다.
W(n+1)=W(n)−rw∂W∂Lossb(n+1)=b(n)−rb∂b∂Loss
2. Learning Rate
- 위 식에서 r_w, r_b는 learning rate이다.
- Learning rate란 gradient descent을 진행할 때 얼마의 하강하는 폭의 크기로 다음 계산을 진행하지 정하는 값이다.
- 보통 임의의 값으로 지정하고, 값을 바꿔가며 학습을 진행해서 최적의 결과가 나오는 값을 채택한다.
- 매우 큰 값으로 잡게 되면 하강하는 폭이 커져, 학습이 이뤄지지 않으며 최저점에 도달하는 것에 넘어 반대 방향으로 overshooting이 발생할 수 있다.
- 매우 작은 값으로 잡게 되면 하강하는 폭이 작아져, 최저점에 도달하는 시간이 매우 늦게 도달할 것이며 global mininum이 아닌, local minimum에 도달할 가능성이 커진다.
3. Gradient Descent in Linear Regression
Loss(W,b)=n1i=1∑n((Wxi+b)−yi)2∂W∂Loss(W,b)=n1i=1∑n2((Wxi+b)−yi)(xi)=n2i=1∑nxi((Wxi+b)−yi)∂b∂Loss(W,b)=n2i=1∑n((Wxi+b)−yi)
4. Stochastic Gradient Descent
- 기존 Gradient Descent method는 모든 데이터의 summation을 계산했다.
- 하지만, High memory usage와 Computational burden의 문제가 있다.
- 따라서, 모든 데이터를 계산하는 것이 아닌 데이터의 작은 부분 집합(mini-batch)으로 경사를 계산하여 W을 찾아낸다.
- 이러한 접근이 바로 Stochastic Gradient Descent이다.
- SGD는 빠르지만, GD보다 계속 진동(oscillate)한다.