머신러닝/딥러닝 모델을 학습할 때
전체 데이터셋을 모델에 한번에 입력하기에는 크기가 너무 큼
→ 데이터를 여러 개의 작은 데이터 묶음(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://towardsdatascience.com/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9
'Programming > DL, Deep Learning' 카테고리의 다른 글
PyTorch (0) | 2023.01.11 |
---|---|
Logit, Sigmoid, Softmax (0) | 2022.05.14 |
Odds(오즈) and Logit(로짓) (0) | 2022.05.14 |
PyTorch Tutorial (0) | 2022.02.15 |