인프런 커뮤니티 질문&답변

아쿠아라이드님의 프로필 이미지

작성한 질문수

딥러닝 이론 + PyTorch 실무 완전 정복

Section 13 요약

Batch size 가 극단적으로 작은 경우 (예를들어 batch_size =1) Normalization 적용 방안

해결된 질문

24.08.17 17:57 작성

·

63

·

수정됨

2

강사님, 본 강의 들으면서 정말 많은 도움을 받고 있습니다. normalization 에 대해서 이렇게 상세하게 설명해 준 온라인 강의는 본 적이 없네요 🙂

 

CNN 을 기반으로 하되 모델 파라메터도 엄청 크고, 데이터셋 크기도 매우 큰 경우, 예를 들어 3D Unet 을 구성해서 3차원의 고해상도 (256 x 256 x 256) 이미지를 input 과 output 으로 사용하다보니 GPU 메모리를 너무 많이 잡아먹어서 batch 에 복수의 샘플을 적용하지 못하고 하나의 batch 에 단일 샘플만 적용하는 경우를 study 하고 있는데요, BatchNormalization 을 적용했을 경우 오히려 학습이 잘 안 되는 것 같아서 Normalization layer 를 야예 제거한 후 모델 학습 진행 중이었습니다. 경험적으로 했던 것이었지만 본 강의를 보다 보니 그 이유가 조금 이해가 되기도 하는데요, 이와 같이 batch size 가 극단적으로 작은 경우에 Normalization layer 을 적용 안하는게 더 좋을 수 있나요? 혹은 설명해 주신 table 에 나와 있는 것 처럼 Group Normalization layer 나 Instance Normalization을 적용하는 것이 개념적으로 더 나은 방법일까요? (설명을 들었을 때는 Group Normalization 을 적용하는 것이 필요한 상황으로 이해가 되기도 하는데.. 제가 이해한 것이 맞는지 확인 부탁드립니다 ^^;)

 

그리고 Group Normalization 에서 "Group" 의 의미가 무엇인지 잘 와닿지가 않아서 (Batch 나 Width, Height, Sample Number 이외에 그룹이 될 수 있는 경우가 무엇인지가 잘 이해가 되지 않습니다.) ... 요 부분에 대해서 좀 더 설명해 주시면 감사드리겠습니다!

답변 1

1

변정현님의 프로필 이미지
변정현
지식공유자

2024. 08. 18. 18:24

안녕하세요!

변정현입니다!

강의가 도움이 되고 있다니 저도 많이 뿌듯하네요 ㅎㅎ

좋은 질문 감사합니다~

질문에 대한 답변은 아래 첨부 파일로 상세하게 설명드리겠습니다!

요약하자면,

  • Q: 하나의 batch 에 단일 샘플만 적용하는 경우를 study 하고 있는데요, Batch-Normalization 을 적용했을 경우 오히려 학습이 잘 안 되는 것 같다:

  • A: 네 맞습니다! Mini-batch의 크기가 작으면 분모로 나눠주게 되는 표준편차가 매우 작은 값을 가지게 됩니다. 분모 값이 매우 작을 때는 분모 값이 조금만 바껴도 나눠진 값이 심하게 요동칩니다.

    따라서 normalize된 값은 심하게 요동치며 이로 인해서 학습 과정도 불안정해집니다.

     

     

  • Q: "batch size 가 극단적으로 작은 경우에 Normalization layer 을 적용 안하는게 더 좋을 수 있나요? 혹은 설명해 주신 table 에 나와 있는 것 처럼 Group Normalization layer 나 Instance Normalization을 적용하는 것이 맞는가요?"

  • A: 네 맞습니다!

     

     

     

     

    Mini-batch의 크기가 작을 때 Batch-Normalization 을 적용하면 더 잘 안되는 이유

2번설명.jpg3번설명.jpg

 

Group Normalization에 대한 부연 설명

4번설명.jpg5번설명.jpg

 

 

아쿠아라이드님의 프로필 이미지

2024. 09. 20. 00:22

상세한 답변 감사드립니다. 단일샘플에 대한 Normalization 의 불안정성을 통계의 관점으로 설명해 주시니 확 와닿네요 ^^ 그리고 Group Normalization 에 대한 상세한 손글씨 설명도 감사드립니다. 명확하게 이해했습니다.

오늘 거의 완강했는데, 전반적으로 딥러닝의 기본기를 잡아주는 정말 좋은 강의들이었습니다. 경험적으로 인식했던 부분을 수식을 통해 개념이해가 가능했고, 잘 모르고 있었던 구멍을 메꿀 수 있는 부분도 많았습니다. 마지막 단원 부분에 RNN/LSTM/GRU --> Transformer 와 BERT 로 넘어가는 이론과 실습도 실무적인 차원에서 도움이 되었고, 현재 진행 중인 LLM 적용 study 에도 도움이 많이 되었습니다.

정말 감사드립니다! ^^