batch size, epoche, iteration

yuns_u·2021년 10월 20일
0
post-custom-banner

batch size, epoche, iteration에 대해 정리해보고자 한다.
신경망을 학습시킬 대 임의의 매개변수(가중치)를 정하고 그 매개변수로 손실값을 구하며 손실 함수의 기울기를 계산한다. 그 기울기와 학습률을 이용해 손실이 적게 나는 방향으로 가중치를 움직여 파라미터를 업데이트하여 다시 손실함수의 기울기를 계산하며 적절한 가중치값을 찾는다.

즉, 기울기 계산은 매우 많이 일어나는데 10억개 100억개 이상의 빅데이터를 한 번에 모델에 태운다면 컴퓨터 리소스 부족, 메모리 부족뿐만 아니라 한 번의 학습에 계산되어야 하는 파라미터(가중치)의 수가 지나치게 많아지므로 계산 시간이 너무 많이 걸리게 된다.

이러한 문제를 해결하고자 epoch, batch size, iteration의 개념이 등장했다.

batch size

  • batch size는 전체 훈련 데이터셋을 여러 작은 그룹으로 나누었을 때 하나의 소그룹에 속하는 데이터 수를 의미한다.
  • 전체 훈련 데이터셋을 작게 나누면 전체 훈련 데이터셋을 신경망에 넣는 것보다 효율적으로 리소스를 사용하게 되어 학습 시간이 줄어든다고 한다.
  • 1 batch size에 해당하는 데이터셋을 mini batch라고 한다.
  • 1회의 epoch 안에 1개 이상의 mini batch가 들어가게되며, 만약 1개의 mini batch가 1회의 epoch 안에 있다면 배치 학습법이라고 한다.
  • 배치 사이즈가 너무 큰 경우 한 번에 처리해야 할 데이터의 양이 많아지므로 학습 속도가 느려지고 메모리 부족 문제가 발생할 수 있다.
  • 배치 사이즈가 너무 작은 경우 적은 데이터를 대상으로 가중치를 업데이트하고 이 업데이트가 자주 발생하므로 훈련이 불안정해진다.

epoch

  • 딥러닝에서 epoch는 전체 훈련데이터셋이 신경망을 통과한 횟수를 의미한다.
  • 1 - epoch의 경우 전체 훈련 데이터셋이 하나의 신경망에 적용되어 순전파와 역전파를 통해 신경망을 한 번 통과했다는 것을 의미한다.
  • epoche를 높힐수록 다양한 무작위 가중치로 학습을 해보기 때문에 적합한 파라미터를 찾을 확률이 높아진다. 즉, 손실값이 대체로 내려가게 된다.
  • 지나치게 epoche를 높이게 된다면 그 학습 데이터셋에 과적합되어 다른 데이터에 대해서 제대로된 예측을 하지 못할 수 있다.

iteration

  • iteration은 1 - epoch를 마치는 데에 필요한 미니배치의 개수를 의미한다.
  • 1-epoch를 마치는데 필요한 파라미터 업데이트 횟수인 것이다.
  • 예를 들어 500개의 데이터를 100개씩 5개의 미니배치로 나누었을 때, 1-epoch를 위해서는 5-iteration이 필요하며 5번의 파라미터 업데이트가 진행된다.
  • 각 배치마다 파라미터 업데이트가 한 번씩 이루어지므로 iteration은 "파라미터 업데이트 횟수 = 배치의 수"가 된다.

+) 추가
데이터셋이 너무 거대해서 전체를 메모리에 올리는 것도 어렵다면 배치 학습을 하되 한 번에 학습할 학습 데이터 셋의 크기를 줄이고 for문으로 실제 batch를 만들고 pickle로 파일로 만들어놓은 데이터 셋을 일부씩 불러와 batch에 학습시킨 뒤 모든 데이터셋을 불러와 한 번 학습하는 것을 epoch로 잡는 방식도 있다.

참고블로그 1
참고블로그 2

profile
💛 공부 블로그 💛
post-custom-banner

0개의 댓글