티스토리 뷰

인공지능

Stochastic Gradient Descent(SGD)란?

망나니개발자 2020. 2. 9. 22:33
반응형

1. Stochastic Gradient Descent(SGD)란?


[ Stochastic Gradient Descent ]

Neural Network의 Weight를 조정하는 과정에는 보통 Gradient Descent라는 방법을 사용한다. 이는 네트워크의 Parameter들을 $\theta$ 라고 했을 때, 네트워크에서 내놓는 결과값과 실제 값 사이의 차의를 정의하는 Loss Function의 값을 최소화하기 위해 기울기를 이용하는 것입니다. Gradient Descent에서는 Loss Function의 값을 최소화하는 $\theta$ 값을 찾는 것으로 기울기의 반대 방향으로 일정 크기만큼 이동하는 것을 반복한다. 이 Iteration에서 $\theta$의 변화 식은 아래와 같다.

$$\theta = \theta - \eta \nabla_{\theta} J(\theta)$$

여기서 Loss Function을 계산할 때 전체 Train-Set을 사용하는 것을 Batch Gradient Descent라고 한다. 그러나 이렇게 계산하면 한번 step을 내딛을 때, 전체 데이터에 대해 Loss Function을 계산해야 하므로 너무 많은 계산양을 필요로 한다. 이를 방지하기 위해 보통은 Stochastic Gradient Desenct(SGD)라는 방법을 사용한다. 이 방법에서는 Loss Function을 계산할 때, 전체 데이터(Batch) 대신 일부 데이터의 모음(Mini-Batch)를 사용하여 Loss Function을 계산한다. Batch Gradient Descent보다 다소 부정확할 수는 있지만, 계산 속도가 훨씬 빠르기 때문에 같은 시간에 더 많은 step을 갈 수 있으며, 여러 번 반복할 경우 Batch 처리한 결과로 수렴한다. 또한 Batch Gradient Descent에서 빠질 Local Minima에 빠지지 않고 더 좋은 방향으로 수렴할 가능성도 높다. 여기에 더해 SGD를 변형시킨 여러 알고리즘들을 활용하면 훨씬 좋은 성능을 낼 수 있고, 변형된 알고리즘으로 Naive Stochastic Gradient Descent 알고리즘이고, Momentum, NAG, Adagrad, AdaDelta, RMSprop 등이 있다.

 

 

[ Stochastic Gradient Descent 한장 요약]

 

 

참고 자료

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함