본문 바로가기

딥러닝

6. 배치, 미니배치, SGD

이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음!

 

 

이번에는 신경망을 학습할 때 데이터를 입력하는 단위에 대해서 알아본다. 크게 세 가지로 나눈다.

 

  • 배치(batch) - 가지고있는 훈련 데이터셋을 한 번에 전부 모델에 입력하는 방식.
    • 비교적 입력 데이터 수가 적은 머신러닝의 경우 배치 방식이 가능할 수도 있지만, 무수한 양의 파라미터를 학습시키기 위해 다량의 데이터를 요구하는 딥러닝의 경우에는 배치 방식을 사용하면 메모리가 터지고 학습 시간이 매우 오래걸린다. 또한 온라인 학습처럼 학습함과 동시에 서비스를 제공하여야 하는 경우에는 데이터가 지속적으로 추가되고 그에 맞추어 즉시 결과를 산출해야 하므로 배치 방식이 사용이 불가능하다.
  • 미니 배치(Mini-batch) - 배치 방식이 딥러닝에서는 사실상 사용이 불가능하기 때문에 일반적으로 미니배치 방식을 사용한다. 미니배치는 데이터를 2, 4, 8, 16, 32 ...등의 2의 제곱 개수로 묶어서 입력하는 방식이다. 굳이 2의 제곱수로 묶는 이유는 GPU 메모리를 효율적으로 사용하기 위함이다. 미니배치는 배치를 사용하지 못해서 어쩔 수 없이 사용한다기 보다는 그 자체로서의 의미가 있다. 미니배치를 생성할 때마다 매번 다른 데이터를 샘플링하여 사용하게 되는데, 이때마다 조금씩 다른 통계량을 갖는 확률적 성질이 생긴다. 이 성질로 인해 일반화 오류가 줄어들고 과적합이 방지된다.

 

  • 확률적 샘플링(Stochastic) - 가진 데이터 중 딱 한 개를 골라서 학습시키는 방식이다. 개별 데이터 용량이 매우 클 때 확률적 샘플링을 통해 학습시키는 경우가 있다. 미니배치의 크기를 1로 잡으면 확률적 샘플링이 된다. (미니배치의 크기를 데이터셋 전체로 하면 배치 방식이 된다.)

 

 

{"originWidth":908,"originHeight":450,"style":"alignCenter","width":476,"height":236,"caption":"Batch , Mini Batch and Stochastic gradient descent

세 방식을 사용하여 경사 하강법을 진행했을 때 최적해(빨간 점)으로 다가가는 경로를 그림으로 나타낸 것이다.

 

배치 방식을 사용한 배치 경사 하강법의 경우 가능한 많은 데이터셋을 사용했기 때문에 올곧은 경로를 보여준다. 하지만 데이터 양이 많다면 시간과 메모리 자원의 한계로 사용이 불가능하다.

 

확률적 경사 하강법 (SGD)는 하나의 샘플만으로 전체 데이터셋에 대한 gradient를 대표하여 사용하는 것이므로 큰 오차를 보일 수 있다.

 

미니배치 경사 하강법은 배치와 SGD의 중간 수준의 모습을 보인다.

 

 

 

 

미니배치의 크기를 무작정 늘리는 것은 옳지 않다.

미니배치 크기를 100에서 10,000으로 늘리면 데이터가 100배 증가했으므로 모델이 처리하는 데 100배의 시간이 더 걸린다. 하지만 표본 평균의 표준편차는 $\frac{\sigma}{\sqrt{100}}$에서 $\frac{\sigma}{\sqrt{10,000}}$으로 10배 밖에 감소하지 않는다. 표본 평균의 표준편차의 감소량은 적은데 반해 연산량 증가는 매우 크므로 미니배치의 크기를 무작정 늘리는 것 보다는 시간 자원을 고려하여 적절한 크기로 선택해야 한다.