AI/개념

Batch Normalization, Drop out

모딩 2021. 6. 8. 16:47
반응형

weight parameter를 학습하는 일련의 과정은 다음과 같다. Mini-batch SGD를 예를 들어봤을 때,

1. 샘플 데이터를 추출한다. 

2. forward prop으로 weight parameter에 대한 loss를 구한다. 

3. backward prop으로 gradient를 구한다. 

4. gradient를 사용하여 weight parameter를 업데이트한다.

5. 최적의 weight parameter를 도출한다.  

 

추가로 최적의 가중치를 찾기위한 여러가지 방법이 있다. 

  • 1번의 과정에서 데이터를 zero centered 되도록 전처리(pixel normalize)
  • 2번의 과정에서 weight initialization 혹은 batch normalization으로 weight를 정규화
  • 3번의 과정에서 gradient를 구할 때 어떤 optimizer를 쓸 것인지
    • 첫번째 배치를 다 돌고 backprop을 하는거 맞나? 맞다면 그때 optimizer가 적용되는건가?
  • 4번의 과정에서 weight를 업데이트할 때 어떤 activation function을 쓸 것인지 - >주로 relu를 사용하면 된다 

batch normalization

1. 장점

1) 네트워크상에서 gradient 흐름을 개선해주는 효과

2) learning rate이 크더라도 허용해줌

3) 초기화에 의존하지 않아도 괜찮게 함 

4) 정규화 가능 ? 

 

2. 주의

train할 때는 배치에 대해서 구하고 test 할때는 전체 데이터에 대한 mean, varience에 대해 계산한다. 

 

drop out

train을 할 때, 모든 노드를 쓰지 않고, 일부의 노드를 임의로 제외시킨 후 남은 노드끼리만 weight update를 진행하는 형태

왜 쓰는지?: 원래 각각의 노드들의 역할이 있었음. 하지만 일부를 제외한다면, 남은 노드들이 주변 노드들의 역할까지 하게됨

장점: 전체적인 성능을 향상시킬 수 있다. 

주의할 점: test일 때는 모든 노드를 켜서 학습시켜야한다. 이때, train할때 설정한 drop p의 파라미터를 곱해서 (혹은 train시 p값을 나눠서) 전체 값을 스케일링 해줘야한다. 

 

 

 

반응형

'AI > 개념' 카테고리의 다른 글

[CS231n] 2강 정리  (0) 2021.06.08
Overfitting과 Underfitting  (0) 2021.06.07
Torchvision 패키지  (0) 2021.03.03
Learning Rate, Training Epoch, Batch Size의 의미  (0) 2021.03.03