개념

미니배치(mini-batch)

XZXXZX 2021. 11. 3. 19:45
728x90
반응형

모든 데이터를 대상으로 손실 함수의 합을 구하는데 시간이 오래 걸릴 수 있다. 빅데이터 수준이 된다면 그 수는 수백만에서 수천만도 넘는 거대한 값이 되기도 한다. 이 많은 데이터를 대상으로 일일이 손실함수를 계산하는 것은 현실적이지 못하다.

 

이런 경우 데이터 일부를 추려 전체의 '근사치로 이용할 수 있다. 신경망 학습에서도 훈련 데이터로부터 일부만 골라 학습을 수행한다. 이 일부를 미니배치(mini-batch)라고 한다. 예시로 60,000장의 훈련 데이터 중에서 100장을 무작위로 뽑아 그 100장만을 사용하여 학습하는 것을 말한다. 이러한 학습방법을 미니배치 학습이라고 한다.

 

훈련데이터에서 지정한 수의 데이터를 무작위로 골라내는 것의 예시는

x_train, t_train의 shape 이 각각 (60000, 784) 와 (60000, 10)이라고 할때

np.random.choice() 함수를 쓰면 골라낼 수 있다.

 

import numpy as np

train_size = x_train.shape[0] # (60000, 784)에서 60000을 가져옴

# batch의 크기를 설정
batch_size = 10

# 60000개의 데이터 중에서 10개를 임의로 선택
batch_mask = np.random.choice(train_size, batch_size)

x_batch = x_train[batch_mask]
t_batch = t_train[batch_mask]

 

np.random.choice()로는 지정한 범위의 수중에서 무작위로 원하는 개수만 꺼낼 수 있다.

 

728x90
반응형