epoch, batch size, iteration의 의미
epoch, batch size, iteration의 의미
https://losskatsu.github.io/machine-learning/epoch-batch/#4-iteration%EC%9D%98-%EC%9D%98%EB%AF%B8
예시
한번 모든 데이터를 학습시키면 좋겠지만, 메모리에 한계 때문에, 하나의 epoch에 모든 데이터를 한꺼번에 집어넣을 수 없다.
전체데이터를 1번학습하려면(1epoch 순방향 역방향 둘 다 포함), 데이터를 100개(batch size)씩 나누어,
miniBatch로 10번(iteration)를 돌려야 전체 1000개의 데이터를 모두 학습시켰다고 할수 있다.
즉 전체 데이터를 메모리한계만큼 batch-size로 나누어, iteration만큼 돌리면, 하나의 epoch가 완성된다.
예를 들어 5번 학습시킨다고 하면 1 epoch에 batch_size 100개씩 iteration 10번 , 5번 학습시키면 5 epoch
epoch
전체 데이터셋에 대해 한 번 학습완료한 상태
: One Epoch is when an ENTIRE dataset is passed forward and backward through the neural network only ONCE
Atificial Neural Network에서 전체 데이터셋에 대해 forward pass/backward pass 과정을 거친 것을 말함.
underfitting 과 overfitting을 방지하기 위해 적절한 epoch을 설정해야 한다.
epoch이 너무 크다면 overfitting 이, 너무 작다면 underfitting이 발생할 수 있습니다.
- epoch를 높일수록, 다양한 무작위 가중치로 학습을 해보므로, 적합한 파라미터를 찾을 확률이 올라간다.
(즉, 손실 값이 내려가게 된다.) - 그러나, 지나치게 epoch를 높이게 되면, 그 학습 데이터셋에 과적합(Overfitting)되어 다른 데이터에 대해선 제대로 된 예측을 하지 못할 수 있다.
ex) epochs = 69 라면 데이터셋을 69번 사용해서 학습을 거치는 것
batch size
: Total number of training examples present in a single batch.
(batch size는 한 번의 batch마다 주는 데이터 샘플의 size.)
이 때, batch(보통 mini-batch라고 부름) 는 나눠진 데이터 셋을 의미합니다.
예를 들어, 700개의 이미지로 이뤄진 데이터셋이있는데, 우리가 7번에 걸쳐서 학습시킨다면 7개의 배치를 만들어서 학습시킵니다.
배치 사이즈는 700개를 7번의 배치로 나눠서 학습시키므로 100개가 됩니다.
Total number of training examples present in a single batch.
batch( = 보통 mini-batch라고 표현)
데이터셋을 나누어 여러 묶음으로 만들때, 한 번의 batch(묶음)마다 주는 데이터 샘플의 size
==> iteration는 epoch를 나누어서 실행하는 횟수라고 생각하면 됨.
각 모델이나 상황별로 다르겠지만, 일반적으로 mini-Batch사이즈를
크게하면 peak-acc 값을 높일 수 있지만 ,
작게하면 전반적인 정확도의 안정성을 높일 수 있다.
iteration
The number of passes to complete one epoch.
데이터셋을 batch 크기만큼씩 epoch를 나누어서 실행하는 횟수
: The number of passes to complete one epoch.
(iteration는 epoch을 나누어서 실행하는 횟수)
iteration은 1 epoch을 마치는데 필요한 미니배치 갯수를 의미합니다.
다른 말로는 1epoch을 마치는데 필요한 파라미터 업데이트 횟수를 의미하기도 합니다.
Step
batch_size 5개씩 Gradient Descent를 계산해서, 이걸 iteration 20번하면 전체 학습데이터에 대해서 Gradient descent가 최소 한번은 적용 대상이 된다.
1 epoch를 위해서 학습데이터 전체가 100개이고, batch_size가 5인 경우, iteration 20 번 steps는 20번씩 Gradient Descent를 계산한다. (전체를 탐색한다는 가정하에)
30 epochs를 30으로 설정하면, 전체가 100개이고, batch_size가 5인 경우, iteration 20 번 steps는 600이 된다.
위에서 수행한 1epoch = 20 steps 였기 때문에
여기서 iteration을 steps과 같은 의미로 사용할 수도 있고, epochs의 반복으로 표기 하는 경우도 있어 헷갈린다.
일반적은iteration 을 keras에서는 epochs가이고
Tensorflow 1 버전에서는 steps에 대해 사용했었더,