[CS231n]Batch Normalization

ai_lim·2022년 2월 16일
0

CS231n

목록 보기
10/12


CS231n 6강

기울기 소실문제를 해결하기위해 활성화 함수를 변화시키거나 Batch Normalization을 하는 방법이 있다.
오늘은 Batch Normalization에 대해서 살펴보자


Batch Normalization은 학습하는 과정을 안정화시켜 근본적으로 문제를 해결한다.

학습이 불안정한 이유를 internal covariance shift 때문이라보고 각 레이어를 거칠때마다 normalize을 해주자라는게 핵심 아이디어이다.

N (미니 배치)
D (피처 수)
X ( input)

보통 우리는 input을 한 번에 처리하지 않고 batch별로 처리한다.
그래서 Batch Normalization이라고 하며 batch 별로 normalize 해주는 것이다.

FC -> BN -> activation
보통 이 순서로 구성한다.

근데 여기서 하나 생각해야한다.
과연 activation 의 tanh 레이어에 nomalize 된 unit gaussian이 들어가는게 적합할까??

BN에서는 위의 문제에 대해서 적합한지 아닌지는 학습에 의해서 판단이 가능하다고 한다.

Normalization을 두단계로 나눠서보면
1번째 단계로 정규화하고
2번째 단계로 정규화된것을 다시 한번 조정한다. (Γ를 통해 정규화 scale 조정, β를 통해 shift)

그래서 Γ, β를 학습을 통해 결정하고 BN을 할지 말지 결정한다고 한다.


실제 과정입니다.

결과적으로 BN은

  1. 네트워크 상의 gradient flow를 개선해준다.
  2. learning rate가 커도 되어 , 빠른 학습이 가능하다.
  3. weight 초기화에 너무 의존하지 않아도 된다.
  4. dropout을 사용안해도 된다. (BN도 배치마다 값이 다르게 들어가고 바뀌니까 노이즈 적음)

주의할점!! 훈련할땐 batch로 test 할때는 전체적으로 해야함

0개의 댓글