AI

Batch Normalization, Layer Normalization, Vanishing Gradient 해결 방안 정리

pullwall 2024. 9. 9. 20:12
728x90
해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.

 

batch size=5 일 때  해당 데이터들이 ReLU 함수를 통과하는 상황이다.

 

데이터들이 모두 양수일 때는 linear function을 쓰는 것과 다름이 없으며,

 

데이터들이 모두 음수일 때는 gradient=0이 되므로 gradient descent 문제가 발생한다.

 

 

따라서 위 그림과 같이 Activation function의 non-linear한 성질을 잘 살리고자 입력 데이터를 재조정 하는 것이 batch normalization의 첫번째 목적이다.

 

하지만 이 데이터들을 어디로 옮길지 어떻게 알아야 할까? 어디로 옮길지(non-linear한 성질을 잘 살리면서 vanishing gradient를 얼마나 해결하는지) AI가 학습하도록 하는 것이 batch normalization의 두 번째 목적이다.

 

평균이 0이고 분산이 1인 Y를 $Y=\frac{X-\bar{X}}{\sigma_X}$ 라고 하자. (수식에 따르면 당연히 평균이 0 분산이 1이 됨)

 

여기서 $aY+b$를 해준다면 평균은 $b$, 분산은 $a^2$이다.

 

해당 수식은 미분가능하기때문에 학습시킬 수 있다. 이 $a$와 $b$를 학습시키는 것이다. (어느정도 평균에 어느정도 분포로 옮길지)

 

 


 

 

Batch Normalization은 각 노드별로 위 기법을 적용시켰다면,

(한 노드에 들어오는 데이터들을 재배치한다)

(각 노드별 두 개 파라미터 추가 필요) 

(주로 image 데이터에 사용)

 

Layer Normalization은 한 Layer에 위 기법을 적용한다.

(한 레이어로 들어오는 데이터들을 재배치한다)
(레이어 당 두 개 파라미터 추가 필요)

(주로 NLP에서 사용)

 

 


 

 

Vanishing Gradient가 발생한다면

 

  1. activation function을 ReLU나 다른 Non-linearlity한 함수로 바꿔본다.
  2. Batch Normalization을 적용한다.
  3. Layer Normalization을 적용한다.

 

 

 

728x90