미니 배치Mini-Batch

자료를 묶음으로 나눠 한 걸음씩 처리하는 방식

  • 기본
  • 4분 읽기
  • 그림 3개

핵심 정리

  • 미니 배치는 학습 자료를 적당한 크기의 묶음으로 나눠 묶음 하나마다 값을 한 걸음씩 고치는 방식이에요.
  • 자료를 한 장씩 보면 판단이 들쭉날쭉하고, 전부 한꺼번에 보면 한 걸음 떼는 데 너무 오래 걸려요. 그 사이를 고른 방식이에요.
  • 묶음 안 자료들의 결과를 평균 내서 한 번의 방향을 만들어요. 한 장의 유별난 자료에 끌려가지 않게 해 줘요.
  • 장치 하나가 한 번에 계산할 수 있는 묶음 크기는 그래픽 메모리에 올라가는 만큼이 상한이에요. 크기를 키우면 메모리가 함께 늘어요.
  • 크기를 바꾸면 알맞은 학습률도 함께 달라져요. 둘은 따로 떼어 생각하기 어려워요.

비유로 이해하기

김장하는 날 배추 백 포기를 한꺼번에 절일 만한 통은 집에 없어요. 그렇다고 한 포기씩 절이면 하루가 저물어요. 그래서 큰 대야에 열 포기쯤 담고 소금을 뿌려 한 대야를 절인 다음, 비우고 다음 열 포기를 담아요.

대야 하나가 끝날 때마다 절여진 상태를 손으로 확인해요. 이번 대야가 좀 짜게 됐다 싶으면 다음 대야에서는 소금을 조금 덜어요. 열 포기 중 한 포기가 유난히 억세도 나머지 아홉 포기가 있으니 판단이 크게 흔들리지는 않아요.

이 대야 하나가 미니 배치예요. 대야를 다 비우면 백 포기를 한 바퀴 돈 셈이고, 대야마다 한 번씩 소금 양을 손봤으니 한 바퀴에 열 번을 고친 게 돼요.

자세히 알아보기

한 포기씩도, 백 포기 한꺼번에도 아니에요

자료 한 장마다 값을 고치면 걸음은 아주 자주 밟지만 방향이 매번 크게 흔들려요. 유별난 자료 한 장이 통째로 방향을 결정해 버리거든요. 계산 효율도 나빠요. 한 장씩 처리하면 여러 계산을 한꺼번에 몰아서 하는 장치의 힘을 거의 못 써요.

반대로 자료 전부를 보고 한 번만 고치면 방향은 아주 정확해요. 대신 자료가 수백만 장이면 한 걸음을 떼는 데 한참이 걸리고, 그 자료를 전부 메모리에 올릴 수도 없어요.

묶음으로 나누면 두 가지를 다 얻어요. 묶음 안에서 평균을 내니 방향이 크게 흔들리지 않고, 묶음이 끝날 때마다 걸음을 떼니 진행이 빨라요. 오늘날 거의 모든 학습이 이 방식으로 돌아가요.

묶음 크기를 무엇으로 정하나요

첫 번째 기준은 메모리예요. 묶음 안 자료를 한꺼번에 계산하려면 자료도, 중간 결과도 모두 올려 둬야 해요. 묶음을 두 배로 키우면 중간 결과를 담는 메모리가 대략 두 배가 돼요. 모델 값 자체가 차지하는 몫은 그대로라서 전체가 꼭 두 배가 되지는 않아요. 학습 도중 메모리가 모자란다는 오류를 만나면 가장 먼저 줄이는 것이 묶음 크기예요.

두 번째 기준은 흔들림이에요. 묶음이 작으면 방향이 매번 조금씩 달라지는데, 이 흔들림이 꼭 나쁘지만은 않아요. 어중간한 자리를 빠져나오는 데 도움이 되고, 새 자료에 대한 성적이 오히려 나은 경우도 있어요. 묶음이 아주 크면 걸음이 매끄러워지는 대신 한 번의 걸음이 아까워져요.

학습률과 함께 움직여요

