요약
- SGD
- SGD는 비복원 추출을 통해 일부 샘플을 뽑아 미니배치를 구성하고 피드포워딩 및 파라미터 업데이트를 수행하는 방법이다.
- 기존 전체 데이터셋을 활용하는 방식에 비해, 파라미터 업데이트를 효율적으로 수행할 수 있다.
- 용어 설명
- 에포크epoch: 모델이 데이터 전체를 학습하는 것
- 이터레이션iteration: 모델의 파라미터 업데이트를 1회 수행하는 것
- 미니배치 크기에 따른 특징
- 미니배치가 작을수록 한 에포크 내에서 파라미터를 업데이트 하는 횟수가 증가한다.
- 미니배치가 클수록 그래디언트에 노이즈가 줄어든다.
- 메모리가 허용하는 한에서 (굳이 말하자면 2048 이내에서) 큰 미니배치를 사용하면 좋다.
- 미니배치 크기는 $2^n$ 형태로 정해주는 것이 속도에 유리하다.
- 데이터 크기와 미니배치 크기에 따른 이터레이션 횟수 계산 수식
\[\begin{gathered}
\text{\#Iterations}/\text{Epoch}=\lceil\frac{N}{k}\rceil \\
\downarrow \\
\text{\#Iterations}=\lceil\frac{N}{k}\rceil\times\text{\#Epochs}
\end{gathered}\]