-
[확률적 경사 하강법(SGD)] 2. 확률적 경사 하강법전공공부/Deep Learning 2021. 7. 25. 23:00
안녕하세요. 개알못입니다~
저번에 이어 확률적 경사 하강법에 대하여 이야기 해보겠습니다.
1. 배치 학습 (batch learning)
저번 시간에 모든 훈련 샘플(n =1~N)에 관하여 오차함수 E(w)를 최적화하는 법을 배웠습니다. 이때 회귀문제와 다클래스 분류 문제 모두 E(w)는 각 샘플 한개에 대해서만 계산된 오차 En의 합으로 주어집니다. 즉,
이러한 방법을 배치 학습(batch learning)이라고 부릅니다. 또다른 말로는 epach learning 이라고도 부릅니다. 저번 시간에 살펴본 식
에서는 E(w)의 기울기를 사용합니다.
2. 확률적 경사 하강법 (stochastic gradient descent)
배치 학습과 대조적으로, 샘플의 일부 혹은 샘플 하나만을 사용하여 파라미터를 업데이트 하는 법을 확률 경사 하강법이라고 합니다. 보통 SGD라고 줄입니다. SGD에서 w의 업데이트는 하나의 샘플 n에 대하여 계산한 오차함수 En(w)의 기울기를 계산하여 w를 업데이트 한다.
다음의 w(t+1)을 업데이트 할 땐, 다른 샘플인 예를 들어 n_1를 선택합니다. 그 샘플도 똑같이 기울기를 계산한 후에 w를 업데이트 합니다. 이렇게 매번 샘플을 다르게 추출하여 w를 업데이트하며 진행합니다.
3. SGD의 장점
딥 뉴럴 네트워크를 학습시키는데는 batch learning 보단 SGD가 더 많이 쓰입니다. 여러가지 장점이 있기에 쓰이는데,
첫번째로, 훈련 데이터에 잉여가 있을 경우, 계산 효율이 향상, 학습 시간 단축이 됩니다.
예를 들어, 훈련 데이터를 그대로 2배 복사하여 샘플 양만 두배로 만들었다고 해봅시다. 이러한 훈련 데이터를 가지고 배치 학습을 시키면 학습 결과에는 영향이 없지만 기울기를 계산하는 비용이 2배로 듭니다. 그러나 SGD를 사용할 경우 학습결과, 계산량 모두 영향을 주지 않습니다.
두번째로, 오차함수의 값이 상대적으로 작지 않은 local minimum에 갇히는 위험이 감소합니다.
배치 학습의 경우에는 최소화하려는 목적함수는 항상 E(w)이기 때문에, 원하지 않은 국소 극소점에 한번 갇히면 영영 빠져나올 수 없습니다. 그러나 SGD를 사용할때는 목적 함수가 En(w)가 w를 업데이트를 할때마다 달라지기 때문에 그럴 가능성이 배치 학습보단 적습니다. 더불어 반복할 때마다 무작위로 샘플을 선택할때 효과를 최대화 할수 있다고 알려져 있습니다.
그 외의도 파라미터의 업데이트 크기가 작은 상태로 학습이 진행되기에, 학습의 경과를 자세하게 살펴볼 수 있다는 점, 훈련 데이터의 수집과 최적화가 동시에 진행되는 점 등이 있습니다.
'전공공부 > Deep Learning' 카테고리의 다른 글
[역전파법(backpropagation)] (0) 2021.08.17 [확률적 경사 하강법(SGD)] 5. 과적합 완화(학습을 위한 트릭) (0) 2021.08.03 [확률적 경사 하강법(SGD)] 4. 과적합 완화(규제화) (0) 2021.08.02 [확률적 경사 하강법(SGD)] 3. 미치배치, 일반화 오차 (0) 2021.07.27 [확률적 경사 하강법(SGD)] 1. 경사 하강법 (0) 2021.07.22