[Artificial Intelligence] Gradient Descent / Stochastic Gradient Descent

TaeYong·2022년 10월 19일
0

Artificial Intelligence

목록 보기
2/2

1. Gradient Descent

  • loss를 최소화하는 wb를 찾는 것이 목표이다.
  • 어떻게 찾을 수 있을까?

1.1 Analytic Solution

  • Analytic Solution에서는 loss funtion을 각각 W와 b로 미분하여 각각 0이되는 값을 찾는다.
Wresult=Loss(W,b)W=0bresult=Loss(W,b)b=0W_{result} = \frac{\partial{Loss(W,b)}}{\partial{W}} = 0 \\ b_{result} = \frac{\partial{Loss(W,b)}}{\partial{b}} = 0
  • 이것은 linear regression과 같은 간단한 모델에 적합하지만, 일반적인 모델에는 부적합하다.

1.2 Practical Approch

  • Practical Approch에서는 이 문제를 해결하기 위해 Iteration optimization인 Gradient Descent가 있다.
  • Gradient Descent란 함수의 기울기(W)를 구하고, 기울기의 반대 방향으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것이다. 따라서, loss에 최적화된 근사값을 구한다.
    W(n+1)=W(n)rwLossWb(n+1)=b(n)rbLossbW^{(n+1)} = W^{(n)}-r_w\frac{\partial{Loss}}{\partial{W}} \\ b^{(n+1)} = b^{(n)}-r_b\frac{\partial{Loss}}{\partial{b}}

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)=1ni=1n((Wxi+b)yi)2Loss(W,b)W=1ni=1n2((Wxi+b)yi)(xi)=2ni=1nxi((Wxi+b)yi)Loss(W,b)b=2ni=1n((Wxi+b)yi)Loss(W, b) = \frac{1}{n}\sum_{i=1}^{n}{((Wx_i+b) - y_i)}^2 \\ \frac{\partial{Loss(W,b)}}{\partial{W}} = \frac{1}{n}\sum_{i=1}^{n}2{((Wx_i+b) - y_i)(x_i)} =\frac{2}{n}\sum_{i=1}^{n}{x_i((Wx_i+b) - y_i)} \\ \frac{\partial{Loss(W,b)}}{\partial{b}} =\frac{2}{n}\sum_{i=1}^{n}{((Wx_i+b) - y_i)}

4. Stochastic Gradient Descent

  • 기존 Gradient Descent method는 모든 데이터의 summation을 계산했다.
  • 하지만, High memory usage와 Computational burden의 문제가 있다.
  • 따라서, 모든 데이터를 계산하는 것이 아닌 데이터의 작은 부분 집합(mini-batch)으로 경사를 계산하여 W을 찾아낸다.
  • 이러한 접근이 바로 Stochastic Gradient Descent이다.
  • SGD는 빠르지만, GD보다 계속 진동(oscillate)한다.

0개의 댓글