Batch Size, Iteration
포스트 난이도: HOO_Senior
# Gradient Descent
# Batch Size
Data science 프로젝트에서 사용되는 데이터셋은 한 종류가 아니라 여러 종류의 데이터셋을 종합적으로 분석하여 사용한다. 여기서 말하는 하나의 데이터셋은 빅데이터에 해당하는 데이터셋인 경우가 있는데 결국 여러 종류의 빅데이터를 ML(Machine learning)에 사용되는 셈이다. 이 경우, 현실적인 측면에서 Hardware가 가진 한계점이 있기 때문에 우리는 Batch size를 통해서 데이터를 나누는 작업을 한다.
물론 ML을 돌리는 과정에서 하드웨어에 부담이 없다면 Batch 작업을 하지 않고 한 번에 학습을 하면 되지만 학습해야 할 데이터 양이 많아지면 현실적인 측면에서 어려운 일이다.
따라서 Data science 개발자는 ML(Machine learning)을 돌리는 과정에서 현실과 최적의 결과 산출이라는 타협점으로 Batch size를 설정하는 것이다.
# Batch size는 모든 Traing data를 의미하지 않는다.
필자는 프로그래밍 공부를 할 때 항상 사전적 의미를 참고하는 것이 좋다고 이야기해왔다. 왜냐하면 프로그래밍 자체가 영어 기반으로 만들어진 단어나 용어들이기 때문에 사전적 의미를 참고하는 것이 때로는 한국말로 번역된 용어보다 이해하기가 훨씬 쉽기 때문이다. Batch라는 사전적 의미만 보면 명사로는 집단, 동사로는 함께 묶다는 의미를 가지고 있다.
하지만 유의할 점은 데이터를 특정 집단으로 구성하거나 데이터를 묶는다는 의미로는 Batch size에 해당하지만 그렇다고 모든 Traing data를 의미하지는 않는다. 예를 들어 아래와 같은 경우가 있다고 가정해보자.
HOOAI = {
'epochs': 25,
'batch_size': 32,
'learning_rate': 1e-4,
'momentum': 0.9,
'test_size': 0.05,
'seed': 1
}
위의 경우에는 batch size가 32로 지정되어 있는 걸 알 수 있다. 이 경우 32개의 데이터 집단으로 묶어 있지만 그렇다고 32개가 한 번의 epoch 동안 학습되는 데이터의 양을 의미하지는 않는다. 32번씩 batch가 그룹을 지어서 나눠져 있고 이 과정을 여러 번 반복하여 1 epoch에 해당하는 Training data를 학습한다. 예제에서 나눠진 크기는 32에 해당하지만 Mini batch 사이즈는 상황에 따라 다르게 나눠질 수도 있다. 미니 배치(Mini batch)는 2의 거듭제곱으로 나눠지며, 대표적으로 32, 64, 128 등으로 나눠서 설정하는 편이다.
아래의 예시 그림을 보면 Batch size에 대해서 훨씬 이해하기 수월할 것이다.
# Batch size 예시
1000개의 Training data가 존재한다고 가정했을때, Batch size가 별도로 지정되어 있지 않다면 1000개의 데이터에 대한 ML 과정을 나누지 않고 한 번에 이루어진다.
하지만 1000개의 데이터를 ML 하는 데 있어서 HW가 부담이 된다면 Batch 설정을 통해 학습 데이터를 나눌 수 있다.
위의 그림에서 Training data를 8개로 나눈 것을 알 수 있다. 이 경우 나눠진 8개 중 하나가 batch size에 해당하며, 이를 mini batch라고도 부른다. 1000개의 training data가 8개의 batch로 나눠져 있지만 사실상 학습하는 방법은 동일하다. 무슨 말이냐 하면 첫 번째 batch에서 학습하는 방법이 두 번째 batch를 학습한다고 해서 달라지지 않는다는 것이다.
결국 새로운 코딩이 필요 없이 반복 작업으로 8개의 나눠진 training data를 학습한다고 컴퓨터에게 알려주면 되는데 이것이 바로 iteration를 의미한다. 8번의 iteration 작업을 통해 8개로 나눠진 batch들 안의 모든 training data를 학습할 수 있게 된다. 이것이 바로 batch size를 Machine learning에서 사용하는 이유이자 원리이다.
'AI & Data' 카테고리의 다른 글
[Data Science] 캐글 타이타닉(Titanic Machine Learning Competition) #02 (0) | 2022.07.31 |
---|---|
[Data Science] 캐글 타이타닉(Titanic Machine Learning Competition) #01 (0) | 2022.07.31 |
[Machine Learning] Momentum(모멘텀) (0) | 2022.07.27 |
[Machine Learning] Train Test Size (0) | 2022.07.27 |
[Data Science] Data Science vs Data Analyst vs Data Engineering (0) | 2022.07.18 |
댓글