Link

미니배치 크기에 따른 SGD

이번에는 미니배치 크기에 따른 SGD의 특성에 대해 이야기 해보려합니다. 만약 미니배치의 크기가 매우 커서 데이터셋의 크기에 점점 가까워진다면 어떻게 될까요? 아마도 SGD를 통해 얻은 그래디언트의 방향과 GD를 통해 얻은 그래디언트의 방향이 비슷해질 것입니다. 즉, 좀 더 정확한 그래디언트를 얻을 수 있다라고 볼 수 있겠지요. 하지만 샘플 수가 많아진 만큼 계산량도 늘어나게 됩니다.

그럼 만약 미니배치의 크기가 작아져서 점점 1에 가까워진다면 어떻게 될까요? 랜덤 샘플링된 미니배치의 분포는 전체 데이터셋의 분포와 달라 편향을 가지게 될 가능성이 높아질 것입니다. 물론 이로인해 앞서 언급했듯이 전체 데이터셋의 손실 표면loss surface에서 지역 최소점은 탈출할 수도 있습니다. 하지만 결국 그래디언트에 너무 심한 노이즈가 생기게 될 수 있고, 이것은 파라미터가 올바른 방향으로 학습되는 것을 저해할 수도 있습니다.

따라서 우리는 적절한 미니배치 크기를 정해줘야 합니다. 즉, 미니배치의 크기도 중요한 하이퍼파라미터 중의 하나입니다. 보통 256 정도 크기에서 시작하는 것이 좋습니다. 그리고 메모리가 모자란다면 더 줄이는 방향으로, 메모리가 남고 성능의 하락이 없다면 더 늘리는 방향으로 튜닝해나가면 됩니다.

미니배치 크기에 따른 파라미터 업데이트 횟수

한 에포크epoch 내에서 파라미터 업데이트 횟수는 이터레이션iteration 횟수와 같습니다. 즉, 이터레이션이 많을수록 신경망은 학습할 기회가 많게 됩니다. 그럼 미니배치 크기를 줄여서 이터레이션 숫자를 마냥 늘리면 될 것 같지만, 앞서 이야기한대로 미니배치 크기를 줄이게 되면 그래디언트에 노이즈가 생길 수 있습니다. 반대로 미내배치 크기를 늘려서 이터레이션 숫자를 줄이게 되면 오히려 그래디언트의 방향은 좀 더 정확해질 수도 있겠지요. 그럼 차라리 이터레이션 횟수를 줄이되, 학습률learning rate을 크게 잡아 파라미터가 업데이트 되는 양을 늘릴 수도 있을 겁니다. 이처럼 신경망을 잘 학습하기 위한 방법은 여러가지 하이퍼파라미터들이 복잡하게 얽혀있습니다. 따라서 우리는 좋은 미니배치 크기를 잘 선택해야 하며, 여러분들이 많은 경험을 쌓을수록 이에대한 인사이트가 늘어갈 것입니다.