728x90
반응형
Batch (묶음)
10만개 데이터가 있을 때,
a. 1개씩 x 10만번 연산
b. 10묶음 (1묶음당 1000개) x 10번 연산 (=epoch)
- 묶음 : mini-batch, 1묶음당 데이터 개수 : batch size, 연산 횟수 : epoch
b가 더 빠르고, 계산 효율 높음
SGD (Stochastic Gradient Descent : 확률적 경사 하강법)
- 배치 경사하강법
- 매 스텝마다 전체 훈련 데이터를 반복해서 사용해 gradient를 계산하므로 느리다. - 확률적 경사하강법 (SGD, Stochastic Gradient Descent)
- 매 스텝(step)에서 딱 1개의 샘플을 무작위로 선택하고 그에 대한 gradient를 계산한다. 매 반복에서 적은 데이터를 처리하므로 속도가 매우 빠르며, 1개 샘플에 대한 메모리만 필요하므로 매우 큰 훈련 데이터 셋도 가능하다.
- 확률적이기 때문에 훨씬 불안정하고, 매끄러운 하강이 아닌 요동치는 것을 볼 수 있을 것이다. 이렇게 요동치는 것은 역설적으로 지역 최솟값을 뛰어넘어 전역 최솟값을 찾게 도와줄 수 있어, 이 가능성이 배치에 비해 높다. 이러한 이슈들을 위해서는 learning rate을 크게 설정하고(지역 최솟값을 뛰어넘고 수렴하도록), 점차 작게 줄여서 전역 최솟값에 도달하게 하는 것이 좋다. - 미니배치 경사하강법 (Mini-batch Gradient Descent)
- 각 스텝에서 전체 훈련세트(like batch)나 하나의 샘플(like SGD)을 기반으로 하지 않고, 미니 배치라고 부르는 임의의 작은 샘플 집합에 대해 계산한다.
- 주요 장점은 GPU를 사용해 얻는 성능 향상이라고 할 수 있다. 특히, 미니배치를 어느 정도 크게 하면 파라미터 공간에서 SGD보다 덜 불규칙적으로 움직인다.
- 결국 미니배치 경사하강법이 SGD보다 최솟값에 더 가까이 도달할 수 있지만 동시에 지역 최솟값에서 빠져나오기는 조금 더 힘들수도 있다(convex가 아닌경우).
미니배치 경사하강법 (Mini-batch Gradient Descent) 예시
- 훈련 데이터 700개를 7개의 mini-batch (배치 사이즈 100)으로 학습 -> SGD를 7회 반복 = 1 에폭
- 8에폭을 한다면, SGD 7회 x 8에폭 = 56회 가중치 갱신
(dataset = 1000, mini-batch = iteration = SGD cnt = 7, batch size = 100)
- batch size는 hyper parameter로 사용 (2의 제곱수 권장)
728x90
반응형
'그녀의 일' 카테고리의 다른 글
Swtichback test란? (0) | 2023.03.23 |
---|---|
Apach Kafka 란? | producer, consumer, topic, partition 용어 설명 (0) | 2023.03.16 |
머신러닝 프로세스 한 번에 처리하기 | Pipeline, make_pipeline (0) | 2023.03.09 |
모델의 최적의 하이퍼 파라미터 찾기 | Hyperparameter tuning - GridSearchCV, RandomizedSearchCV (0) | 2023.03.09 |
주피터 노트북 파일 및 폴더 한 번에 다운로드하기 | tar 압축하기, 압축 해제하기 (0) | 2023.03.06 |