Programming/DL, Deep Learning

Epoch, Batch size, Step, Iteration

카이로셜 2023. 1. 17. 23:06

머신러닝/딥러닝 모델을 학습할 때

전체 데이터셋을 모델에 한번에 입력하기에는 크기가 너무 큼

→ 데이터를 여러 개의 작은 데이터 묶음(batch)으로 나눠서 모델에 입력

 

Epoch

Epoch : 전체 데이터에 대해서 순전파와 역전파가 끝난 상태;
One Epoch is when an ENTIRE dataset is passed forward and backward through the neural network only ONCE
  • 에포크가 50이면, 전체 데이터 단위로는 총 50번 학습함

 

Batch size

Batch size : 몇 개의 데이터 단위로 매개변수를 업데이트 하는지를 의미;
Total number of training examples present in a single batch
  • 배치 크기(batch size)와 배치의 수(the number of batches)는 다르다
  • 전체 데이터가 2,000일 때, 배치 크기가 200이라면, 배치의 수는 10
  • 이때 배치의 수가 스텝(step)이자, 이터레이션(iteration)

 

Step, Iteration

Step, Iteration : 한 번의 epoch를 끝내기 위해서 필요한 batch의 수;
The number of batches needed to complete one epoch
  • 전체 데이터가 2,000일 때, 배치 크기가 200이라면, 이터레이션 수는 10
  • 이는 한 번의 에포크 당 매개변수 업데이트가 10번 이루어진다는 의미

 

 

관계

$$ S \times B = N \times E $$

  • $S$ : step의 수
  • $B$ : batch size
  • $N$ : 전체 학습할 데이터의 총 개수
  • $E$ : epoch의 수

 

BERT 논문의 A.2 Pre-training Procedure를 보면

They are sampled such that the combined length is $\le 512$ tokens. ~ We train with batch size of 256 sequences (256 sequences * 512 tokens = 128,000 tokens/batch) for 1,000,000 steps, which is approximately 40 epochs over the 3.3 billion word corpus.

여기서 어떻게 40 epochs가 나왔을까?

  • 최대 입력의 길이는 512이고, batch size는 256이라면 논문에 나온 것처럼 batch당 token의 수는 128,000개
    → 위의 수식에서 $B$ = 128,000
  • step의 수 $S$ = 1,000,000
  • 전체 학습할 데이터의 총 개수 $N$ = 3,300,000,000

$$ 1000000 \times 128000 = 3300000000 \times E $$

$$ E = \frac{1000000 \times 128000}{3300000000} = 38.78 \approx 40  $$

 

 


출처:

https://wikidocs.net/36033

 

07-04 딥 러닝의 학습 방법

딥 러닝의 학습 방법의 이해를 위해 필요한 개념인 손실 함수, 옵티마이저, 에포크의 개념에 대해서 정리합니다. ## 1. 손실 함수(Loss function) ![](http…

wikidocs.net

 

https://towardsdatascience.com/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9

 

Epoch vs Batch Size vs Iterations

Know your code…

towardsdatascience.com