묶음을 키우면 한 걸음의 방향이 그만큼 믿을 만해져요. 그래서 걸음 폭도 조금 키워 주는 것이 보통이에요. 묶음을 키워 놓고 학습률을 그대로 두면 한 바퀴에 밟는 걸음이 줄어든 만큼 학습이 느려져요.

학습을 여러 장치에 나눠 돌릴 때는 장치마다 같은 모델을 하나씩 두고, 서로 다른 묶음을 맡아 계산한 뒤 결과를 합치는 방식을 많이 써요. 이때 실제 묶음 크기는 장치 수만큼 커지기 때문에, 학습률과 몸풀기 구간을 함께 손보지 않으면 초반에 학습이 망가지기 쉬워요.

남는 자료와 섞기

자료 수가 묶음 크기로 딱 나누어떨어지지 않으면 마지막 묶음만 작아져요. 이 자투리를 그대로 쓰기도 하고, 계산 크기를 맞추려고 버리기도 해요. 한 바퀴가 끝나면 자료를 다시 섞고 묶음을 새로 짜니까, 이번 바퀴에서 빠진 자료도 다음 바퀴에는 대개 들어가요.

묶음을 짤 때 한 종류만 몰리지 않게 하는 것도 중요해요. 한 대야가 전부 같은 종류로 채워지면 그 걸음은 한쪽으로만 쏠려요. 자료를 잘 섞어 두는 것만으로 대부분 해결돼요.

길이가 제각각인 문장이나 크기가 다른 사진을 묶을 때는 한 묶음 안의 크기를 맞춰 주는 손질이 따로 필요해요. 짧은 문장 뒤를 빈칸으로 채우거나 사진을 같은 크기로 잘라 붙이는 식이죠. 이 손질까지 끝나야 묶음 하나를 한꺼번에 계산할 수 있어요.

조금 더 정확하게

미니 배치 학습은 묶음 안 자료들의 기울기를 평균 낸 값으로 한 번의 갱신을 수행하는 방식이에요. 자료 한 장마다 갱신하는 방식과 전체 자료로 한 번 갱신하는 방식 사이에 있고, 오늘날 확률적 경사하강법이라고 부르는 것은 대부분 이 묶음 방식을 가리켜요. 묶음 크기는 2의 거듭제곱으로 잡는 관행이 있어요. 계산 장치에 맞춘다는 이유에서 나온 습관이지만, 요즘 장치에서는 그렇지 않은 크기를 써도 속도 차이가 크지 않은 경우가 많아요. 메모리가 모자란데 큰 묶음의 효과가 필요하면, 작은 묶음 몇 개의 결과를 모아 두었다가 한 번에 갱신하는 방법도 써요.

비유가 어긋나는 지점도 있어요. 김장 대야는 배추를 실제로 나눠 담지만, 미니 배치는 자료를 복사해 나누는 것이 아니라 순서를 정해 차례로 읽어 오는 것에 가까워요. 또 김장에서는 배추 한 포기가 한 대야에만 들어가지만, 학습에서는 한 바퀴가 끝날 때마다 자료를 다시 섞어 묶음을 새로 짜고 같은 자료를 여러 바퀴에 걸쳐 거듭 봐요.

직접 해보기

흔한 오해

  • 묶음이 클수록 학습이 잘 된다고 생각하기 쉽지만, 실제로는 메모리를 더 쓰는 대신 걸음 수가 줄어들고 새 자료에 대한 성적이 오히려 떨어지기도 해요.

  • 묶음 안 자료를 하나씩 차례로 계산한다고 여기기 쉽지만, 실제로는 한꺼번에 계산해서 평균을 내요. 이 점이 속도의 핵심이에요.

  • 묶음 크기는 아무 값이나 잡아도 된다고 생각하기 쉽지만, 실제로는 메모리 한도와 학습률에 함께 묶여 있어서 하나만 바꾸면 학습이 느려지거나 불안정해지기 쉬워요.

한 줄 요약

그러니까

미니 배치는 자료를 대야만 한 묶음으로 나눠 묶음마다 한 걸음씩 고치는 방식이고, 그 크기가 속도와 흔들림을 함께 정해요.

잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정 2026-10-17