AOC55

Backend, Devops, Cloud, kubernetes

Data & AI

데이터 :: 경사하강법의 종류와 개념(배치, 확률적, 미니배치) - BGD, SGD, MSGD

aoc55.soft@gmail.com 2021. 2. 4. 10:22

 

공부하는 입장에서 작성한 내용이라, 틀린 부분이 있을 수 있습니다.

발견 시 지적해주시면 감사하겠습니다.

 

Batch Gradient Descent (BGD)

 

먼저 알고리즘 명의

Batch의 개념은 Total Trainning Dataset

을 의미한다.

(데이터를 분할 시 사용했던 batch 의미의 용어는 여기서 mini-batch로 통용)

 

전체 데이터 셋에 대해 에러를 구한 뒤 ⇒ 기울기를 한번만 계산하여 모델의 파라미터를 업데이트 하는 방식이다.

 

 

특징

전체 데이터에 대해서 업데이트가 한번에 이루어지므로 업데이트 횟수 자체는 적다.

그러나 한번의 업데이트에 모든 Trainning Data Set을 사용하므로 계산 자체는 오래 걸린다.

 

전체 데이터에 대해 Error Gradient 계산하므로 Optimal로 수렴이 안정적이다.

그러나 Local Optimal 에 수렴될 경우 탈출하기 어려울 수 있다.

 

GPU를 활용한 병렬처리에 유리하다.

하지만 전체 학습데이터에 대해 한번에 처리를 해야하므로 많은 메모리가 필요하다.

 

 


 

Stochastic Gradient Descent (SGD)

 

추출된 각각 한개의 데이터에 대해서 Gradient 계산 후 업데이트 하는 알고리즘이다.

확률적이기에 불안정하여 아래와 같이 요동치는 것을 볼 수 있다.

(그러나 이 요동침이 Local Optimal을 탈출할 가능성을 만들어줌.)

 

Stochastic의 경우 슈팅이 일어나는 것을 볼 수 있다.

 

특징

Shooting이 발생하므로 Local Optimal 빠질 리스크가 다소 적어진다.

그러나 훈련 데이터 한개씩 처리하므로, GPU 성능에 대해서 전부 활용이 불가하다.

때로는 Global Optimal 찾지 못할 수도 있다.

 

 


 

Mini-Batch Stochastic Gradient Descent (SGD, MSGD)

 

현재 널리 통용되는 SGD가 바로 이 MSGD 인 것 같다.

(대부분 MSGD를 그냥 SGD로 통용해서 사용하는 듯?)

 

  1. 전체 데이터셋에서 m개의 데이터를 뽑아 mini-batch를 구성하고.
  1. 이것의 평균 기울기를 통해 모델을 업데이트한다.

(어떻게 보면 BGD 장점 + SGD 장점)

 

 

특징

BGD보다 (슈팅이 어느정도 발생하므로) local optimal 빠질 리스크 적다.

SGD보다는 GPU 성능을 활용한 병렬처리가 가능하여 속도면에서 유리하다.

전체 데이터 아닌 일부 데이터만 메모리에 적재하여 사용하므로, 메모리 사용측면에서 BGD보다 원할하다.

그러나 mini-batch의 batch size를 지정해야 하는데 이것도 일종의 하이퍼파라미터이다.