https://welcome-to-dewy-world.tistory.com/86
인공신경망에 10만개의 데이터를 학습시키고자 할 때, 어떻게 하면 빠르게 학습시킬 수 있을까?
A) 데이터를 1개씩 입력받아 총 10만번의 연산을 진행하는 것보다 한번에 큰 묶음으로 데이터를 입력받아 n번의 연산을 진행하는 것이 더 빠름.
즉, 느린 I/O를 통해 데이터를 읽는 횟수를 줄이고 CPU나 GPU로 순수 계산을 하는 비율을 높여 속도를 빠르게 할 수 있음
데이터를 하나씩 신경망에 넣으면
→ 장점으로는, 신경망을 한번 학습시키는데 소요되는 시간이 매우 짧음
→ 단점으로는, GPU의 병렬처리를 사용하지 않으니 그만큼 자원 낭비가 됨.
→ 또한 오차를 줄이기 위해 사용하는 loss function은 최적의 파라미터를 설정하는데 많이 헤매게 됨.
전체 데이터를 신경망에 넣으면
→ 장점으로는, 한번에 여러개의 데이터에 대해서 신경망을 학습시킬 수 있으므로 오차를 줄일 수 있는 cost function의 최적의 parameter를 하나씩 학습하는 것보다 빠르게 알아낼 수 있음.
→ 단점으로는, 전체 데이터를 학습시키기 때문에 신경망을 한 번 학습시키는데 소요되는 시간이 매우 김
따라서 미니배치가 등장함.
미니배치는 SGD(확률적 경사 하강법)과 배치를 섞은 것으로 전체 데이터를 N등분하여 각각의 학습 데이터를 배치 방식으로 학습시킴.
💫 헷갈리는 것
- 원래 배치는 전체 훈련 데이터를 말하고, 미니 배치가 데이터를 분할해서 다룰 때를 의미함.
- 하지만 데이터를 분할해서 다룰 때도 그냥 배치(batch)라고 부르는 경우가 많음.