[딥러닝] 헷갈리는 개념 - epoch? batch size? iteration?

SeomIII·2022년 4월 17일
0

SONSU

목록 보기
4/29
  • cnn 학습을 진행하다보니 이용하게 된 epoch, batch size 개념을 정확하게 짚고 기록에 남기고 싶어 포스팅 하게 되었다.
  • 다루어야 할 데이터가 너무 많기도 하고(메모리 부족), 한번의 계산으로 최적화된 값을 찾는 것은 힘들다. 따라서 머신 러닝에서 최적화를 할때에는 일반적으로 여러 번 학습 과정을 거친다.
    또한, 한번의 학습 과정 역시 사용하는 데이터를 나누는 방식으로 세분화 시킨다. 이때, epoch, batch size, iteration 이라는 개념이 필요하다.

📌 epoch

  • 훈련 데이터셋에 포함된 모든 데이터들이 한번씩 모델을 통과한 횟수로, 모든 학습 데이터셋을 학습하는 횟수를 의미한다.
    • epoch 1 == 전체 학습 데이터셋이 한 신경망에 적용되어 순전파와 역전파를 통해 신경망을 한 번 통과했다는 의미
    • epoch 10 == 학습 데이터 셋 a를 10회 모델에 학습시켰다는 뜻.
  • epoch 를 높일수록 다양한 무작위 가중치로 학습을 해보므로, 적합한 파라미터를 찾을 확률이 높아진다. (손실 값이 내려감)
  • 하지만, 지나치게 epoch를 높이게 되면, 그 학습 데이터셋에 과적합(overfitting)되어 다른 데이터에 대해선 제대로 된 예측을 하지 못할 수 있다.
  • epoch 값이 너무 작으면 underfitting, 너무 크면 overfitting

📌 batch size

  • 연산 한번에 들어가는 데이터의 크기
  • 1 batch size에 해당하는 데이터셋을 mini batch 라고 한다.
  • batch size가 너무 큰 경우 한번에 처리해야할 데이터의 양이 많아지므로, 학습 속도가 느려지고, 메모리 부족 문제가 발생할 위험이 있다.
  • batch size가 너무 작은 경우 적은 데이터를 대상으로 가중치를 업데이트하고, 이 업데이트가 자주 발생하므로, 훈련이 불안정해진다.

📌 iteration

  • 전체 데이터를 모델에 한번 학습시키는데 필요한 배치의 수

    ex) 전체 2000개의 데이터가 있고, epochs=20, batch size=500이라고 가정
  • 1 epoch는 각 데이터의 size가 500인 batch가 들어간 4번의 iteration으로 나눠진다.
  • 전체 데이터셋에 대해서는 20번의 학습이 이루어졌으며, iteration 기준으로 보면 총 80번의 학습이 이루어진 것이다.

참고
https://m.blog.naver.com/qbxlvnf11/221449297033
https://gooopy.tistory.com/68

profile
FE Programmer

0개의 댓글