본문 바로가기
머신러닝, 딥러닝/딥러닝

딥러닝 기본 용어 정리

by 장찐 2021. 10. 25.

📚 Mini batch, Epoch, Iteration 

 

✅ 미니 배치 (Mini Batch)

 

https://wikidocs.net/55580

• 신경망 학습 시 전체 데이터를 이용해서 경사하강을 진행하면 계산량이 많기 때문에 시간이 오래 걸린다. 또한 메모리 문제로 연산 자체가 불가능한 경우도 있다. 

 

• 전체 데이터를 작은 단위로 나눠서 학습하는 단위를 미니 배치라고 한다. 전체 데이터를 여러 개의 그룹으로 나누었을 때, 한 그룹에 있는 데이터의 수

• 미니배치 학습을 진행하게 되면, 각 미니 배치에 대해서 비용을 계산하고 경사하강을 수행한다. 즉, 미니 배치는 가중치와 오차를 한 번 업데이트 하는 데에 사용한 데이터의 수이다.  그리고 모든 미니배치에 대해서 이 과정을 1회 수행하면 1 epoch라고 부른다. 

 

• 미니배치의 크기를 batch size라고 하고, 일반적으로 batch size는 8의 배수로 선정한다. (8,6,32,64,128) 이는 CPU와 GPU의 메모리가 2배수이므로 배치 크기가 2의 제곱수일 때 데이터 송수신 및 연산의 효율성을 높일 수 있기 때문이다. 

 Nvidia gpu의 thread 기본단위가 32라서 32의 약수나 배수가 효율이 좋음 (gpu memory에 적재가능할 경우)

 

• 일반적으로 배치 사이즈가 작을수록 loss 최적화가 이루어지고, 성능이 좋아진다. 하지만 절대적인 기준은 없으므로 상황에 따라서                  최적화 하는게 가장 바람직함

 

• Batch 수에 따른 용어

  1) Batch gradient Descent : 배치사이즈 = size of training set 

  2) Stochastic Gradient Descent : 배치 사이즈 = 1

  3) Mini-Batch Gradient Descent : 1 < 배치사이즈 < size of training set 

 전체 데이터를 모두 사용해서 한 번에 경사 하강을 수행하는 방법을 '배치 경사 하강법' 이라고 한다. 파라미터가 최적값에 수렴하는 과정이 안정적이지만 계산량이 너무 많다는 단점이 있다. 반대로 미니배치 방식은 경사 하강시에 최적값 수렴을 빠르게 하지는 못하더라도 훈련 속도가 빠르다. 

 

 

Epoch 

• 전체 데이터 셋이 Forward/Backward propagation를 통해 신경망을 통과한 횟수를 의미한다. 즉, 모든 미니배치가 한 번씩 사용되어서 전체 훈련 데이터가 학습에 한 번 사용되면 그것을 1 epoch 라고 부른다. 

• 횟수가 많으면 과적합 발생

 

 

Iteration 

https://wikidocs.net/55580

• 1 eopch 끝내기 위한 mini batch 

  == 1 epoch 내에서 이루어지는 매개변수(배치) 업데이트 횟수

  == 1 epoch을 마치는 데에 필요한 파라미터 업데이트 횟수

• Batch size * iteration = 데이터의 개수

 

 학습률(Learning rate)

  -너무 크면 최소점 찾지 못하고 overshooting / 너무 작으면 local minimum에 빠지고 학습 오래 걸림

  -일반적으로 0.01 정도

 

 


 

 

📚   딥러닝의 성과평가

 

accuracy를 올리거나, loss를 줄이는 두 가지 방향으로 모델을 최적화 할 수 있음 

• Accuracy 

  ① Sensitivity(민감도) : 실제 1인 대상을, 1이라고 분류한 확률 

  ② Specificity(특이도) : 실제 0인 대상을, 0이라고 분류한 확률 

      → 일반적으로 sensitivity가 더 중요하지만, F1 Score도 많이 사용함 

 

• Loss function 

 : binary cross entropy

#실제값
y <- c(0,0,0,1,1,1)
#예측값 
yhat <- c(0.2,0.3,0.1,0.8,0.9,0.7) 
#오차 계산 
(loss <- -y*log(yhat)-(1-y)*log(1-yhat))

mean(loss)

 

 

 

#실제값
y <- c(0,0,0,1,1,1)
#에측값
yhat2 <- c(0.2,0.9,0.1,0.8,0.9,0.2)

(loss2 <- -y*log(yhat2)-(1-y)*log(1-yhat2))

mean(loss2)

•  아래의 경우 예측값의 오차가 더 크기 때문에, loss 함수가 유효함을 알 수 있다. 

 

 


 

 

📚 Reference 

 

PyTorch로 시작하는 딥러닝 입문, 유원준 외, 2022, https://wikidocs.net/book/2788

댓글