Batch 크기의 결정 방법
보통 vectorization
방법으로 gradient descent
알고리즘의 효율을 높이게 된다.
하지만 input 데이터가 너무 크다면 그 방법을 사용할 수 없다.
메모리 문제도 발생하고 한 번 interation (epoch)
당 시간이 너무 오래 걸리기 때문이다.
Batch-gradient descent
와 mini-bach gradient descent
의 cost 그래프의 차이는 아래와 같다.
Choosing your mini-batch size
Mini-batch
크기가 전체 트레이닝 셋 데이터 사이즈인m
과 같다면 이것은Batch gradient descent
방법이다.- (+) 상대적으로 아래의
contour
그래프를 보면 알 수 있듯이 적은noise
와Large step
으로 글로벌 미니멈에 수렴한다. - (+) vectorization 효율이 좋다.
- (-)
interation
당 속도가 느리다. - (-) 메모리 여유 공간에 따라서 실행 불가능 할 수도 있다.
- (+) 상대적으로 아래의
Mini-batch
크기가1
이라면,Stochastic gradient descent
라고 부른다.- (+) 적은 메모리로 동작 가능하다. noise한 부분은 learning rate을 작게하면 완화 할 수 있다.
- (-) vectorization 효율이 없다. training data를 1개만 사용하기 때문이다.
Mini-batch
크기를 너무 작게도 크게도 하지 않는다.- (+) vectorization을 효과 본다.
- (+) interation당 긴 시간없이 progress를 만들 수 있다.
최종적 가이드라인
- 데이터가 별로 없다면 batch gradient descent를 쓴다.
- ex 2,000 정도
- mini-batch를 선택
- 64, 128, 256, 512 사이즈로 선택한다. 메모리 사이즈에 맞춰서
- CPU/GPU memory 사이즈에 맞춰서 조절 한다.
Take-away messageSGD
와 GD
가 같은 글로벌 cost 최소점에 도달 할 수 있다는 것은 증명이 되어 있지만, neural netwrok은 convex가 아니기 때문에 batch 크기의 설정 방법에 따라 수렴하는 조건이 다를 수 있다.
Batch size는 일반적으로 메모리가 감당할 수 있는 정도까지 최대한 크게 잡는게 좋을것 같다.
참고자료
Coursera DeepLearning ai, Andrew Ng
'AI > TensorFlow, PyTorch, Keras, Scikit' 카테고리의 다른 글
학습 모델의 재사용 (Transfer Learning) (0) | 2017.12.09 |
---|---|
TensorFlow 모델을 저장하고 불러오기 (save and restore) (3) | 2017.12.09 |
Neural Network 적용 전에 Input data를 Normalize 해야 하는 이유 (4) | 2017.12.07 |
rpy2와 Pandas를 활용한 R object 변환 (0) | 2017.08.08 |
Confusion Matrix in python (0) | 2017.08.03 |