에폭(epoch), 배치 사이즈(batch size), 반복(iteration) 개념 정리
서론
경사 하강법과 같이 결과를 내기 위해서 여러번의 최적화 과정을 거쳐야 하는 알고리즘을 iterative 하다고 한다.
반복해서 많은 양의 데이터 학습을 진행할 때, 보통 한번에 최적화된 값을 찾기 어렵다.
머신러닝에서는 최적화(optimization)를 하기 위해 여러번의 학습 과정을 거친다.
또한 한번에 모든 양의 데이터를 넣지 않고 데이터를 나눠서 학습시키는데
이때 등장하는 개념이 에폭(epoch), 배치 사이즈(batch size), 반복(iteration)이다.
전체 개념에 대한 개략적인 내용이다.
에폭(epoch)이란 ?
한번의 에폭은 전체 데이터셋에 대해 forward pass/backward pass 과정을 거친 것을 말한다.
즉, 전체 데이터셋에 대해 한번 학습을 완료한 상태를 의미힌다.
신경망에서 사용되는 역전파 알고리즘(backpropagation algorithm)은 두가지 단계로 나뉜다.
1) 순방향 패스 (forward pass)
파라미터를 사용해 입력부터 출력까지의 각 계층의 weight를 계산하는 과정
2) 역방향 패스 (backward pass)
forward pass를 반대로 거슬러 올라가며 다시 한번 계산 과정을 거쳐 기존의 weight를 수정하는 과정
이 전체 데이터셋에 대해 forward pass + backward pass이 완료되면 한번의 epoch가 진행된 것이다.
즉, 1 epoch는 전체 트레이닝 데이터셋이 하나의 신경망에 적용되어 순방향, 역방향 패스를 통해
신경망을 한번 통과했다는 것을 의미한다.
+ 적절한 epoch을 설청해야 underfitting과 overfitting을 방지할 수 있다.
epoch이 너무 크다면 overfitting, 너무 작다면 underfitting이 발생할 수 있다.
배치 사이즈(batch size)란 ?
Total number of training examples present in a sight batch
한번의 배치마다 주는 데이터 샘플의 사이즈
메모리의 한계와 속도 저하로 인해 대부분의 경우
한번의 epoch에서 모든 데이터를 한꺼번에 집어넣을 수는 없다.
그래서 데이터를 나누어 주게 되는데 이때 몇번 나누어서 주는가를 iteration,
각 iteration마다 주는 데이터 사이즈를 batch size라고 한다.
batch (보통 mini-batch라고 부르는)는 나눠진 데이터셋을 의미한다.
예를 들어, 700개의 이미지로 이루어진 데이터셋이 있는데, 7번에 걸쳐 학습시킨다면
7개의 배치를 만들어서 학습시킨다.
이때 700개를 7번의 배치로 나눠서 학습시키므로 배치사이즈는 100개가 된다.
이터레이션(iteration)이란 ?
iteration은 1 epoch를 마치는데 필요한 미니 배치의 개수를 의미한다.
다른 말로는 1 epoch를 마치는데 필요한 파라미터 업데이트 횟수를 의미하기도 한다.
정리
① 만약 10,000개의 데이터셋을 학습시킨다고 하자
한 턴에 1,000개씩 10번, 5턴을 학습시킨다고 하면
- batch size = 1,000
- iteration = 10
- epoch = 5
② 만약 2,000개의 데이터가 있고 epoch = 20, batch size = 500이라고 하자
이 때 iteration 수는 ?
1 epoch는 각 데이터의 size가 500인 batch가 들어간 네번의 iteration으로 나누어진다.
그리고 전체 데이터셋에 대해서 20번의 학습이 이루어졌으며,
itaration 기준으로 보자면 총 80번의 학습이 이루어진 것이다.
③ 트레이닝 셋 1000개를 10개의 미니 배치로 나누어 10 epoch 학습 시 가중치 갱신 횟수는 ?
배치 사이즈는 100이 되고 10번의 iteration을 하면 1 epoch이 완료된다.
10 epoch은 총 100번의 iteration이므로 가중치 갱신은 100회가 일어난다.
일반적으로 미니 배치 사이즈를 크게 하면 peak-acc 값을 높일 수 있지만,
미니 배치 사이즈를 작게 가져가는 것이 전반적인 정확도의 안정성을 높일 수 있다.
참고