본문 바로가기
공부/AI

[DL기초] batch_size, epoch, step 개념 그리고 iteration

by 병진들 2021. 6. 9.

일반적으로 Gradient Descent는 아래 3가지 개념을 베이스로 학습이 진행된다.

 

batch_size: Gradient Descent를 한번 계산하기 위한 학습 데이터의 개수

steps: Gradient Descent를 batch_size별로 계산하되, 전체 학습 데이터에 대해서 이를 반복해서 적용한 횟수

epoch: 전체 학습 데이터에 대해서 steps를 진행

 

 

이제, 여기서 Iteration 개념이 헷갈린다.

Keras의 경우 batch사이즈와 epochs를 인자로 입력해서 얼마나 반복적으로 학습을 수행할지 결정한다.

 

예를들어

학습데이터 전체가 100개이고, batch_size가 5인 경우,

1 epoch를 위해서 steps는 20번씩 Gradient Descent를 계산한다. (전체를 탐색한다는 가정하에)

5개씩 Gradient Descent를 계산해서, 이걸 20번하면 전체 학습데이터에 대해서 Gradient descent가 최소 한번은 적용 대상이 된다.

그리고 epochs를 30으로 설정하면, 위에서 수행한 1epoch = 20 steps 였기 때문에 전체 steps는 600이 된다.

여기서 헷갈리는게 iteration인데 이것은 반복의 의미 이므로 steps이 될 수도, epochs가 될수도 있다.

일반적은 keras에서는 epochs가 iteration이고 / Tensorflow 1 버전에서는 steps가 iteration 이다.

 

정리

Case:

Train Data Size = 100

Epoch = 500

 

1. Gradient Descent

전체 학습 데이터를 모두 Gradient 대상으로 간주함

  크기 설명
batch size 100 전체 Train Data를 모두 Gradient 하기때문에 Batch size는 100이 됨
step 1 batch size가 Train Data 전체이므로 1 Step시 끝남
steps(전체) 500 500 Epoch 이기 때문에 Step은 총 500회 

 

2. Stochastic Gradient Descent (SGD)

이론적으로 전체 Train Data중 딱 1개만 Gradient 함. 순차적 전체 탐색 안함

  크기 설명
batch size 1 전체 Train Data중 딱 1개만 골라서 Gradient, 즉 batch size = 1 (나머지 99개 안함)
step 1 batch size가 1이지만 딱 한번만 Gradient 하기 때문에 step은 1
steps(전체) 500 500 Epoch 이기 때문에 Step은 총 500회 

 

3. Mini batch SGD (이론적)

만약 batch size가 5라면, 딱 이만큼만 이용해서 Gradient 수행

  크기 설명
batch size 5 전체 Train Data중 딱 batch size만큼만 Gradient 수행 (나머지 95개 안함)
step 1 batch size가 5이지만 딱 한번만 Gradient 하기 때문에 step은 1
steps(전체) 500 500 Epoch 이기 때문에 Step은 총 500회 

 

4. Deep Learning Framwork 에서의 Mini batch SGD

위 3번처럼 Mini batch를 하되, step을 통해 전체 Train Data를 순차적으로 모두 Gradient 수행함.

일반적으로 이 방법을 DL에서 Iteration 이라고 표현하는 것 같다.

  크기 설명
batch size 5 batch size가 5이고,
전체 Train data가 100이기 때문에 한번씩 다 수행하려면 20번 Gradient 해야함
step 20
steps(전체) 10,000 1 Epoch에 20 step  => 500 Epoch 는 10,000 steps 


정리

개념 정리 요약

 

댓글