- batch: 일괄적으로 처리되는 집단, 한 번에 여러 개의 데이터를 묶어서 입력하는 방식, 1 epoch당 사용되는 training dataset의 묶음
- epoch: 훈련 세트를 한 번 모두 사용하는 과정
일반적으로 우리가 말하는 SGD = mini-BGD를 일컬음
- SGD와 BGD의 절충안: Batch 보다 빠르고 SGD 보다 낮은 오차율을 가짐
- batch size: 하나의 mini batch에 들어가는 데이터 수 (prefer: 전체 데이터가 나눠떨어지는 값, 2^n)
- 1 epoch : 여러 개의 mini batch가 for문으로 돌고 돌아 전체 훈련 세트를 한 번 모두 사용하는 과정
https://welcome-to-dewy-world.tistory.com/86
그리고 필자는 처음에 미니배치를 공부할 때 수만건의 데이터 중에서 n개만큼의 데이터를 임의로 추출하기 때문에 당연히 복원 추출이라고 생각했는데 (왜냐하면 데이터 개수가 매우 많으면서 데이터 전체를 표현해야하기 때문에), Epoch의 개념에서는 전체 데이터셋을 사용해야 1Epoch가 된다는 것을 읽으며 골머리를 앓았다.
배치, 혹은 미니배치학습을 할 때 배치는 복원 추출인가? 비복원 추출인가?
이에 대한 해답을 정확히 알 수는 없었으나, 어쨌든 복원 추출이나 비복원 추출이나 사실상 크게 다르지 않다는게 결론이다. 이에 대한 이유는 데이터가 매우 많기 때문이다. 수많은 데이터 중에서 임의의 개수로 임의의 데이터를 추출하는 것을 n번 반복하면 사실상 비복원 추출이나 복원 추출이나 전체 데이터셋을 사용한다고 볼 수 있기 때문이다.
https://light-tree.tistory.com/133
'batch' 라는 단어는 엄밀히 'mini-batch'를 의미하지면 편의상 batch 와 혼용해서 사용하는 것.
처음엔 '한 개의 데이터마다 한 개의 기울기를 구할 수 있는데, 어떻게 전체 데이터 셋에 대해서 기울기를 한번만 구한다는 것인가?' 라는 의문을 가지며 BGD를 잘못 이해하고 있었다.
Gradient descent 라는 알고리즘 자체는 loss function 을 입력 데이터 x 에 대해 편미분해서 기울기를 계산하는 것이 아닌, 가중치 w 에 대해서 편미분을 하는 것이기 때문에, 기울기를 계산하는 것 자체는 입력 데이터 x 의 갯수와 상관이 없다.
에러값을 전체 데이터에 대한 loss function 의 합으로 정의하던 평균으로 정의하던 단순히 w 에 대한 편미분을 수행하면 되는 것.
출처: https://light-tree.tistory.com/133 [All about:티스토리]
https://ratsgo.github.io/deep%20learning/2017/10/02/softmax/
Backprop의 모든 것...🤩
'AI > Data Science' 카테고리의 다른 글
[모델성능지표] Precision, Recall, MAP (0) | 2023.12.10 |
---|---|
[DL] BACKPROP (0) | 2023.12.02 |
[Statistics] 다변량 정규분포 (0) | 2023.11.13 |
[statistics] Variational Inference (변분추론) (0) | 2023.11.09 |
[Statistics] Gaussian Prior (0) | 2023.11.08 |